0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS DevOps Agent を使ってみる (5) :Datadog モニターから DevOps Agentをトリガーする

0
Posted at

1. はじめに

2. やったこと

  • 事前に DevOps Agent と Datadog の連携設定を完了させておく。
  • Datadog 側で、Integration(Webhook)を作成する(DevOps Agent側のWebhook待ち受け用URL、APIキー、必要なペイロードなどを設定)。
  • Datadog 側で、EC2インスタンスのCPU使用率が70%以上になったらアラートするモニターを作成し、アラート発生時にIntegration(Webhook)を実行するように設定する。
  • EC2インスタンスに負荷をかけるスクリプトを実行し、Datadogアラートが発生すると同時にWebhookによりDevOps Agentの調査がトリガーされることを確認する。

3. 構成図

image.png

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 を選択する。

image.png

  • Webhookを新規作成する。
    • URL: DevOps Agentで、エージェントスペースにDatadogを紐づけた時に作成された、Datadog用WebhookのURL
    • PAYLOAD: DevOps Agentの起動に必要となる情報
    • CUSTOM HEADERS: DevOps Agent側でDatadog用Webhook URLと同時に作成されたAPIキーをBearerとして指定

image.png

  • 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に加えてメールも送信

image.png

image.png

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で確認できるが、成功するとログが出ない)。

image.png

  • DevOps Agentのインシデントレスポンスが開始される。

image.png

  • 8分かけて調査が完了した(調査結果の一部を以下に共有)。該当インスタンスに対する Instance Connect のセッション開始直後からCPU使用率が上がっているため、そこでのテストである可能性が高い、というところまで調査できた。調査時にはAWS内だけでなくDatadogの情報も参照していたが、プロセス毎のCPU使用率をDatadogで取得・保存はしていなかったため、根本原因判明までは至らなかった。

image.png

image.png

image.png

6. 所感

  • 連携の基本的なやり方は分かったので、どういう調査の場合にどういう情報があればよいのかや、Webhookする時にどういう情報を渡せばよいのかなど、実利用するための課題を深堀していきたい。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?