如何在Django中排除健康检查端点以避免占满Sentry事务限额
排除Django健康检查端点的Sentry事务追踪
方法一:Sentry控制台配置事务过滤
- 登录Sentry项目控制台,进入「项目设置」→「安全与隐私」→「事务过滤」
- 点击「添加规则」,选择「排除事务」
- 配置匹配规则:
- 按路径匹配:在「事务名称」中输入
*ht/*,覆盖所有以/ht/开头的请求 - 按视图匹配:若知道健康检查视图的全路径(比如
health_check.views.HealthCheckView),直接输入该值进行精准匹配
- 按路径匹配:在「事务名称」中输入
- 保存规则后,Sentry将自动忽略这些健康检查事务
方法二:通过Django代码过滤事务
在项目的settings.py或Sentry专属配置文件中,添加事务过滤回调:
import sentry_sdk from sentry_sdk.integrations.django import DjangoIntegration def before_send_transaction(event, hint): request = hint.get("request") # 检测请求路径是否属于健康检查端点 if request and request.path.startswith("/ht/"): return None # 返回None表示不向Sentry发送该事务 return event sentry_sdk.init( dsn="你的Sentry DSN", integrations=[DjangoIntegration()], traces_sample_rate=1.0, before_send_transaction=before_send_transaction, )
方法三:采样规则精准排除
如果需要保留少量采样用于验证,可通过采样器设置0%采样率来完全排除:
import sentry_sdk from sentry_sdk.integrations.django import DjangoIntegration def traces_sampler(sampling_context): request = sampling_context.get("request") if request and request.path.startswith("/ht/"): return 0.0 # 对健康检查请求不采样 return 1.0 # 其他请求保持全量采样 sentry_sdk.init( dsn="你的Sentry DSN", integrations=[DjangoIntegration()], traces_sampler=traces_sampler, )
额外提示:若健康检查由监控工具(如K8s探针、Prometheus)发起,也可通过匹配请求的User-Agent或自定义Header来过滤,进一步提升精准度。
内容的提问来源于stack exchange,提问作者Saber
相关产品推荐
相关产品推荐

