vague memory

うろ覚えを無くしていこうともがき苦しむ人の備忘録

Datadog Monitor から Webhook で Lambda 起動

f:id:htnosm:20170219061829p:plain

前回 Datadog から SNS 経由で Lambda Function を起動を行いました。

別の方法を探してみた所、Webhook Integration が使えそうだったので試してみました。

1) API Gateway と Lambda Function を作成

API Gateway を trigger として Lambda Function を作成します。APIへは AccessKey認証 とします。

f:id:htnosm:20170219061830p:plain f:id:htnosm:20170220065001p:plain

今回使用した Lambda Function は、受け取った内容をそのまま Slack へポストするだけの物です。

2) CloudFront Distribution 作成

API Gateway の Endpoint をそのまま叩けば良いかと考えたのですが、Datadog の Webhook が SSLv3 を使用しているようで以下のようなエラーが発生します。

f:id:htnosm:20170219061832p:plain

Datadog 側での設定変更は無いようだったので、CloudFront を挟む事で回避させます。

Origin Domain Name へ API GatewayInvoke URL を入力します。 (Origin Path、Origin ID は自動的に入力されます。)

f:id:htnosm:20170219061833p:plain

また、AccessKey認証のため WhiteList Headers に x-api-key を設定します。

f:id:htnosm:20170219061834p:plain

3) Datadog Webhook Integration 設定

Integration → Webhooks → Configuration に CloudFrontのエンドポイントと API GatewayAPI Key を設定します。

f:id:htnosm:20170219061836p:plain

正常に登録できていれば、Monitor の Nortify 設定で Webhook: 〜 が選択できるようになります。

f:id:htnosm:20170219061835p:plain

実行例

Datadogのアラート発行をトリガーに、Lambda Function が起動した事を確認できます。

  • Lambda Function Log

f:id:htnosm:20170219061837p:plain

  • Slack

f:id:htnosm:20170219061838p:plain


CloudFront を介す必要がありますが、 メッセージのカスタマイズもある程度可能なため、 SNSでの通知より柔軟に処理設定できるのではないでしょうか。