我可以将警报从单个 DataDog 监视器重定向到不同的 Slack 通道吗?

Ale*_*min 5 slack-api datadog slack

所以我有一个 DataDog 监视器,它的查询大致类似于:

trace-analytics("service:foo-service @http.status_code:403").rollup("count").last("10m") > 1000
Run Code Online (Sandbox Code Playgroud)

在 DD Monitor 的“通知您的团队”部分下,我在 Slack 上设置了我的团队频道,因此我们收到了大量警报。

也就是说,我们有兴趣将这些错误重定向到相关团队(例如,如果路由/abc抛出 a 403,我们希望将其发布到另一个 #abc-team Slack 频道/cde#cde-team)。我们怎样才能做到呢?我想我可以编写一个 Slack 机器人或其他东西,因为我在 DataDog 上没有找到这样的选项。

小智 5

您需要某种与 slack 通道的某些部分完全匹配的标签(因此该标签route:abc不需要route:/abc

那么你就可以写类似的东西了@slack-{{route.name}}-alerts。它会自动取消引用标签并将其发送到适当的组。

监控消息描述

https://www.datadoghq.com/blog/tagging-best-practices/#create-automatic-dynamic-alerts-for-your-team

如果由于某种原因你无法获得与数据上的松弛句柄的任何部分相匹配的标签,你可以制作一个巨大的 if else 条件

{{#is_match "route.name" "/abc"}}
  @slack-abc
{{/is_match}}
{{#is_match "route.name" "/whoever"}}
  @slack-whoever
{{/is_match}}
{{#is_match "route.name" "/turtle"}}
  @slack-turtle
{{/is_match}}
{{^is_match "route.name" "/abc" "/whoever" "/turtle"}}
  please make sure that this endpoint is configured to forward to the proper team's channel inside this monitor
  @slack-backup-alert-channel
{{/is_match}}
Run Code Online (Sandbox Code Playgroud)

https://docs.datadoghq.com/monitors/notifications/?tab=monitors#conditional-variables

第一个选项更干净,并且显然可以更好地扩展。但我看到人们使用第二个。


小智 0


我不太了解 DataDog 的功能,但我可以通过 Slack Bot 为您提供帮助。

您可以开发的机器人将具有以下流程:

  1. 所有警报将发送到公共频道#all-alerts
  2. 机器人也将被邀请加入此频道
  3. 为机器人订阅message事件
  4. 处理接收到的事件(消息),确定其属于哪个团队。
  5. 将处理后的消息/警报发布给相关团队。