如何将DataDog监控查询属性设为可选并优化通知显示?
实现DataDog日志监控中可选属性的告警通知方案
完全可以实现你的需求,核心是调整日志查询逻辑并利用通知模板的条件渲染能力,分两种场景给出具体方案:
场景1:只要有ERROR日志就触发告警,不按属性分组
1. 修改监控查询语句
原查询中.by("@stack_trace,@logger_name,@organization")会过滤掉缺失这些属性的日志,导致无法触发告警。将查询改为:
logs("service:<SERVICE NAME> @level:ERROR").index("main").rollup("count").last("5m") > 0
这样会捕获该服务下所有ERROR级别的日志,无论是否包含目标属性。
2. 配置通知模板
在DataDog告警的通知消息模板中,使用Handlebars条件语法判断属性是否存在,缺失时显示问号:
检测到服务<SERVICE NAME>的ERROR日志: - 日志器名称:{{#if @logger_name}}{{@logger_name}}{{else}}?{{/if}} - 组织:{{#if @organization}}{{@organization}}{{else}}?{{/if}} - 堆栈跟踪:{{#if @stack_trace}}{{@stack_trace}}{{else}}?{{/if}}
场景2:按属性分组告警(缺失属性用问号作为分组标识)
如果需要按stack_trace、logger_name、organization分组,缺失属性的日志单独触发告警,可使用fill_missing函数为缺失属性填充默认值:
修改监控查询语句
logs("service:<SERVICE NAME> @level:ERROR").index("main").fill_missing(value="?", fields=["@stack_trace", "@logger_name", "@organization"]).rollup("count").by("@stack_trace,@logger_name,@organization").last("5m") > 0
fill_missing会自动为缺失指定属性的日志填充问号,这样分组统计时就会包含所有ERROR日志,告警通知中对应的属性值就是问号(存在则显示实际值)。
内容的提问来源于stack exchange,提问作者Gabe Braden
相关产品推荐
相关产品推荐

