Azure DevOps自托管代理中ApplicationInsightsTelemetrySender报错求助
问题原因分析
- DNS解析失败:从nslookup输出可见,
dc.services.visualstudio.com的CNAME链最终指向global.in.ai.privatelink.monitor.azure.com,这是Azure Monitor的私有链接域名,公网DNS服务器无法解析该域名,导致代理无法完成地址解析,触发连接错误。 - 遥测未彻底禁用:尽管你尝试禁用Application Insights,但
PublishPipelineArtifact@1任务内置的遥测发送逻辑可能未被完全覆盖,仍会尝试发送事件到Application Insights端点。
解决方案
1. 修复DNS解析配置
场景A:自托管代理部署在Azure VNet中
- 在Azure门户创建私有DNS区域
privatelink.monitor.azure.com,并将代理所在的VNet关联到该区域。Azure会自动为私有链接域名提供正确的内部IP解析。
场景B:自托管代理部署在本地网络
- 方法1:DNS转发:配置本地DNS服务器,将
global.in.ai.privatelink.monitor.azure.com的查询请求转发到Azure公共DNS服务器(地址:168.63.129.16)。 - 方法2:Hosts文件配置:在代理服务器的hosts文件中添加记录,将
global.in.ai.privatelink.monitor.azure.com指向公网可访问的对应IP(可在能正常连接的环境中通过nslookup global.in.ai.monitor.azure.com获取IP)。示例:20.190.160.1 global.in.ai.privatelink.monitor.azure.com
2. 彻底禁用流水线遥测
方式1:流水线任务级别禁用
修改PublishPipelineArtifact@1任务配置,添加环境变量AGENT_DISABLE_TELEMETRY=true:
- task: PublishPipelineArtifact@1 condition: always() name: "PublishLZRInvoicingArtifacts" inputs: targetPath: $(System.DefaultWorkingDirectory)/ManagedServices/reports artifact: reports env: AGENT_DISABLE_TELEMETRY: 'true'
方式2:自托管代理全局禁用
编辑代理安装目录下的.agent配置文件,添加disableTelemetry: true字段,保存后重启代理服务:
{ "agentId": "xxx", "agentName": "xxx", "disableTelemetry": true, // 其他原有配置... }
3. (可选)补充防火墙规则(若需保留遥测)
如果需要让遥测正常发送,需在防火墙中允许代理访问global.in.ai.privatelink.monitor.azure.com:443。若不需要遥测,直接禁用即可,无需此步骤。
内容的提问来源于stack exchange,提问作者Nadia Hansen
相关产品推荐
相关产品推荐

