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

如何在ASP.NET中过滤Sentry的APM事件?

解决方案1:通过SetBeforeSendTransaction直接过滤APM事务

SetBeforeSendTransaction回调专门处理Sentry的事务(Transaction),而APM数据的核心就是事务,所以直接在这里返回null就能过滤所有APM相关消息:

options.SetBeforeSendTransaction((sentryTransaction, hint) =>
{ 
    // 返回null丢弃所有事务(即APM相关数据)
    return null;
});

如果需要精细过滤特定APM事务,可检查事务的属性,比如名称、来源:

options.SetBeforeSendTransaction((sentryTransaction, hint) =>
{ 
    // 示例:丢弃自动采集的APM事务
    if (sentryTransaction.Source == "auto")
    {
        return null;
    }
    // 或根据事务名称过滤
    if (sentryTransaction.Name?.StartsWith("API/") == true)
    {
        return null;
    }
    return sentryTransaction;
});

解决方案2:在SetBeforeSend中区分APM事务和普通事件

如果要在统一回调里处理,可通过类型判断区分事务(APM)和普通错误事件——因为Transaction类继承自SentryEvent:

options.SetBeforeSend((sentryEvent, hint) =>
{
    // 判断当前事件是否是APM事务
    if (sentryEvent is Transaction)
    {
        return null; // 丢弃APM相关事件
    }

    sentryEvent.ServerName = null; // 不发送服务器名称
    return sentryEvent;
});

也可以通过检查上下文字段判断(事务都会包含trace上下文):

options.SetBeforeSend((sentryEvent, hint) =>
{
    // 检查是否存在trace上下文(APM事务的标志)
    if (sentryEvent.Contexts.TryGetValue("trace", out _))
    {
        return null;
    }

    sentryEvent.ServerName = null;
    return sentryEvent;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:07:05