You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Datadog监控中用#is_match与eval实现分时段Slack告警

问题描述

想要创建一个Datadog监控,触发时向Slack频道和邮箱发送告警消息,但仅在UTC时间14:00-16:00的工作时段向Slack发送通知。参考Datadog官方“按时段向不同团队路由通知”的示例,使用了如下表达式:

{{#is_match (eval "int(last_triggered_at_epoch / 3600000 % 24)") "14" "15" "16"}}   @my_Slack_team Handle that should receive notification if time is between 2PM and 5PM UTC {{/is_match}}

但配置时收到警告:In message: is_match argument (eval should be quoted (i.e. "(eval"),尝试双引号、转义等方法均未解决问题,最终采用两个独立监控(一个发邮件、一个发Slack并配置Downtime)的方案,但想了解是否可以仅用一个监控,通过#is_match和eval在“配置通知与自动化”环节实现分时段Slack告警?

解决方案

可以用单个监控实现需求,核心是修正is_match的参数格式:

  1. 修正is_match表达式写法
    将eval的整个调用用双引号包裹,并转义内部的双引号,让Datadog模板解析器正确识别参数:
    {{#is_match "(eval \"int(last_triggered_at_epoch / 3600000 % 24)\")" "14" "15" "16"}}@my_Slack_team 请处理告警(UTC时间14:00-16:00){{/is_match}}
    
  2. 更简洁的if条件写法
    也可以直接用eval做时段判断,通过#if条件渲染Slack通知:
    {{#if (eval "int(last_triggered_at_epoch / 3600000 % 24) >=14 && int(last_triggered_at_epoch / 3600000 % 24) <=16")}}@my_Slack_team 请处理告警{{/if}}
    
  3. 监控配置步骤
    • 直接添加邮箱通知,无需额外条件,确保告警触发时始终发送邮件
    • 在Slack通知的消息模板中加入上述条件表达式,仅在目标时段渲染Slack告警内容

之前的错误是因为is_match的第一个参数需要是字符串类型,但原写法未将eval调用整体包裹为字符串,导致解析器识别失败。修正参数格式后,即可在单个监控内实现分时段的Slack告警控制。

内容的提问来源于stack exchange,提问作者Guillermo Ojeda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:12:43