数据狗中的消息模板变量是否可以进行等式匹配?

Can you perform equality matching on message template variables in data dog?

我正在设置 datadog monitors/alerts 并希望将警报路由到 slack 或 pagerduty,具体取决于问题是否出在我们的生产环境中。我已经创建了可以正确发出警报的多警报监视器,但我不知道如何只让 environment.name 等于 prod 的监视器向 pagerduty 发送警报,并始终将它们发送到 Slack .

我希望能够在警报消息中执行类似以下操作,但一直无法找出有效的语法:

[...alert message...]

{{#environment.name==prod}}@pagerduty{{/environment.name}}
@slack

目前,我找到了一个变通办法,即拥有两个彼此重复的监视器,其中一个仅适用于生产,仅提醒 pagerduty,第二个适用于所有环境,仅提醒 slack。但是,我知道随着我们的成长,这将成为维护的噩梦,我想知道是否有更好的解决方案。

您想要的是 is_matchis_exact_match 条件变量,它们是 documented here(带示例)。

这个想法是,您可以将消息 和通知 嵌套在条件逻辑参数中,以便仅当监视器 alerts/warns/resolves 或评估的标签范围匹配时某些情况下,某些消息或通知渠道是否会成为警报的一部分。

因此在您的情况下,您希望您的消息包含如下内容:

{{#is_exact_match "environment.name" "prod"}}

Add special prod message here

and @pagerduty or @pagerduty-foo

{{/is_exact_match}}

Add message that should always show up here

and @slack-bar

在这种情况下,只有当 "environment" 标签的值为 "prod" 时才会包含括号内的内容(其中包含 pagerduty 通知)。 non-bracketed 部分将始终包含在内(其中包括松弛通知)。