Datadog を Slack 連携してアラート通知と/datadogコマンドを試してみた
こんにちは。オペレーション部のしいなです。
はじめに
Datadog のアラートメール通知を見逃した。このアラートは対応済みだっけ? 誰か対応している? などといった悩みを抱えていませんか?
Datadog と Slack を連携することで、普段使っているチャンネルにリアルタイムでアラートを届けることが可能です。
Slack を活用することで、インシデントの対応状況の共有やチーム内のコミュニケーションも格段にスムーズになります。
今回は Datadog と Slack の連携設定から、便利な/datadogコマンドを試してみました。
前提
- Slack ワークスペースおよび通知用のチャンネル作成済み
- モニター作成済み
Slack 連携設定
Slack と Datadog 間で連携を行う設定を行います。
1.インテグレーション設定
Slack アプリケーションをインストールします。
-
Datadog コンソールより「Integrations」を選択します。
-
検索フィールドに "Slack" と入力し、検索を行います。
-
一覧の Slack パネルの「Install」を選択します。

-
Configure タブから「Add a workspace」を選択します。

-
Slack のアクセス許可ページに自動的に遷移しますので、接続したいワークスペース名を確認の上、「許可する」を選択します。

-
Slack ワークスペースの連携に成功すると、Configure 一覧にワークスペース名が表示されます。
-
Slack ワークスペースの App に Datadog のアプリケーションが表示されていることが確認できます。

2.Datadog 接続設定
接続を行うとチャンネルから/datadogコマンドを利用して、Datadog のインシデント作成やダッシュボード共有、ワークフロー実行などの機能を呼び出すことが可能です。
-
Configure タブから接続したワークスペース名を選択します。
-
「Connect」を選択します。

-
Slack アカウントへの接続確認が表示されるので、「Sign in with Slack」を選択します。

-
Slack の承諾ページに自動的に遷移しますので、「承諾して続行する」を選択します。

-
Connected Workspaces に対象のワークスペース名が表示されていれば、接続成功です。

3.チャンネル通知設定
Datadog の通知を受信する Slack チャンネルの設定を行います。
設定方法はパブリックチャンネル、プライベートチャンネルによって異なります。
パブリックチャンネル
Datadog コンソールから設定を行います。
-
Configure タブから接続したワークスペース名を選択の上、「Add Channel」を選択します。

-
新しい入力フィールドが表示されるので、CHANNEL のプルダウンメニューより受信したいチャンネル名を選択します。
-
チェックマークを選択し、設定を保存します。

プライベートチャンネル
Datadog コンソールから設定は行えないため、Slack コマンドを利用して通知を受信する設定を行います。
-
Slack のプライベートチャンネルにて
/invite @Datadogコマンドを実行します。

-
追加されたことを確認します。

通知テスト
正しく Datadog アラート通知を受信できるかテストを行います。
-
Configure タブから接続したワークスペース名を選択します。
-
対象のチャンネルにて、MONITOR ACTIONS の右側にカーソルを移動すると表示される「Test」を選択します。

-
Slack チャンネルに Test Notification のメッセージが表示されていることを確認します。

4.モニターの通知設定
モニターの通知受信者に Slack インテグレーションを指定し、チャンネルに対して通知を行います。
-
Datadog コンソールの Monitoring より「Monitoring List」を選択します。

-
通知を行いたいモニター名にカーソルを移動し、表示される「Edit」を選択します。

-
Configure notifications & automations フィールドに
@slackと入力します。 -
@slack-[ワークスペース名]-[チャンネル名]形式のリストが表示されるので、該当するものを選択します。 -
「Save and Publish」を選択し、保存します。

アラート通知
実際に擬似的に Datadog モニターをアラート状態にさせ、Slack チャンネルにアラートを通知してみます。
今回はモニターの Configure notifications & automations にて、変数を使用したメッセージテンプレートを利用しました。
変数を使用することで、グラフや検知メッセージ、リンクなどを付加して通知することができるため、スムーズなインシデント対応が行えます。
メトリクスモニター
- メッセージテンプレート例
@slack-[ワークスペース名]-[チャンネル名]
High CPU Usage Detected
Host: {{host.name}}
Current CPU Usage: {{value}}%
Threshold: {{threshold}}%
{{#snapshot}} avg:aws.ec2.cpuutilization{*} by {host} {{/snapshot}}
アラートを検知すると、Slack チャンネルにTriggered:で始まるメッセージが通知されました。
変数によるホスト名、現在の使用率、閾値の情報に加え、スナップショットによるグラフも表示されていることが確認できます。

アラートが解消すると、Slack チャンネルにRecovered:で始まるメッセージが通知されました。

ログモニター
- メッセージテンプレート例
@slack-[ワークスペース名]-[チャンネル名]
Error Log Detected
Message: {{log.message}}
Log URL: {{log.link}}
アラートを検知すると、Slack チャンネルにTriggered:で始まるメッセージが通知されました。
変数による検知メッセージ、ログメッセージを確認できる Datadog コンソールへのリンクが表示されていることが確認できます。
なお、ログモニターの場合、変数を指定せずとも自動的に View in Log Explorer のリンクは付加されます。

アラートが解消すると、Slack チャンネルにRecovered:で始まるメッセージが通知されました。

Slack コマンド
アプリケーションをインストールしたことにより、Slack チャンネルからコマンドを利用して Datadog に対して操作を行うことが可能です。
コマンド一覧
コマンド一覧は/datadog helpで確認できます。
本記事執筆時点では、次のコマンドが利用可能です。
- インシデント対応
| コマンド | 説明 |
|---|---|
/datadog incident |
インシデントを宣言する |
/datadog incident test |
テスト用インシデントを宣言する |
/datadog incident list |
オープン中のインシデント一覧を表示する |
/datadog incident edit |
インシデントチャンネル内で実行し、インシデントのタイトル、状態、重大度、属性を更新する |
/datadog incident notify |
インシデントチャンネル内で実行し、@メンションでインシデントを通知する |
/datadog incident private |
インシデントチャンネル内で実行し、インシデントを非公開にする |
/datadog incident public |
インシデントチャンネル内で実行し、インシデントを公開にする |
/datadog incident responders |
インシデントチャンネル内で実行し、インシデント対応チームを管理する |
/datadog incident summary |
インシデントチャンネル内で実行し、AI でインシデントのサマリーを生成する |
/datadog task |
インシデントのタスクを作成する |
/datadog task list |
インシデントの全タスク一覧を表示する |
/datadog page |
チームに呼び出しを送る |
/datadog shifts |
今後のオンコールシフトを確認する |
/datadog override |
今後のオンコールシフトの代理を依頼する |
- ワークフロー
| コマンド | 説明 |
|---|---|
/datadog workflow |
ワークフローを実行する |
- ダッシュボード
| コマンド | 説明 |
|---|---|
/datadog dashboard |
ダッシュボードのウィジェットをチャンネルに共有する |
- モニター
| コマンド | 説明 |
|---|---|
/datadog monitors |
このチャンネルに送信されたトリガー済みモニターを全て表示する |
- アカウント管理
| コマンド | 説明 |
|---|---|
/datadog accounts |
連携済みの Datadog アカウントを管理する |
/datadog monitors コマンド
該当の Slack チャンネルに通知されたアラートが継続しているモニターの一覧を表示することができます。
既にアラート状態が解消しているものは表示されません。
複数のアラートが検知した際などに対応漏れの防止や見逃し防止に役立ちそうです。
コマンドを実行するとポップアップウィンドウが表示され、アラート状態となっているモニター名が表示されました。

対象がない場合はThere are no triggered monitors for this channel.と表示されます。

/datadog workflow コマンド
Slack チャンネルからワークフローの実行を呼び出すことができます。
ワークフローは復旧処理や初動対応などのユースケースとして利用できます。
例えば、アラート時に EC2 インスタンスに対して AWS Systems Manager Run Command を利用して復旧処理のスクリプトを実行できます。

なお、Slack から実行する場合、ワークフローはあらかじめ Publish されている必要がありますのでご注意ください。


/datadog dashboard コマンド
Slack チャンネルにダッシュボード内のウィジェットを画像形式で共有することができます。
アラートの原因となる手がかりや痕跡を発見した場合に素早くチーム内で共有したいシーンなどで活用できます。


まとめ
Slack インテグレーション設定からモニターの通知設定、/datadogコマンドによる操作をやってみました。
Slack と Datadog を連携することで、アラートのリアルタイム通知だけでなく、インシデント管理やダッシュボード共有もチャンネル上で完結できます。
アラート運用の効率化を検討されている方は、ぜひ参考にしてみてください。
本記事が参考になれば幸いです。
参考








