You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过API获取Azure APIM指标及使用C#开发相关查询程序

Azure APIM 信息及指标获取方案说明

需求可行性确认

完全可以通过调用API的方式实现C#程序获取Azure APIM下的API信息及运行指标,Azure官方提供了完整的REST API及C#封装SDK,无需手动解析页面数据。

实现APIM API基础信息获取

  • 首选官方C# SDK方式,先安装两个NuGet包:Azure.Identity(负责Azure身份认证)、Azure.ResourceManager.ApiManagement(最新版APIM管理SDK)
  • 身份认证推荐用DefaultAzureCredential类,自动适配本地开发环境的VS/VS Code/Azure CLI身份,以及部署后的托管身份,无需硬编码密钥。
  • 核心调用代码示例:
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.ApiManagement;

// 初始化ARM客户端
ArmClient armClient = new ArmClient(new DefaultAzureCredential());
// 构造APIM服务资源ID
string apimServiceId = "/subscriptions/你的订阅ID/resourceGroups/你的资源组名/providers/Microsoft.ApiManagement/service/你的APIM服务名";
ApiManagementServiceResource apimService = armClient.GetApiManagementServiceResource(new ResourceIdentifier(apimServiceId));
// 拉取该APIM下所有API列表
await foreach (ApiManagementApiResource api in apimService.GetApiManagementApis().GetAllAsync())
{
    // 可获取API的名称、路径、后端配置、策略、版本等所有配置信息
    Console.WriteLine($"API名称:{api.Data.Name}, API路径:{api.Data.Path}");
}
  • 若不想依赖SDK,可直接调用ARM REST API,请求格式为GET https://management.azure.com/subscriptions/{订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.ApiManagement/service/{APIM服务名}/apis?api-version=2023-03-01-preview,请求头携带Azure AD颁发的Bearer令牌即可。

实现APIM运行指标获取

APIM的所有运行指标统一存储在Azure Monitor中,你可以通过Monitor的API拉取:

  • 安装NuGet包Azure.Monitor.Query用于指标查询
  • 支持拉取的常用指标包括:总请求数、平均响应延迟、4xx错误数、5xx错误数、缓存命中率、入站/出站带宽等
  • 核心查询代码示例:
using Azure.Identity;
using Azure.Monitor.Query;
using Azure.Monitor.Query.Models;

MetricsQueryClient metricsClient = new MetricsQueryClient(new DefaultAzureCredential());
// 查询最近7天、每小时粒度的核心指标
Response<MetricsQueryResult> result = await metricsClient.QueryResourceAsync(
    apimServiceId,
    new[] { "TotalRequests", "AverageDuration", "4xxErrors", "5xxErrors" },
    new MetricsQueryOptions
    {
        TimeRange = new QueryTimeRange(TimeSpan.FromDays(7)),
        Granularity = TimeSpan.FromHours(1)
    }
);
// 遍历指标结果
foreach (MetricResult metric in result.Value.Metrics)
{
    Console.WriteLine($"指标:{metric.Name}");
    foreach (MetricTimeSeriesElement point in metric.TimeSeries)
    {
        foreach (MetricValue value in point.Values)
        {
            Console.WriteLine($"时间:{value.TimeStamp}, 值:{value.Average ?? value.Count}");
        }
    }
}

注意:你用于认证的身份需要有对应APIM资源的读取权限以及Monitor数据读取权限,否则会触发鉴权失败。

内容的提问来源于stack exchange,提问作者Jhon Hernández

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:36:04