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

Azure Application Insights:自定义事件实时指标可见但事件表无记录

ASP.NET Core 8 Web API自定义事件Live Metrics可见但Log Analytics查不到的解决方法

核心原因解释

Live Metrics的数据流是独立于常规遥测管道的,不经过采样和大部分过滤逻辑,所以即使事件被采样或过滤掉,实时指标依然能显示;但持久化到Log Analytics的遥测数据会经过完整的处理管道,一旦配置或代码中有过滤/采样问题,就不会写入到事件表中。

排查与解决步骤

1. 验证采样配置的实际生效状态

虽然你设置了SamplingSettings.ExcludedTypes = Event,但要确保配置被正确加载:

  • 确认appsettings.json中的Application Insights配置格式正确:
"ApplicationInsights": {
  "ConnectionString": "你的工作区连接字符串",
  "Sampling": {
    "Enabled": true,
    "ExcludedTypes": "Event"
  }
}
  • 检查Startup.cs中注册Application Insights的代码,确保是通过配置文件加载设置:
// 正确方式:自动读取appsettings中的配置
services.AddApplicationInsightsTelemetry(Configuration);

// 错误方式:手动硬编码可能覆盖配置
// services.AddApplicationInsightsTelemetry(options => { /* 手动设置可能忽略ExcludedTypes */ });

如果手动注册时自定义了选项,会覆盖配置文件中的采样设置,导致ExcludedTypes不生效。

2. 排查是否有自定义TelemetryProcessor过滤事件

除了自适应采样,自定义的遥测处理器可能无意中丢弃了事件:

  • 添加一个调试用的处理器,打印所有事件:
public class DebugEventTelemetryProcessor : ITelemetryProcessor
{
    private readonly ITelemetryProcessor _nextProcessor;

    public DebugEventTelemetryProcessor(ITelemetryProcessor nextProcessor)
    {
        _nextProcessor = nextProcessor;
    }

    public void Process(ITelemetry telemetry)
    {
        if (telemetry is EventTelemetry eventTelemetry)
        {
            Console.WriteLine($"[DEBUG] 自定义事件被处理:{eventTelemetry.Name},ID:{eventTelemetry.Id}");
        }
        // 传递给下一个处理器
        _nextProcessor.Process(telemetry);
    }
}
  • 在Startup中注册该处理器:
services.AddApplicationInsightsTelemetryProcessor<DebugEventTelemetryProcessor>();

运行API并触发自定义事件,查看控制台输出:

  • 如果有输出但Log Analytics无数据:说明事件进入了管道,但后续被其他逻辑过滤,或工作区配置问题;
  • 如果无输出:说明事件没进入遥测管道,检查自定义事件的记录代码是否正确。

3. 检查自定义ITelemetryInitializer的影响

即使你的初始化器只处理请求和依赖,也要确认代码中没有误修改EventTelemetry的属性:

  • 检查初始化器代码,确保没有对EventTelemetry类型做任何操作,比如设置SampleRate = 0或标记为TelemetryItem.SyntheticSource(可能被过滤)。

4. 临时禁用采样做测试

将Sampling.Enabled设为false,重新部署API,触发几个自定义事件,等待1-2小时后查询Log Analytics的customEvents表:

  • 如果能查到数据:说明之前的采样配置ExcludedTypes = Event没有生效,回到步骤1检查配置加载逻辑;
  • 如果还是查不到:排除采样问题,检查Log Analytics工作区的连接是否正确,或是否有工作区级别的数据过滤规则。

5. 确认Log Analytics工作区与表映射

  • 确认Application Insights的连接字符串指向的是你查询的Log Analytics工作区;
  • 自定义事件默认会写入customEvents表,无需额外映射,不要混淆AppEvents表(该表存储的是Application Insights自身的操作事件,不是自定义业务事件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:52:27