如何在Datadog指标告警监控查询中排除健康检查资源
实现方法
这类trace层面的Netty请求指标,默认会被APM探针打上请求方法、请求路由路径的标签,你只需要在当前告警的查询过滤条件中,增加对健康检查路径的否定匹配规则即可,该修改仅作用于这条告警查询,不会影响其他监控项的指标采集和计算,完全满足你仅针对该特定指标排除健康检查数据的需求。
注意提前在你的指标浏览器里确认下存储请求路径、请求方法的实际标签名,不同APM探针的标签命名可能有差异,常见的路径标签名有http.route、request_path、resource_name,请求方法标签常见为http.method。
Terraform配置示例
以最通用的标签命名(路由标签为http.route)为例,健康检查请求为GET /healthcheck,修改后的查询语句如下:
query = "max(last_10m):p95:trace.netty.request{env:${var.env},service:${local.service_name},http.route:!/healthcheck} >= 4"
语法说明:标签匹配规则中,值前面加!代表否定匹配,也就是所有标签http.route值为/healthcheck的指标都会被排除在计算范围外。
如果你的健康检查请求方法固定是GET,也可以加上方法过滤进一步缩小排除范围,避免误排除其他同路径的非健康检查请求:
query = "max(last_10m):p95:trace.netty.request{env:${var.env},service:${local.service_name},http.method:GET,http.route:!/healthcheck} >= 4"
如果存在多个健康检查路径,比如还有SpringBoot常用的/actuator/health端点,直接追加多个否定过滤规则即可:
query = "max(last_10m):p95:trace.netty.request{env:${var.env},service:${local.service_name},http.route:!/healthcheck,http.route:!/actuator/health} >= 4"
配置修改完成后,建议先在指标查询控制台预览计算结果,确认返回的时序数据中已经剔除了健康检查接口的统计值,再执行terraform apply应用配置即可。
内容的提问来源于stack exchange,提问作者OSGI Java
相关产品推荐
相关产品推荐

