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

Azure中浏览器访问时API Management请求日志未流入Event Hub问题排查

解决方案:直接访问函数URL时Event Hub无日志问题

核心原因

当前你的日志采集是配置在**Azure API Management (APIM)**层面的,只有经过APIM转发的请求才会触发日志写入Event Hub。直接访问AzureGoat函数应用的URL时,请求完全绕开了APIM,自然不会生成对应的日志记录。

可行解决方案

方案1:强制所有请求走APIM(推荐)

通过IP限制阻断直接访问函数应用的路径,确保所有流量必须经过APIM:

  • 登录Azure门户,进入你的函数应用资源
  • 转到网络 > 访问限制,添加规则:
    • 允许APIM实例的所有出站IP地址(可在APIM资源的概述页面找到出站IP列表)
    • 设置默认规则为拒绝所有其他IP
  • 之后外部只能通过APIM提供的API URL访问服务,所有请求都会触发APIM的日志策略,流入Event Hub

方案2:在函数应用本身配置日志到Event Hub

如果需要保留直接访问函数URL的能力,可在函数应用层面配置日志转发:

  • 进入函数应用的诊断设置
  • 添加新的诊断设置:
    • 勾选需要采集的日志类别(比如FunctionAppLogs)
    • 目标选择Event Hub,指定对应的Event Hub命名空间和Hub名称
    • 保存设置后,无论是直接访问函数URL还是通过APIM访问,都会将日志发送到Event Hub

方案3:检查APIM日志策略覆盖范围

确认APIM的日志策略已全局应用或覆盖目标API的所有操作:

  • 登录APIM门户,转到API > 你的AzureGoat API
  • 检查入站/出站策略,确保已添加<log-to-eventhub>策略,且策略应用范围是所有操作而非单个测试操作
  • 示例策略片段:
    <log-to-eventhub logger-id="your-eventhub-logger">
      @(string.Join(",", request.Headers.Select(h => h.Key + ": " + h.Value.FirstOrDefault())))
    </log-to-eventhub>
    

验证步骤

  1. 配置完成后,通过浏览器访问APIM提供的API URL,检查Event Hub是否收到日志
  2. 若选择方案2,直接访问函数应用URL,确认日志也能流入Event Hub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:46:06