如何为Application Insights Telemetry事件添加自定义namespace
自定义遥测Namespace配置方案
TelemetryClient.TrackEvent的便捷重载未暴露Namespace参数,是因为该属性属于遥测对象本身的通用配置,可通过以下两种官方支持的方式实现自定义namespace设置:
方法1:手动构造EventTelemetry对象(单次定制场景)
不要直接调用TrackEvent的便捷重载,先实例化EventTelemetry对象,直接给它的Namespace属性赋值后再调用TelemetryClient.Track()上报,示例代码:
// 构造事件遥测对象 var customEvent = new EventTelemetry("你的自定义事件名称"); // 指定自定义namespace,禁止使用azure.*前缀(该前缀为微软保留) customEvent.Namespace = "myorg.myproduct.telemetry"; // 原本要传递的自定义属性、指标照常设置 customEvent.Properties.Add("自定义属性键", "自定义属性值"); customEvent.Metrics.Add("关联指标", 100.5); // 上报遥测 telemetryClient.Track(customEvent);
方法2:自定义ITelemetryInitializer(全局批量定制场景)
如果需要给所有/特定类型的遥测统一设置namespace,不需要每次手动构造对象,可以实现ITelemetryInitializer接口,在遥测初始化阶段批量赋值:
public class CustomNamespaceTelemetryInitializer : ITelemetryInitializer { public void Initialize(ITelemetry telemetry) { // 可按需筛选需要设置namespace的遥测类型,示例为仅给事件遥测设置 if (telemetry is EventTelemetry eventTelemetry) { eventTelemetry.Namespace = "myorg.myproduct.telemetry"; } } }
之后在应用的依赖注入配置或Application Insights初始化代码中注册该Initializer即可全局生效。
注意事项
- 自定义namespace禁止使用
azure.*前缀,该前缀为微软官方保留,仅可使用自有标识作为前缀 - 若设置后未生效,请先确认使用的
Microsoft.ApplicationInsightsSDK版本不低于2.12.0,该版本起正式支持遥测对象的Namespace属性透传 - 上报后等待5-10分钟,数据同步到Azure Monitor后即可在对应自定义namespace下查询到事件遥测
内容的提问来源于stack exchange,提问作者David S.
相关产品推荐
相关产品推荐

