Azure MonitorのAlertアクションでmattermost通知をする

# はじめに

Azure MonitorのAlert時のアクションを以下の構成でmattermostに通知させる方法を記載します。

**想定する構成**

![スクリーンショット 2020-02-13 23.50.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/7b527400-2b1d-3a6a-d869-959957923021.png)

AzureにはSMSや通話、EmailなどAlert時に発砲させるアクションが事前に準備されていますが、mattermostへの通知はありません。従って環境の構築と実装を行い実現する必要があります。

## 前提

* mattermostは[Azureでbitnamiから購入した仮想マシン](https://bitnami.com/stack/mattermost/cloud/azure)で準備してます（無料）
* 以下の記事からmattermostのbotを構築していること
    * [Azure function(python)でmattermost botを開発してみる](https://qiita.com/kita-atsushi/items/765937071cb3eccb78f5)
* [Application Insightsのurl check機能](https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/monitor-web-app-availability)で取得したログを監視対象とします

## １.Azure Monitorからアクショングループを構成する

Azureにログインして以下の画面のようにAzure Monitorからアクションの管理・アクショングループの追加を行います。

![スクリーンショット 2020-02-13 22.55.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/9893c5c8-32b5-6f1f-eea4-a56973522932.png)
![スクリーンショット 2020-02-13 22.56.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/1877175c-31c1-aa58-7e3a-8cfc4bf9f620.png)
![スクリーンショット 2020-02-13 22.58.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/f5c6f394-80ca-2c9d-8cb5-7c24199482e1.png)
![スクリーンショット 2020-02-13 22.59.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/591e6998-93e8-6c08-03ac-34f7336f138f.png)

以下のようにしてアクションの種類をWebhookにして作成します。
URIはFunctionのポータルから取得することができます。

![スクリーンショット 2020-02-13 23.39.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/86411bd8-05e6-3992-cea1-62055bfbcf64.png)

以下のような形式になります。
 `https://<function_app_name>.azurewebsites.net/api/HttpTrigger?code=<code>`

![スクリーンショット 2020-02-13 23.01.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/265b4db4-82b6-b34c-82ce-4482aed9aa9f.png)

項目を入力したらOKを押下し、次にアラートルールを作成します。

## 2.アラートルールの作成

以下の画面に従ってアラートルールを作成します。

![スクリーンショット 2020-02-13 23.12.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/9a4087b7-67e7-00df-9768-9b6b4906da99.png)

必要な項目を埋めます。

リソースには監視する対象を選択します。今回[application insightsのurl check](https://docs.microsoft.com/ja-jp/azure/azure-monitor/app/monitor-web-app-availability)を事前に作成していますので選択します。

![スクリーンショット 2020-02-13 23.14.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/689881d6-5107-8718-43f1-6915914b10a4.png)

上記画像の条件で、application insightsのurlチェックの結果をKUSTと呼ばれるクエリで検索し、検索ヒット数が３件よりも大きい場合にmattermostへalertを発砲させるようにします。
画像中の検索クエリでは`success == 1`（成功クエリ数を検索する）となっていますが`success == 0`が妥当です。ここではわざと発砲させるため意図的に1とします。

![スクリーンショット 2020-02-13 23.16.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/9b1b71fd-6a8a-79c6-ed97-2307cfcba0e8.png)

アクショングループ名は上記手順にて作成したアクショングループを選択します。そして「アクションをカスタマイズする」、からWebhook用のカスタムJsonペイロードを入力します。Jsonペイロードでは公式ドキュメントに記載がある通り、[Alert用に用意された変数](https://docs.microsoft.com/ja-jp/azure/azure-monitor/platform/alerts-log-webhook#webhook-actions)がありますので活用することができます。

完了を押下し構築したmattermostにAlert通知されることを確認します。クエリが発行されるのは5分ごとですので気長に待ちましょう。

![スクリーンショット 2020-02-13 23.37.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133866/62e8fc47-ac02-74c7-9b9b-57d85f2bf243.png)

## 終わりに

Azureのアクショングループ設定は直感的かつ、Functionともwebhook経由で簡単に行うことができました。時間があれば次は別のアクションについても試してみたいと思います。

以上