You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Application Insights全类型遥测日志添加自定义环境属性

为Application Insights全类型遥测追加全局环境标签

.Enrich.WithProperty()是日志框架的属性追加逻辑,仅能覆盖经过该日志管道输出的Trace类和部分手动写入的Exception类遥测,无法覆盖Application Insights SDK自动采集的Request、Dependency、Page View、Custom Event等全量遥测类型。要给所有6类遥测统一追加环境标识,使用Application Insights原生的遥测初始化器(Telemetry Initializer) 即可实现100%覆盖,支持多环境日志统一上报到同一个AI实例后按标签筛选。

支持覆盖的遥测类型

该方案会自动给所有上报的遥测追加属性,无遗漏覆盖需要的全部类别:

  • Custom Event
  • Request
  • Exception
  • Trace
  • Page View
  • Dependency

后端.NET/.NET Core实现步骤

  1. 编写自定义遥测初始化器,逻辑为所有遥测追加环境属性
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;

public class EnvTagTelemetryInitializer : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        // 从配置/环境变量读取当前部署环境,取值为QA/UAT/Prod等
        var currentEnv = Environment.GetEnvironmentVariable("APP_ENV") ?? "Prod";
        // 若业务代码手动传入了同名env属性则不覆盖,避免自定义值被全局配置替换
        if (!telemetry.Context.GlobalProperties.ContainsKey("env"))
        {
            telemetry.Context.GlobalProperties["env"] = currentEnv;
        }
    }
}
  1. 将初始化器注册到Application Insights服务管道
  • 若使用ASP.NET Core,在Program.cs服务配置段添加注册代码:
// 原有AI服务注册代码
builder.Services.AddApplicationInsightsTelemetry();
// 注册自定义环境标签初始化器
builder.Services.AddSingleton<ITelemetryInitializer, EnvTagTelemetryInitializer>();
  • 若使用.NET Framework,可直接在全局Telemetry配置中添加初始化器:
TelemetryConfiguration.Active.TelemetryInitializers.Add(new EnvTagTelemetryInitializer());

前端JavaScript SDK适配(覆盖前端侧遥测)

页面浏览(Page View)、前端抛出的异常、前端手动埋点的Custom Event由JS SDK上报,需要在前端初始化时添加对应逻辑:

const appInsights = new ApplicationInsights({
  config: {
    connectionString: '替换为你的AI实例连接字符串',
    telemetryInitializers: [
      (envelope) => {
        const baseData = envelope.data?.baseData || {};
        baseData.properties = baseData.properties || {};
        // 替换为前端构建时注入的当前环境值
        baseData.properties.env = 'QA';
        envelope.data.baseData = baseData;
      }
    ]
  }
});
appInsights.loadAppInsights();

使用说明

  • 遥测初始化器会在所有遥测数据正式上报前执行,不管是SDK自动采集的基础设施类遥测,还是业务代码手动调用Track方法写入的自定义遥测,都会自动带上env属性,不存在类型遗漏。
  • 日志查询时直接在Kusto查询语句中添加where env == "QA"这类过滤条件,即可快速拆分不同环境的日志数据,无需为每个环境单独部署Application Insights实例。
  • 原有的Serilog等日志框架的Enrich配置可以保留,两边逻辑不会冲突,遥测初始化器会兜底补全所有缺失环境属性的遥测。

内容的提问来源于stack exchange,提问作者Vaybhaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 15:51:37