Help us understand the problem. What is going on with this article?

DatadogのMonitorでEC2タグを利用してアラート送信先を変更する

More than 3 years have passed since last update.

概要

Datadogにおける監視機能としてmonitorがありますが、monitorはアラートの発生条件(しきい値やイベント)、発生した際のアクション、などについて設定を行うことができます。
EC2のタグの内容によってアクションを変えてみた、というのが本TIPSの内容になります。

is_matchを使う

monitorの設定では通常、アラートのレベルなどで通知内容を変えたりする場合、Say what's happeningの箇所に下記のように記述すると思います。

{{#is_alert}}
 Alert
 @alert通知先メールアドレス
{{/is_alert}}
{{#is_warning}}
 Warning
 @warning通知先メールアドレス
{{/is_warning}}

こうすると、alertの場合は本文にalertと入り、通知先はalert用アドレス、warningの場合には本文にwarningと入り、通知先はwarning用アドレス、となりますね。

このis_なんちゃらシリーズには下記のようなものがあります。

is_alert
is_alert_recovery
is_no_data
is_no_data_recovery
is_recovery
is_match
is_exact_match
is_warning
is_warning_recovery

この中で注目は is_match です。
これは、{{変数}}で展開できる変数がマッチした場合にアクションを起こすことができる機能です。

monitorの中で使用する場合は、下記のような書式になります。

{{#is_match "変数名" "値"}}
 アラート本文
 @通知先アドレス
{{/is_match}}

変数としてEC2のタグを使用する場合、{{host.Key}}となります。
たとえば、環境名としてenvというKeyのタグを使用し、valueに本番環境のインスタンスにはprod,開発環境にはdevという値をつけたとします。
その環境下で、本番環境のみアラート通知がしたいという場合、

{{#is_match "host.env" "prod"}}
 アラート本文
 @通知先アドレス
{{/is_match}}

というmonitor設定をすることにより、本番環境のみアラート通知を行うことができます。

開発環境も通知がしたいが、内容を変えたい、という場合は下記のようにすることができます。

{{#is_match "host.env" "prod"}}
 本番環境アラート本文
 @通知先アドレス
{{/is_match}}
{{#is_match "host.env" "dev"}}
 開発環境用アラート本文
 @通知先アドレス
{{/is_match}}

また、is_なんちゃらはネストすることが可能で、下記のような設定もできます。

{{#is_alert}}
{{#is_match "host.env" "prod"}}
 本番環境アラート本文
 @通知先アドレス
{{/is_match}}
{{#is_match "host.env" "dev"}}
 開発環境用アラート本文
 @通知先アドレス
{{/is_match}}
{{/is_alert}}

以上です。

takashi0314
新井ひとみさん推してます
cloudpack
Amazon Web Services (AWS) の導入設計、環境構築、運用・保守をサポートするマネジドホスティングサービス
https://cloudpack.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away