リソース正常性(Azure Resource Health)をLogic Appsを使ってメール送信

2021-03-07Azure,Logic Apps,Monitor

Logic Apps(ロジックアプリ)を使ってAzure Resource Health(リソース正常性)をメール送信してみました。

Azure Resource Health(リソース正常性)はAzure Portalでも確認出来ます。
リソースの種類やリソース自体を選択して確認する必要があります。
複数のリソースについて確認する場合に面倒だったりします。

REST APIを使うとリソースでリソース正常性が取得出来そうでした。
Logic Apps(ロジックアプリ)のワークフローを使う事でAzure Resource Health(リソース正常性)取得からメール送信まで自動化できそうでした。

そこで今回は最初にREAT APIを使ったAzure Resource Health(リソース正常性)取得を確認します。
その後にAzure Logic Apps(ロジックアプリ)の設定、ワークフロー作成(REST APIを使ったリソース正常性取得、JSONからHTMLへの変更、SendGridを使ったメール送信)をやってみます。

スポンサーリンク

REST APIを利用したAzure Resource Health(リソース正常性)取得

マイクロソフト社のサイトにAzure REST API referenceというドキュメントがあります。

Azure REST API reference

その中にリソース正常性を取得するREST APIがあります。

Availability Statuses – List By Subscription Id

このREST APIを利用するとサブスクリプションのAzureリソースに関するAzure Resource Health(リソース正常性)を取得する事が出来ます。

REST APIの実行手順

Availability Statuses – List By Subscription Idへアクセスします。

使ってみるをクリックします。
Azureへのログイン画面が表示されます。
ログインしてサブスクリプションを選択します。

Availability Statuses - List By Subscription Id

”REST APIを使ってみる”が表示されます。
パラメータはサブスクリプションのみになります。
サブスクリプションIDを選択し実行をクリックします。

Availability Statuses - List By Subscription Id

正常に取得された場合は応答コード200が表示されます。
JSON形式でサブスクリプション内のリソース正常性が一覧で取得出来ます。

Availability Statuses - List By Subscription Id

リソース正常性の監視設定や概要説明についてはこちらでやっています。

Logic Apps(ロジックアプリ)で事前設定

Logic Apps(ロジックアプリ)でREST APIを利用する場合にはAzureの認証が必要となります。
今回の認証方法にはマネージドIDを使いました。

Azure リソースのマネージド ID とは

Logic Apps(ロジックアプリ)のリソース作成

ロジックアプリ自体のリソース作成についてはこちらを参照願います。

Logic AppsでマネージドIDの設定

マネージドIDはシステム割り当てマネージドIDを利用します。
マネージドID有効化後にロールを割り当てます。

マネージドID設定

マネージドIDの割り当てはリソースメニューのIDになります。

リソースIDを有効化後、Azureロールの割り当てを選択します。

マネージドIDにロールを割り当てます。
サブスクリプションに対して閲覧者を割り当てます。

スコープ:ロールの割り当ての適用範囲
リソースグループ:ロールの割り当てるリソースグループ
役割:ロールの割り当て内容

サブスクリプションに対して閲覧者ロールが割り当てられています。

これで事前準備作業は完了です。

Azure Resource Health(リソース正常性)を取得するワークフローを作成

ワークフローの流れ

ワークフローの流れはこのような形になります。

    • HTTPトリガー:REST APIを使ってAzure Resource Health(リソース正常性)をJSON形式で取得
    • JSONの解析:Azure Resource Health(リソース正常性)のJSONファイルを項目化
    • HTMLテーブルの作成:JSONの解析で項目化された内容をHTMLテーブルに変換
    • メールの送信:HTMLテーブルの出力結果をメール送信

HTTPトリガー

ロジックアプリデザイナーを使ってワークフローを作成します。
HTTPトリガーを作成します。
REST APIの画面で確認したURLを設定します。
実行スケジュールはHTTPトリガーで設定しています。

作成手順

ロジックアプリデザイナーのメニューで空のロジックアプリを選択します。

検索欄にHTTPと入力します。
トリガーの中からHTTPを選択します。

 

HTTPで設定する方法とURIの値を確認します。

Availability Statuses – List By Subscription Idへで要求URLを確認します。

方法への設定は要求URL欄の最初の部分を設定します。今回はGETになります。
URIへは要求の内容を設定します。

HTTPトリガーでスケジュール実行設定が出来ます。
Add new parameterで認証、タイムゾーン、開始時刻を選択します。

タイムゾーンや開始日時を設定します。
1日1度朝9時に実行する設定にします。

認証の種類にマネージドIDを選択します。

設定が終わった状態です。

トリガーには繰り返し(スケジュール実行)を選択する事も可能です。
繰り返しトリガーによるスケジュール実行はこちらを参照願います。

JSONの解析アクション

REST APIを実行した際の結果はJSON形式で得られます。
テーブル化する為には解析するアクションが必要になります。
スキーマの生成にはREST APIを実行した結果を利用します。

JSONの解析

検索欄にJSONと入力します。
JSONの解析(データ操作)が表示されますのでこちらを選択します。

サンプルペイロードを使用してスキーマを生成するを選択します。スキーマの入力欄が表示されます。

REST APIを実行した結果(本文)をコピーしスキーマの入力欄に張り付けます。

スキーマが生成されます。

 

※REST API実行時にパラメータに$expand:recommendedactionsを設定するとより詳細な情報が取得出来るのですが、実際にLogic Appsを実行した時にエラーになる事があったので今回は付けずにやっています。

HTTPトリガー出力の本文をJSONの解析の入力として利用します。
コンテンツに本文(HTTP)を選択します。
JSONの解析アクションの設定完了です。

HTMLテーブルの作成(JSON→HTMLテーブルへ変換)

JSONの出力をHTMLテーブルに変換します。
今回はこちらの内容を出力します。

    • 出力内容
      • id:リソースID
      • availabilityState:リソースの利用可否状態
      • status:ステータス内容
HTMLテーブルの作成

検索欄にHTMLと入力します。
HTMLテーブルの作成(データ操作)が表示されますので選択します。

列はカスタムを選択します。
ヘッダー欄が表示されますので、開始にValueを設定しヘッダーや値を設定します。

今回はステータス等の情報を表示するようにしました。

SendGridを使ってメール送信

今回はメール送信にはSendGridを利用します。
Logic Apps(ロジックアプリ)にはSendGridのアクションが用意されています。

SendGridのアカウント作成手順はこちらを参照願います。

SendGrid(メール送信)

検索欄にSendGridと入力します。
メール送信を選択します。

SendGridアカウントの認証設定が表示されます。
接続名とSendGrid APIキーを入力します。

メール送信の設定画面が表示されます。送信元、宛先、件名等を入力します。メールの本文にHTMLテーブルの作成の出力を設定します。

設定完了画面です。

最後にロジックアプリデザイナーで保存を選択します。

Azure Resource Health(リソース正常性)をメール送信(Logic Apps(ロジックアプリ)実行)

Logic Apps(ロジックアプリ)を実行してAzure Resource Health(リソース正常性)をメール送信します。

Logic Apps(ロジックアプリ)実行内容

ロジックアプリデザイナーの画面で実行をクリックします。
成功するとグリーンのチェックが表示されます。

このようなメールでリソース正常性のステータスを把握する事が出来ました。

Logic Apps(ロジックアプリ)を使ってAzure Resource Health(リソース正常性)をメール送信する事が出来ました。
今後もアップデートしていきたいと思います。

Azure PortalでのAzure Resource Health(リソース正常性)確認はこちら。

Logic Apps(ロジックアプリ)を利用してARMテンプレートをエクスポートからメール送信までやってみました。

スポンサーリンク