如何在Datadog监控查询中自动带入执行当日日期?
解决方案
针对你的需求,有两种可行的方法实现Datadog监控查询中自动引入当日日期:
方法一:使用Datadog内置模板变量(适用于日期字符串字段)
如果@SomeField的值是YYYY-MM-DD格式的日期字符串,可以直接在查询中使用Datadog的{{date()}}模板函数,它会在监控每次运行时自动解析为当日的日期。
修改后的CDKTF代码示例:
import { Monitor } from '@cdktf/provider-datadog/lib/monitor'; import { Construct } from 'constructs'; export function FooMonitors(context: Construct): void { new Monitor(context, `Foo Daily Monitor`, { type: "log alert", query: `logs("service:foo env:prod \\"Some log message.\\" @SomeField:{{date('YYYY-MM-DD')}}").index("*").rollup("count").last("1d") < 6`, name: "Daily Foo Log Count Alert", // 补充其他必要参数,如告警消息、标签、通知配置等 }); }
这里的{{date('YYYY-MM-DD')}}会在监控执行时动态替换为当日的日期(例如2024-12-15),无需手动更新或重新部署监控。
方法二:使用相对日期范围(适用于时间戳字段)
如果@SomeField是时间戳类型(而非纯日期字符串),可以用Datadog的相对日期范围语法匹配当日的所有日志:
query: `logs("service:foo env:prod \\"Some log message.\\" @SomeField:[now/d to now]").index("*").rollup("count").last("1d") < 6`,
now/d表示当日零点,now表示当前时间,这个范围会自动匹配当日产生的所有符合条件的日志,等价于过滤当日日期的日志。
注意事项
- 确保你的Datadog监控评估频率设置为每日一次(可在监控配置的"评估频率"选项中调整),避免不必要的重复执行。
- 使用模板变量时,注意TypeScript字符串中的双引号转义,避免语法错误。
内容的提问来源于stack exchange,提问作者sharp328
相关产品推荐
相关产品推荐

