Azure Application Gateway与Azure Application Insights的日志关联方法咨询
Azure Application Gateway与Application Insights日志关联实现方法
核心关联逻辑
两者原生支持W3C Trace Context分布式跟踪标准,通过全局唯一的traceId字段即可实现端到端链路的关联,无需额外做复杂的字段适配。
前置配置要求
- 开启Application Gateway的诊断日志导出,需同时勾选访问日志,如果使用WAF功能需同步勾选防火墙日志,日志建议导出到共享的Log Analytics工作区,可直接和同工作区的Application Insights日志做关联查询
- 为Application Gateway启用W3C格式的访问日志,该格式默认携带
traceparent字段,字段中第二分段即为全链路统一的traceId - 后端业务应用集成的Application Insights SDK需开启W3C分布式跟踪支持,主流语言的高版本SDK默认已启用该配置,无需额外调整
具体关联操作方法
1. Kusto查询直接关联(最常用)
在Log Analytics工作区中执行以下Kusto语句,即可直接关联两类日志,查询全链路请求数据:
// AppGw访问日志与App Insights请求关联示例 AzureDiagnostics // 筛选AppGw访问日志 | where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess" // 从traceparent字段提取全链路traceId | extend appgw_traceId = tostring(split(traceparent_s, "-")[1]) | join kind=inner ( // 筛选App Insights的请求日志 appRequests | extend appins_traceId = tostring(traceId) ) on $left.appgw_traceId == $right.appins_traceId // 自定义输出需要的字段 | project 客户端IP = clientIP_s, 请求域名 = host_s, 请求路径 = requestUri_s, AppGw响应状态码 = httpStatus_d, 应用处理结果 = success, 应用处理耗时 = duration, 全链路跟踪ID = appgw_traceId
2. 自定义头补充关联(兼容特殊场景)
如果部分老旧应用不支持W3C跟踪标准,可在Application Gateway的转发规则中配置注入自定义请求头X-AppGw-Request-ID,取值为AppGw内置的请求ID,后端应用收到该请求头后将其作为自定义属性上报到Application Insights,即可通过该自定义字段实现两类日志的关联。
全链路映射关系构建方案
- 单请求链路映射:通过traceId可串联单条请求从进入AppGw、WAF检测、路由转发、后端应用处理、返回响应的全流程,可直接定位故障发生的层级
- 批量资源映射:可基于请求域名、路径前缀匹配AppGw的后端池配置,关联到对应后端服务绑定的Application Insights实例,批量构建「AppGw监听规则→后端服务资源→应用监控实例」的映射关系表
- 业务维度映射:可在关联查询中补充业务标签(比如所属业务线、服务等级),实现从顶层接入设备到业务应用的多维度映射
内容的提问来源于stack exchange,提问作者Muthukumar Shanmugasundaram
相关产品推荐
相关产品推荐

