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

Azure API Management按指定请求头统计请求的方法求助

按自定义请求头“Client”分组获取APIM请求统计的解决方案

方法1:APIM日志 + Log Analytics查询(最灵活的统计方式)

APIM默认不会把自定义请求头纳入日志,得先配置日志收集并注入头信息,再用Kusto查询统计:

  • 配置APIM诊断日志:进入APIM资源→诊断设置→添加诊断设置,勾选GatewayLogs,选择目标Log Analytics工作区后保存。
  • 在APIM策略中注入Client头到日志:在API的入站策略里添加以下代码,把请求头信息写入日志字段:
    <log-to-eventhub logger-id="你的日志记录器ID">
        <message>@{
            var clientHeader = context.Request.Headers.GetValueOrDefault("Client", "Unknown");
            return $"Client: {clientHeader}, Operation: {context.Operation.Name}";
        }</message>
        <severity>Information</severity>
    </log-to-eventhub>
    
    (如果直接用Log Analytics诊断,也可以在诊断设置里开启自定义维度,但策略注入的方式更灵活可控)
  • 在Log Analytics中执行Kusto查询统计:
    APIMGatewayLogs
    | extend Client = tostring(customDimensions.Client) // 对应策略里写入的字段名
    | summarize 请求数 = count() by Client, bin(TimeGenerated, 1h) // 按小时分组,可调整时间粒度
    | sort by TimeGenerated desc, 请求数 desc
    

方法2:自定义指标 + Application Insights(指标面板直接查看)

如果需要在Azure指标面板里直观看到分组数据,可以把Client头作为自定义维度上报到App Insights:

  • 配置APIM与App Insights集成:确保APIM已经关联了App Insights实例(在APIM的“监测”→“Application Insights”里配置)。
  • 在APIM策略中添加自定义指标追踪:在全局或API级的入站策略里加入以下代码:
    <choose>
        <when condition="@(context.Request.Headers.ContainsKey("Client"))">
            <track-metric name="API请求数" value="1" namespace="APIM">
                <dimension name="Client" value="@(context.Request.Headers["Client"][0])" />
                <dimension name="接口名称" value="@(context.Operation.Name)" />
            </track-metric>
        </when>
        <otherwise>
            <track-metric name="API请求数" value="1" namespace="APIM">
                <dimension name="Client" value="Unknown" />
                <dimension name="接口名称" value="@(context.Operation.Name)" />
            </track-metric>
        </otherwise>
    </choose>
    
  • 在App Insights的指标面板查看:打开App Insights→指标,选择自定义指标API请求数,然后添加“Client”作为拆分维度,就能看到按Client分组的请求统计了。

方法3:自动化批量获取(适合定期导出)

如果需要定期自动获取统计数据,可以用Azure Monitor REST API调用Log Analytics查询,再通过Azure Functions/Logic Apps定时触发,把结果导出到存储或报表工具:

  • 构造Kusto查询的API请求,调用Log Analytics的查询接口获取结果
  • 用定时触发器(比如Logic Apps的 recurrence 触发器)定期执行,将结果保存到Blob存储或发送到报表系统

注意事项

  • HTTP请求头大小写不敏感,但代码里要确保头名称拼写正确
  • 处理Client头为空的情况,设置默认值(比如"Unknown")避免分组混乱
  • 日志和指标收集存在延迟,一般在5-15分钟左右

内容的提问来源于stack exchange,提问作者Jsanchez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 23:25:10