如何配置Datadog使4xx状态码被视为trace.servlet.request.errors错误
解决Datadog APM不统计4xx HTTP错误的问题
问题根源
trace.servlet.request.errors 这个指标默认只统计5xx状态码的请求,因为Datadog把4xx归类为客户端错误,默认不算作服务端错误范畴。
解决方案1:用现成指标直接筛选4xx/5xx请求
不需要修改应用配置,直接用带有http.status_code标签的trace.servlet.request.duration指标来统计所有4xx和5xx请求:
sum:trace.servlet.request.duration{service:my-app,env:dev,http.status_code:4*,http.status_code:5*}.as_count()
- 这里用通配符
4*匹配所有4xx状态码,5*匹配所有5xx状态码 - 这个指标本身是请求耗时的统计,用
.as_count()可以转换为请求数量统计
解决方案2:自定义错误状态码范围,让4xx计入trace.servlet.request.errors
如果你希望保持用trace.servlet.request.errors指标,可以修改Datadog Java Agent的配置,把4xx状态码纳入错误判定范围:
- 在Spring应用的配置文件(
application.properties或application.yml)中添加:
或者YAML格式:dd.trace.error.statuses=400-599dd: trace: error: statuses: 400-599 - 如果你用的是独立的Datadog Agent配置文件(
dd-java-agent.properties),同样添加:dd.trace.error.statuses=400-599 - 重启你的Spring应用,新的配置会生效,之后
trace.servlet.request.errors就会包含4xx和5xx的请求了。
注意事项
- 方案1更灵活,不需要改动应用,适合快速在仪表盘上实现需求
- 方案2会改变错误指标的默认行为,适合希望统一用错误指标统计所有HTTP异常场景的情况
内容的提问来源于stack exchange,提问作者夢のの夢
相关产品推荐
相关产品推荐

