为何Sentry未将ASP.NET Core API调用注册为Transactions?
Sentry 异常上报正常但无API请求事务记录排查方案
问题描述
集成Sentry的ASP.NET Core项目,Sentry初始化配置如下:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.UseSentry(options => { options.Dsn = Environment.GetEnvironmentVariable("SENTRY_DSN"); options.Debug = true; }); }); }
实际运行时所有异常都可以正常上报到Sentry生成Issues,但无论发起多少次REST API调用,Sentry后台都查不到对应的性能事务(Transactions)记录,和官方文档描述的默认配置行为不符。
解决方案
按优先级依次排查以下问题:
- 检查Nuget包版本:性能事务上报能力从
Sentry.AspNetCore3.0.0版本才开始正式支持,如果当前项目引用的是2.x及更早版本,先把包升级到最新稳定版再验证。 - 显式配置事务采样率:这是最常见的踩坑点——SDK默认的
TracesSampleRate值为0,也就是默认完全不采样、不上报任何性能事务,文档没有把这个默认值放在显眼位置说明。你只需要在Sentry配置项里显式指定采样率即可,比如全量采样配置如下:webBuilder.UseSentry(options => { options.Dsn = Environment.GetEnvironmentVariable("SENTRY_DSN"); options.Debug = true; // 1.0代表100%采样所有请求,生产环境可按需调整为0.1~0.5之间的数值 options.TracesSampleRate = 1.0; }); - 排查配置覆盖逻辑:如果项目同时通过
appsettings.json、环境变量或者自定义TracesSampler回调做了Sentry配置,确认没有把采样率设为0、或者在回调逻辑里把所有API请求的事务都标记为丢弃。 - 查看Debug日志定位问题:你已经开启了
options.Debug = true,发起请求时直接看应用控制台的Sentry日志即可,日志会明确打印事务是被采样规则丢弃、还是上报失败——比如对应Sentry项目没开通性能监控功能、网络出口拦截了性能上报请求、DSN权限不足这类问题,都会在Debug日志里有明确报错。 - 检查Sentry后台规则:如果本地日志显示事务已经成功上报,去Sentry后台对应项目的性能设置页检查,确认没有配置服务端过滤、采样规则,把收到的事务直接丢弃。
内容的提问来源于stack exchange,提问作者adamsfamily
相关产品推荐
相关产品推荐

