Azure Monitor のアラートのアクション グループに設定できる、Azure Functions アプリケーションです。次の機能があります。
- Azure Monitor のアクション グループから共通スキーマのアラートを受信します
- SendGrid を使ってメールを送信します
- Cognitive Service(Translator Text API) を使って翻訳します
- 複数の宛先にテキストメールを送信します
以下のようなアラートを受信できます。
アラート名: Azure Function と連携したテストアラートです
アラート状態: 解決
アラート説明: アラートの説明です。
アラート重要度: Sev3
アラート発生日時: 2020-03-17T10:29:43.0282546Z
アラート解決日時: 2020-03-17T10:32:39.3435543Z
アラート種別: Platform
リソース グループ: sjk-ftp-test
リソース タイプ: microsoft.compute/virtualmachines
対象リソース: ftpvm
- Azure Functions ランタイム v2.0 で動作します
- Node.js(TypeScript) で作成しています
Visual Studio Code での展開 が簡単です。
こちらを参照します。
メール送信に使用する SendGrid をデプロイします。
メールの翻訳に使用する Translator Text をデプロイします。
以下をキーとして設定します。
- MailTo - 送信先のメールアドレスです。カンマ区切りで複数指定できます。
- SENDGRID_APIKEY - SendGrid の API キーを指定します。
- TRANSLATOR_TEXT_SUBSCRIPTION_KEY - Translator API のキーを指定します。
- WEBSITE_RUN_FROM_PACKAGE: 1 - パッケージデプロイを指定します。
ローカル環境では 2 つのテスト方法があります。
1 つ目は単体テスト(npm test)、2 つ目は結合テスト(npm run start)です。結合テストは、HttpTriger をテストするため、Postman 等を使って HTTP リクエストを投げる必要があります。
npm run start(func start) した時に読み込まれます。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "node",
"SENDGRID_APIKEY": "AA.ABCDEFGHiJkiS12lEfx1Yw.RpbfQild9ptw6KMhnCqXm4zMg5mWSERXLavSnwoLApg" // SendGrid の出力バインドで使われます
}
}
アプリケーションで読み込まれる環境変数を設定します。
MailTo="[email protected],[email protected]"
TRANSLATOR_TEXT_SUBSCRIPTION_KEY="999999999999999994dc99b94e6d0ba6"
モジュール単位のテストは、npm test
を実行します。 HttpTrigger/testdata にテスト用のアラート定義(Azure Monitorから渡されるもの)を保存しています。
func start を使用したテストは、Postman でリクエストを投げます。