Logic Appsを使ったSlackへのAzure Monitorアラート通知方法

2021-02-23Azure,Logic Apps,Monitor

Azure Monitorのアラートを通知をSlackにメッセージ投稿する手順の紹介です。
Azure Logic Apps(ロジックアプリ)を利用して実施しています。

Azure Monitorのアラート通知はアクショングループを利用して行われます。
アクショングループを利用してLogic Appsを呼び出す事ができます。
Logic AppsにはSlack通知するコネクタが用意されておりメッセージ投稿する事ができます。
組わせて利用する事によりアラート通知をSlackへ通知する事ができます。

仮想マシンのCPU使用率(メトリックアラート(静的))を例に手順を紹介します。

※本記事内ではAzure Logic Apps(ロジックアプリ)をLogic Appsとして表記しています。
※Logic Appsは従量課金(マルチテナント)を利用しています。

スポンサーリンク

Azure MonitorのアラートをSlackへ通知するワークフローを作成

アラートの通知内容はスキーマとして定義されている

アラートの通知内容はスキーマとして定義されています。
JSON形式で定義されています。

アラートのペイロードのサンプル(共通アラート スキーマ)

このサンプルペイロードを利用してトリガーを作成するとLogic Appsでアラート通知を扱えます。
アラートルール作成時に詳細設定にあるカスタムプロパティも扱えます。

※共通のアラートスキーマを利用します。

ワークフロー

ワークフローは大きく分けて3段階に分かれます。

    • Azure Monitorのアラート通知をRequestのトリガーで取得
    • データ操作を使用して、Slack通知に利用する値を取得
    • Slackにメッセージ投稿するアクションを作成

Logic Appsのリソース作成手順やトリガーやアクションの概要についてはこちらで紹介しています。

Requestのトリガーを作成

トリガーを作成します。
RequestのトリガーでAzure Monitorのアラート通知を受信します。
サンプルペイロードは公式サイトの内容を利用します。

アラートのペイロードのサンプル(共通アラート スキーマ)

トリガー作成
トリガーの追加でRequestコネクタを選択します。
トリガーにはWhen a HTTP request is receivedを使用します。
Azure Logic Apps のトリガー選択画面(Requestトリガーを選択)
Azure Logic Apps Requestトリガー選択(HTTP request選択)

サンプルペイロードを使用してスキーマを生成するを選択します。
サンプルのJSONペイロードに公式サイトのサンプルを貼り付けます。

アラートのペイロードのサンプル(共通アラート スキーマ)

Azure Logic Apps のRequestトリガーサンプルペイロード設定
サンプルペイロード設定(Azure Monitorのアラートのペイロードのサンプル)
Azure Monitorのアラート通知に対応するスキーマが生成されます。
同時にHTTP POST URLも生成されます。
Azure Logic Apps のRequestトリガースキーマ生成後画面(Azure Monitorサンプルペイロード)

Data Operationsのアクションを作成

アラート通知のペイロードから値を取得するアクションを設定します。
リソース名はconfigurationItemsに含まれます。
カスタムプロパティはcustomPropertiesに含まれます。
Data Operationsのコネクタを利用して値を取得します。

Azure Logic Apps でデータの操作を実行する

Data Operationsのアクションを設定

configurationItemsからリソース名を取得します。
Data Operations newのコネクタでJoinを選択します。

結合アクション

を選択しFromにconfigurationItemsを設定します。

Join Withは区切り文字になります。
,(カンマ)を設定しています。

Azure Logic Apps のData Operations newのアクション追加画面
Azure Logic Apps のData Operations newのアクション一覧(Join選択)
Joinのアクション設定(Data Operations newのアクション)

customPropertiesからアラートルールで設定したキーや値を取得します。
Data Operations newのコネクタでComposeを選択します。

作成アクション

を選択しInputsにcustomPropertiesを設定します。

Azure Logic Apps のData Operations newのアクション一覧(Compose選択)
Composeのアクション設定(Data Operations newのアクション)

Slackのアクションを作成

Slackへメッセージ投稿するアクションを作成します。
Slackの接続作成などの手順についてはこちらで紹介しています。

Slackのメッセージ投稿するアクションを作成
アクションの追加でSlackコネクタを検索します。
メッセージの投稿(V2)を選択します。
Logic AppsでSlackのアクション追加画面(メッセージ投稿を選択)
チャネル名ではメッセージ投稿するチャネルを選択します。
メッセージテキストにはSlackへ通知するアラート内容を設定します。
通知内容はサンプルペイロードを参考に設定しています。
メッセージ投稿(V2)設定画面(Logic Apps Slackのアクション)
Azure MonitorアラートをSlackへメッセージ投稿する設定例(Logic Apps のSlackアクション)

完成したワークフロー

完成したワークフローです。
自動的にFor eachのアクションが追加されています。
Slackのメッセージ投稿(V2)のアクションでmetricNameやmetricValueといった項目を追加しました。
これらはallOfプロパティの配列内に含まれます。
値を取得する為にFor eachが利用されています。

For each

完成したワークフロー
完成したワークフローです。
For eachのアクションが追加されています。
For eachのSelect An Output From Previous StepsにallOfが設定されています。
Azure MonitorアラートをSlackへメッセージ投稿するLogic Apps ワークフロー例
ワークフローのFor each設定内容

—広告—

Azure Monitorのアラート通知設定

アクショングループを設定

Logic Appsのワークフロー呼び出すアクショングループを作成します。
アクショングループのアクションタブで設定します。

アクショングループの設定
アクションタイプにロジックアプリを指定します。
使用するLogic Appsのワークフローを指定します。
名前を設定します。
Azure Monitorのアクショングループ作成画面でLogic Appsのアクションタイプを選択
Azure Monitorのアクショングループで通知するLogic Apps選択
Azure MonitorのアクショングループでLogic Appsのアクションタイプを設定した画面例

アラートルールを設定

アラートルールでロジックアプリ呼び出すアクショングループを選択します。
仮想マシン(Azure VM)のCPU使用率を検知するアラートルールを使用しています。
検証用に5%より大きいCPU使用率でアラートが発生するようにしています。
カスタムプロパティも設定しています。

アラートルールを設定
Logic Appsのワークフローを呼び出すアクショングループを設定します。 Azure Monitorのメトリック警告設定例(CPU使用率)
Azure Monitorのメトリック警告設定例(アクショングループ)
カスタムプロパティを設定しています。 Azure Monitorのメトリック警告設定例(カスタムプロパティ)
アラートロジックでCPU使用率が5%より大きい場合にアラートとしています。 Azure Monitorのメトリック警告設定例(CPU使用率のアラートロジック)

SlackへAzure Monitorのアラート通知

アラートを発生させて、Slackへのメッセージ投稿内容を確認します。

Slackへの通知内容
アラート通知内容がSlackへメッセージ投稿されています。
キーやリソース名も表示されています。
Azure MonitorのアラートをSlackへ通知した例

最後に

Azure Monitorのアラート通知をSlackへメッセージ投稿する手順について確認しました。
Logic Appsのワークフローを利用して簡単に設定できる事が分かりました。

アラートの種類によってワークフローを分岐して通知内容を変えたりといった事もできそうです。
今回作成した手順の場合は、アラート回復時もSlackへメッセージ投稿されます。
この編もmonitorConditionの値を取得して条件分岐する事で発生時のみ通知という事もできそうです。

引き続き色々試してみたいと思います。

ワークフローの確認には、アクショングループのテスト通知を利用すると便利です。
テスト通知のアラート種類も選択できます。
アクショングループのテスト通知についてはこちらで紹介しています。

スポンサーリンク