Posted at

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

More than 1 year has 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}}

以上です。