BeeX Tech blog

BeeXではクラウドネイティブアプリ開発、企業の基幹クラウド基盤構築、システム移行、運用保守を行っています。

Datadogで異常検知時に簡単にAWS内で後続処理を実行する方法

AWS Loft Osaka、なかなか快適です。那須です。

AWS外からのイベントをトリガーになにか処理をしたい時ってありますよね?

ちょっと前だとAPI Gateway等を通じてLambdaに流したりしていたのですが、ふとEventBridgeの存在を思い出しました。

https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html

Datadogを使ってモニタリングして、その結果をwebhookで連携していたのをEventBridgeに変えたら仕組みが少しだけシンプルになるなーと思ったのでやってみました。

今回やってみること

datadogで異常検知したら内容をメール通知してみます。

どんな内容で飛んでくるのかも知りたいのでJSONそのままを投げましょう。

今回はメール通知ですが、EC2インスタンスにAPIコールしたり、SSMでアクション実行したり、Kinesisストリームに投げたり、別アカウントのイベントバスに投げたり、、まあいろいろなターゲットが指定できますよ。

設定の流れ

ざっくり流れを書くとこんな感じです。

1. Datadog用のイベントバスを作成

2. EventBridgeでルール作成

3. Datadogのモニタリング設定で異常検知時にEventBridgeに投げるように指定

1. Datadog用のイベントバスを作成

まずはEventBridgeコンソールに行きましょう。

左のメニューからパートナーイベントソースをクリックします。

Datadogのところの設定を押すと…

設定の流れの概要が出てきます。

これに従ってイベントバス設定します。

AWSアカウント番号だけはメモしてきましょう。

DatadogのIntegrations画面で、Amazon EventBridgeをクリックします。

説明と一緒に設定画面が表示されます。

説明書きにもありますが、Datadogが使うIAMロールのポリシーにevents:CreateEventBusアクションが許可されている必要があるので、事前に調整しておきましょう。

では画面下のAdd Event Busをクリックします。

作成するイベントバスの名前とリージョンを指定して、Saveを押します。

ちなみに、2019年10月21日時点では東京リージョンは指定できませんでした。

早く東京リージョンにも来てほしいですね!

DatadogのIAMロールのポリシーに問題がなければ、このように指定したリージョンに指定した名前でイベントバスが作成されていることがEventBridgeコンソールで確認できますよ。

2. EventBridgeでルール作成

次にEventBridgeコンソールでルールを作成します。

まずはルールの名前を決めましょう。

パターンを定義します。

パターンは、何かしらのトリガーを基にして処理するのか、スケジュールで処理するのかのどちらかを指定します。

今回はイベントパターンです。

Datadog用のイベントバスを利用するので、サービス名でDatadogを指定しましょう。

イベントバスの選択のところで、さきほど作成したイベントバスを指定します。

ターゲットを指定します。

ここではメール通知するだけにしたのでSNSを指定していますが、他にも選択できるターゲットはたくさんありますよ。

最後に作成ボタンを押しましょう。

3. EventBridgeに投げる指定

DatadogのMonitor設定画面で、このように@awseventbridge-~と書くことで先程作成したEventBridgeのルールの通りに動きます。

実際にテストアラートを投げると、JSONが含まれたメールが飛んできました。

最後に

今まではAWS外からなにか処理を実行させようとするとwebhookが便利でしたが、EventBridgeを使うことで簡単に連携することができるようになっています。

今回はDatadogを例にしてやってみましたが、他にも連携できるサービスがいろいろあるので是非EventBridgeコンソールで確認してみてください。