1. はじめに
- 前回の記事「AWS DevOps Agent を使ってみる (4) :Datadog連携設定して、調査時にDatadogデータを参照させる」では、DevOps AgentとDatadogを接続して、Datadog内のデータを調査に使用できるようにした。
- 今回はその接続設定があることを前提に、Datadog モニターでアラートが発生した際にDevOps Agentの調査開始をトリガーするように設定する。
2. やったこと
- 事前に DevOps Agent と Datadog の連携設定を完了させておく。
- Datadog 側で、Integration(Webhook)を作成する(DevOps Agent側のWebhook待ち受け用URL、APIキー、必要なペイロードなどを設定)。
- Datadog 側で、EC2インスタンスのCPU使用率が70%以上になったらアラートするモニターを作成し、アラート発生時にIntegration(Webhook)を実行するように設定する。
- EC2インスタンスに負荷をかけるスクリプトを実行し、Datadogアラートが発生すると同時にWebhookによりDevOps Agentの調査がトリガーされることを確認する。
3. 構成図
4. 予習
- 公式ドキュメント、及び、DevOps Agentがβ版だった時に検証している記事があったため、設定の段取りを机上確認する。
- Datadog連携専用のWebhook URLがDevOps Agent側に用意されるので、Datadog側からそこをたたけばよい。
- Webhookをたたく時の認証として、Datadog連携の場合はベアラートークン方式。
- 上記のDevelopers.IOの記事に画面ありの手順があり、概ねこれに従って実施する。
5. 手順
5.1 前提条件
- AWSアカウントにて、DevOps Agentのエージェントスペースが作成済、DevOps AgentにDatadog連携が設定済。
- Datadog OrgとAWSアカウントとのインテグレーション実施済。また、EC2インスタンス(1台)にDatadog Agentをインストール済。
5.2 Datadog Integration(Webhook)の作成
- Datadogでアラートが発生した時に呼び出すためのWebhook設定を作成する。
- Integrations -> Webhooks を選択する。
- Webhookを新規作成する。
- URL: DevOps Agentで、エージェントスペースにDatadogを紐づけた時に作成された、Datadog用WebhookのURL
- PAYLOAD: DevOps Agentの起動に必要となる情報
- CUSTOM HEADERS: DevOps Agent側でDatadog用Webhook URLと同時に作成されたAPIキーをBearerとして指定
-
Datadogに組み込み変数という機能があり、動的にDevOps Agentに送る値を変更することができる。
- $ID: アラートイベントを一意に識別するID
- $ALERT_TITLE: アラートのタイトル。今回の検証では、対象のモニター名が「Linux CPU 使用率が高い ({{host.name}})」なので、この値は「Linux CPU 使用率が高い (i-xxxxxxxxxxxx)」のようになる
- $DATE: ミリ秒を含むエポックタイム(例:1406662672000)
-
上記のペイロードを送ることにより、インスタンス i-xxxxxxxxxxx のCPU高騰アラームについての調査をトリガーすることができる。
- 上記の設定値で動作(DevOps Agentの起動)はできているが、以下が精査できていない。
- どのフィールドが必須でどのフィールドがオプションなのか
- フィールド内の値のチェックがDevOps Agent側でどこまで行われているのか
- 例えばドキュメントでは timestamp をPAYLOAD,CUSTOM HEADERSの両方で ISO8601 形式(例:"2025-11-23T18:00:00Z")で送ることとなっている。ただ Datadogの組み込み変数ではエポックタイムでの出力しかできず、フォーマット変換して送るのは少し面倒に思えたが、PAYLOADはフィールドがあれば中身はエポックタイムでもよく、CUSTOM HEADERSはtimestampのフィールド自体がなくても動作した。
5.3 Datadog モニターの作成
- 検証用のモニターを作成する。
- いずれかのEC2インスタンスがCPU70%以上になった場合にアラート
- アラート発生時のみ Webhook Integration を呼び出し(復旧時は呼び出さない)
- このモニターでは、Webhookに加えてメールも送信
5.4 アラート発生時にWebhook経由でDevOps Agentがトリガーされることの確認
- EC2インスタンスにsshして、CPUに負荷をかけるコマンドを実行する。
[ec2-user@ip-10-0-0-212 ~]$ stress-ng --cpu 2
- アラームが発生し、Datadog Webhook Integration が発動する(Datadog Webhook Integrationは失敗するとエラーログが出てEvent Explorerで確認できるが、成功するとログが出ない)。
- DevOps Agentのインシデントレスポンスが開始される。
- 8分かけて調査が完了した(調査結果の一部を以下に共有)。該当インスタンスに対する Instance Connect のセッション開始直後からCPU使用率が上がっているため、そこでのテストである可能性が高い、というところまで調査できた。調査時にはAWS内だけでなくDatadogの情報も参照していたが、プロセス毎のCPU使用率をDatadogで取得・保存はしていなかったため、根本原因判明までは至らなかった。
6. 所感
- 連携の基本的なやり方は分かったので、どういう調査の場合にどういう情報があればよいのかや、Webhookする時にどういう情報を渡せばよいのかなど、実利用するための課題を深堀していきたい。









