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

在Azure Application Insights中无法找到OpenTelemetry标签与活动事件

问题分析与解决方案

你的问题核心是自定义Activity的追踪数据未被正确采集并发送到Azure Monitor,同时资源属性的配置方式需要调整,以下是具体修正步骤:

  • 修正OpenTelemetry追踪配置,包含自定义Activity源
    你的代码中创建了自定义Activity源WeatherActivities.MainSource,但OpenTelemetry TracerProvider默认不会自动采集这个源的追踪数据。需要显式添加这个源到追踪配置中:

    修改Program.cs的OpenTelemetry配置部分:

    builder.Services.AddOpenTelemetry()
        .ConfigureResource(resourceBuilder => 
            resourceBuilder.AddAttributes(resourceAttributes)) // 直接在这里配置资源属性
        .WithTracing(tracingBuilder =>
        {
            tracingBuilder
                .AddSource(WeatherActivities.MainSource.Name) // 添加自定义Activity源
                .UseAzureMonitor(options => 
                {
                    options.ConnectionString = "<my-connection-string>";
                });
        });
    

    说明:原来的ConfigureOpenTelemetryTracerProvider方式可以保留,但更推荐在WithTracing中统一配置,确保自定义源被正确纳入采集范围。

  • 确认Activity的启用状态
    确保你的Activity源是启用状态(默认是启用的,但可以显式确认):

    // WeatherActivities类的定义示例
    public static class WeatherActivities
    {
        public static readonly ActivitySource MainSource = new ActivitySource("WeatherActivities");
    }
    

    如果Activity源被禁用(比如通过环境变量OTEL_DOTNET_AUTO_TRACES_DISABLED设置为true),会导致数据无法采集,检查相关环境变量。

  • 调整Azure Monitor查询语句
    自定义Activity的数据会被发送到traces表,而非dependencies或customEvents表,所以需要调整查询:

    • 查询自定义Tag (my-tag)

      traces 
      | where customDimensions["my-tag"] != ""
      | project timestamp, name, customDimensions["my-tag"], customDimensions
      
    • 查询Activity Event (my-activity-event)
      Activity Event会被嵌套在traces表的customEvents字段中,需要展开查询:

      traces
      | where name == "Weather.Random" // 匹配你的Activity名称
      | mv-expand customEvents
      | where customEvents.name == "my-activity-event"
      | project timestamp, customEvents.name, customEvents.timestamp
      
    • 查询资源属性
      资源属性会出现在traces表的cloud_RoleName(对应service.name)、cloud_RoleInstance(对应service.instance.id),以及customDimensions中的service.namespace:

      traces
      | project timestamp, cloud_RoleName, cloud_RoleInstance, customDimensions["service.namespace"]
      
  • 验证配置生效
    重启服务后,调用控制器接口,等待几分钟(Azure Monitor有数据延迟),再用上述查询语句验证数据是否存在。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:13:11