Application Insights生成应用地图时合并AKS同命名空间多部署,如何拆分中心节点
问题根因
Application Insights应用地图默认以遥测数据的cloud_RoleName(服务角色名)作为节点聚合依据,若同一个命名空间下多个Deployment上报的cloud_RoleName值相同,就会被合并为单个中心节点,仅展示Pod数量,不会区分不同Deployment。
解决步骤
为每个Deployment配置唯一的
cloud_RoleName
优先通过环境变量注入Deployment名称,无需硬编码业务代码,在Deployment的YAML配置中新增环境变量:env: - name: APP_ROLE_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app'] # 取Deployment的app标签值作为角色名不同语言的SDK对应配置方式:
- .NET:在
AddApplicationInsightsTelemetry配置中指定RoleName读取上述环境变量services.AddApplicationInsightsTelemetry(options => { options.RoleName = Environment.GetEnvironmentVariable("APP_ROLE_NAME"); }); - Java(Spring Boot):配置
spring.application.name取值为上述环境变量 - Node.js:初始化SDK时指定
roleName参数
如果你使用Azure Monitor for Containers自动采集遥测,只要给每个Deployment加上唯一的app标签,采集器会自动把标签值作为cloud_RoleName,无需修改业务代码。
- .NET:在
关闭应用地图自动聚合开关
进入Application Insights的应用地图页面,点击右上角设置按钮,关闭按相似名称合并节点选项,避免平台自动合并名称相近的服务节点。
验证
配置完成后等待5-10分钟待新遥测数据上报,刷新应用地图即可看到每个Deployment单独展示为独立节点,符合预期效果。
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

