如何通过服务主体获取Azure Cognitive Search配额与使用量并导出至CSV
解决Azure Cognitive Search使用量与配额数据导出问题
1. 配置服务主体权限
给你的服务主体分配搜索服务参与者或监控读取者角色(在Azure门户的搜索服务IAM页面操作),确保它有权限调用Get Service Statistics API。
2. 获取Azure AD认证令牌
用服务主体的客户端ID、客户端密钥、租户ID获取访问令牌,目标资源为https://search.azure.com:
- 用Azure CLI执行:
az account get-access-token --resource https://search.azure.com --query accessToken -o tsv - 用代码(如Python MSAL)则通过客户端凭证流获取令牌。
3. 调用Get Service Statistics API
发送GET请求到指定端点:
GET https://{your-search-service-name}.search.windows.net/service/stats?api-version=2023-11-01
请求头需包含:
Authorization: Bearer {your-access-token}Content-Type: application/json
4. 解析API返回数据
API返回的JSON结构中:
counters字段对应当前使用量,涵盖documentCount(总文档数)、indexCount(索引数)、storageSize(已用存储)等指标;limits字段对应配额上限,涵盖maxDocumentCount、maxIndexCount、maxStorageSize等指标。
这两个字段完全匹配你截图中的使用量与配额信息。
5. 导出为CSV文件
Python示例
import csv import requests # 替换为你的服务信息 search_service_name = "your-search-service" access_token = "your-access-token" api_version = "2023-11-01" # 调用API url = f"https://{search_service_name}.search.windows.net/service/stats?api-version={api_version}" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } response = requests.get(url) data = response.json() # 整理统计数据 stats_data = [] # 追加使用量数据 for key, value in data["counters"].items(): stats_data.append({"指标": key, "类型": "当前使用量", "值": value["value"]}) # 追加配额数据 for key, value in data["limits"].items(): stats_data.append({"指标": key, "类型": "配额上限", "值": value}) # 写入CSV文件 with open("search_service_stats.csv", "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=["指标", "类型", "值"]) writer.writeheader() writer.writerows(stats_data)
PowerShell示例
# 替换为你的服务信息 $searchServiceName = "your-search-service" $accessToken = "your-access-token" $apiVersion = "2023-11-01" # 调用API $url = "https://$searchServiceName.search.windows.net/service/stats?api-version=$apiVersion" $headers = @{ "Authorization" = "Bearer $accessToken" "Content-Type" = "application/json" } $response = Invoke-RestMethod -Uri $url -Headers $headers -Method Get # 整理统计数据 $stats = @() # 追加使用量数据 foreach ($key in $response.counters.PSObject.Properties.Name) { $stats += [PSCustomObject]@{ 指标 = $key 类型 = "当前使用量" 值 = $response.counters.$key.value } } # 追加配额数据 foreach ($key in $response.limits.PSObject.Properties.Name) { $stats += [PSCustomObject]@{ 指标 = $key 类型 = "配额上限" 值 = $response.limits.$key } } # 导出CSV文件 $stats | Export-Csv -Path "search_service_stats.csv" -NoTypeInformation -Encoding UTF8
内容的提问来源于stack exchange,提问作者learningtocode
相关产品推荐
相关产品推荐

