Service Fabric .NET Framework服务配置Azure政府云Application Insights端点问题咨询
动态设置Instrumentation Key本身是合法的可选配置,不会直接导致上报失败,问题大概率出在配置加载优先级、端点配置覆盖或者网络连通性上,你可以按以下顺序排查:
检查TelemetryConfiguration初始化逻辑
如果你在代码里动态赋值Key时直接实例化了新的TelemetryConfiguration对象,会直接忽略ApplicationInsights.config里的政府云端点配置,使用默认的商用云端点,导致上报失败。
错误写法示例:// 该写法不会加载本地config的自定义端点配置 var config = new TelemetryConfiguration(); config.InstrumentationKey = "你的动态Key";正确写法需要先加载本地配置再赋值Key:
// 读取ApplicationInsights.config的所有配置,包括政府云端点 var config = TelemetryConfiguration.Active; // 或者 var config = TelemetryConfiguration.CreateDefault(); config.InstrumentationKey = "你的动态Key";核对ApplicationInsights.config的端点配置
确保配置里所有端点都替换为了Azure政府云对应地址,核心配置如下:<TelemetryChannel> <EndpointAddress>https://dc.applicationinsights.us/v2/track</EndpointAddress> </TelemetryChannel> <!-- 如果启用了Profiler、Snapshot Debugger等功能,对应的端点也要同步替换为政府云地址 -->验证Service Fabric节点网络连通性
政府云环境通常有更严格的出站访问控制,登录到服务运行的节点上,测试是否能正常访问https://dc.applicationinsights.us/v2/track地址,确认出站安全组、防火墙规则没有拦截相关请求。开启Application Insights调试日志定位具体错误
在ApplicationInsights.config中添加调试日志配置,部署后到节点上查看日志可以直接拿到上报失败的具体原因:<Diagnostics> <EnableDebugLogging>true</EnableDebugLogging> <LogFile>你指定的可写日志路径\appinsights_debug.log</LogFile> </Diagnostics>确认有状态服务的配置文件加载
如果你是有状态服务,需要确认每个分区的服务实例工作目录下都存在修改后的ApplicationInsights.config文件,避免出现仅根目录有配置、实例运行目录没有加载到正确配置的情况。
内容的提问来源于stack exchange,提问作者Josh

