Azure

Azure Functions でDatadog のWebhook インテグレーションを利用しSendGrid 経由でアラート配信をする。

はじめに

くどうです。

今回取り上げるのは、Azure FunctionsでWebhookを利用して
Sendgrid経由でメールを配信する手順の応用です。
背景として、DatadogのメールがHTML形式のみであるという点です。
つまりタグが邪魔、これを解消するための方法になります。
考えた結果、Datadog とAzureを連携する場合、現状Webhookでのインテグレーションが候補
・・・というかそれしかない。
そして、Azure FunctionsはWebhookをトリガーに起動することができ、
SendgridをOUTとしてメールを配信することが可能になる。
またWebhookからのメールソリューションには色々応用が可能な設定となります。

これらの設定を行うためには3つの作業が必要となります。
・SendGrid API Keyの取得
・Azure Functionsの設定
・Datadog でWebhookのインテグレーション設定

SendGrid API Keyの取得

事前にAzureポータル、もしくは個別にSendGridのアカウントを取得していることが前提となります。

左側のメニューより[Settings]>[API Keys]をクリックします。
右上部の[Create API Key]をクリックします。

API Key Nameに任意の名前を入力します。PermissionはFull Accessを選択します。
[Create & View]をクリックし新しいKeyを発行します。

作成されたKeyはコピーしておきます。あとで確認することはできません。

以上でAPI Keyの取得は完了です。

Azure Functionsの設定

事前にFunction Appを作成しておいてください。

新しい機能を追加します。
トリガーをGeneric Webhookとします。

今回は言語選択にJavaScriptを選択し、任意の名前を入力します。
(ここは正直ご自由に好きな言語選択で良いですが、以後のサンプルはJavaScriptです。)

統合の画面より最初に設定されているHTTP(req)を削除し、SendGridを追加します。

追加後、右上のSendGrind API Key App Settingの欄[新規]をクリックします。
そこで、キーには任意の名前、値には先ほど取得したAPI keyを入力し作成をクリックします。

To AddressとFrom Addressは必須なため送信先、送信元(適当)に入力し保存します。

以上で、設定は完了です。
次に、Functionのコードを書きます。

index.js
Datadogから送られてくるJSONの中身、titleとbodyをそれぞれSendGrindで送信する簡単なサンプルコードです。

function.json

以下はテスト用の要求本文です。テストする前に張り付けてください。

保存し実行すると設定したTo Addressに下記のようなメールが送信されます。
受信すれば成功です。

以上で、Datadogから送られ来るフォーマットのデータをAzure Functionsで受信してSendGrind経由でメール送信する準備ができました。
次に、Datadogの設定を行います。

Datadog でWebhookのインテグレーション設定

前提としてDatadogのアカウントは既に取得していることが前提です。

Datadogの設定を行う前に、Funcrtion Appから関数の URL の取得を行います。

コピーしておきます。

Datadogへログイン後、インテグレーションの画面を開き、Webhookを選択します(インストールされていない場合は行ってください)。

最下部のnew name および new urlを入力します。
new nameはDatadog内で利用される名前になります。
new urlには先ほどコピーしたURLを貼り付けます。

以上で全ての作業は完了です。
あとはモニターを設定しアラートのNotify先に設定することでWebhook→Functions→SendGrindと経由されてメールが届くでしょう。

下記はロードアベレージによるアラートを例にした受信メールです。

まとめ

今回は、たまたまDatadogからWebhookを利用していますが、Webhookであればどのようなものでも応用は可能かと思います。
SendGrindもある程度まではFreeで利用できるのできるのでFuncrtionを利用し低コストで利用できるもの思います。
インフラ屋さんとしてはAzure Functions で利用するコード短く済むため楽でした 🙂

関連記事

  1. Azure

    仮想マシンの構成がダイアグラムで確認できます。

    ダイアグラムで表示くどうです。いつの間にか、仮想マシンがダ…

  2. AWS

    CLR/H in TOKYO #7 ~カソウ化デイ~

    12/20に開催されたCLR/H in TOKYO #7 ~カソウ化デ…

  3. Azure

    Active DirectoryをASMからARMに移行する方法を考える。

    はじめにくどうです。何かと仮想マシンでActive Dir…

  4. AWS

    マネージドサービスだけでAzureとAWSを接続する方法。

    はじめに2019/2/6 AWSでサイト対サイト VPNでIK…

  5. AWS

    AzureとAWSにおけるIaaS可用性の違いを少しだけおさらい。

    はじめにくどうです。最近、よく聞かれることがあります。「A…

  6. Azure

    仮想マシンのコア数制限について。

    コア数の制限くどうです。ちょっとハマったのでメモ。…

  1. AlibabaCloud

    Alibaba Cloud という謎なクラウドサービス。
  2. お知らせ

    第10回北海道情報セキュリティ勉強会開催しました。
  3. AWS

    VPC Peering、Direct Connectで同セグメントの通信を実現す…
  4. Linux

    Windows に Bash がやってきた!使えるまでの道のりは長い!
  5. その他

    第1回IETF勉強会に参加してきました。標準化の世界へようこそ。
PAGE TOP