Можете ли вы выполнить сопоставление равенства для переменных шаблона сообщения в собаке данных?

Я настраиваю мониторы/оповещения datadog и хочу, чтобы оповещения направлялись в slack или pagerduty в зависимости от того, находится ли проблема в нашей производственной среде или нет. Я создал мониторы с несколькими предупреждениями, которые выдают правильные предупреждения, но я не могу понять, как сделать так, чтобы только те, где environment.name равно prod, отправляли оповещение в pagerduty и всегда отправляли их в Slack.

Я надеялся, что смогу сделать что-то вроде следующего в предупреждающем сообщении, но не смог понять синтаксис, который работает:

[...alert message...]

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

На данный момент я нашел обходной путь, заключающийся в наличии двух мониторов, которые являются дубликатами друг друга, где один предназначен только для производства и только для предупреждений pagerduty, а второй - для всех сред и только для предупреждений. Тем не менее, я знаю, что по мере нашего роста это станет кошмаром для обслуживания, и я хотел бы знать, есть ли лучшее решение.


person Kenny Loveall    schedule 16.05.2019    source источник


Ответы (1)


Вам нужна условная переменная is_match или is_exact_match, которые задокументированы здесь (с примерами).

Идея состоит в том, что вы можете вкладывать свои сообщения и уведомления в условные логические аргументы, чтобы только тогда, когда монитор оповещает/предупреждает/разрешает, или только когда оцениваемая область действия тега соответствует определенным условиям, определенные сообщения или уведомления каналы будут частью оповещения.

Итак, в вашем случае вы хотите, чтобы ваше сообщение включало что-то вроде этого:

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

Добавьте специальное сообщение здесь

и @pagerduty или @pagerduty-foo

{{/is_exact_match}}

Добавьте сообщение, которое всегда должно отображаться здесь

и @slack-бар

В этом случае только тогда, когда значение тега "environment" равно "prod", будет включено содержимое в квадратных скобках (включая уведомление pagerduty). Часть, не заключенная в квадратные скобки, всегда будет включена (включая уведомление об отсутствии времени).

person stephenlechner    schedule 16.05.2019