Application Insights跨实例问题:如何让两个独立应用互认调用关系?
跨Application Insights实例应用调用关联配置方案
是否属于开箱即用功能?
跨独立Application Insights实例的双向关联不是完全开箱即用的功能。开箱即用的调用关联仅支持同一个Application Insights资源下的不同组件,或已经提前配置了跟踪头透传的同租户实例场景,你当前遇到的单向识别、无关联展示是跨独立实例的默认表现。
核心配置步骤
- 开启W3C trace context跟踪头透传:两个应用的Application Insights SDK都要启用W3C跟踪标准,确保消费者应用C发起HTTP请求时自动携带
traceparent、tracestate请求头,资源库应用R侧配置SDK自动识别解析这两个头,保证整条调用链的Trace ID在两个应用间一致。
注意:如果你的服务链路上存在网关、反向代理、自定义请求头过滤逻辑,必须配置放行
traceparent、tracestate、Request-Id、Request-Context这几个关联所需的请求头,禁止在传输过程中丢弃。
- 配置双向访问权限:同租户下的Application Insights实例默认继承权限,你已经持有两个实例的访问权限即可满足要求;跨租户场景需要给两个实例互相授予
Monitoring Reader角色权限。 - (可选)自定义云角色名区分展示:你可以在两个应用的SDK配置中自定义云角色名(Cloud Role Name),设置后应用地图会用自定义名称展示服务,不会和谷歌这类普通外部依赖混淆,不同语言的配置示例如下:
.NET 应用配置:
services.AddApplicationInsightsTelemetry(opt => { opt.RoleName = "ConsumerService"; // R侧对应改为RepositoryService即可 });
Java 应用配置:
applicationinsights: role: name: "RepositoryService"
- 开启应用地图跨资源查询:打开任意一个Application Insights的应用地图视图,点击顶部的「添加资源」按钮,把另一个Application Insights实例添加到当前视图中,就能展示双向完整调用链路。
验证方法
配置完成后等待5-10分钟让监控数据同步,主动发起一次从C到R的测试请求,查看两个应用中对应请求的Operation ID,如果ID完全一致即说明关联配置生效。
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

