📈

Azure Resouce Graph の検索結果をもとにアラート通知する

2023/08/03に公開

はじめに

Azure におけるアラートは基本的には Azure Monitor を活用するケースが多いですが、一部のサービスは Log Analytics ワーク スペースにログを記録するための診断設定がなく、Azure Monitor アラートが使用できないケースがあります。
最近だと Azure Automation の一部として提供していた Update Management が Update Management センターに置き換わるのですが、現時点では診断設定がないため、Azure Monitor を使用したパッチ適用失敗などのアラート通知ができません。そのため、今回は Azure Resouce Graph の結果をもとにアラート通知する仕組みを作ります。

設定

以下を参考に Logic Apps で実装します。
https://learn.microsoft.com/ja-jp/azure/governance/resource-graph/tutorials/logic-app-calling-arg

Logic Apps を作成して、[空のロジック アプリ] を開きます。


[コード ビュー] をクリックします。


参考のドキュメントにあるサンプルをそのまま貼り付けます。


[デザイナー] をクリックします。


[Recurrence] トリガーをクリックし、周期を設定します。(例では 1 日単位)


[HTTP] コネクタをクリックし、Update Management センターのパッチ適用失敗を抽出するクエリに変更し、保存します。

{
  "query": "patchinstallationresources | where type =~ 'microsoft.compute/virtualmachines/patchinstallationresults' or type =~ 'microsoft.hybridcompute/machines/atchinstallationresults' | parse type with typeID '/patchinstallationresults' | where properties.lastModifiedDateTime > ago(1d) | where properties.status != 'Succeeded' | parse id with * 'Machines/' resourceName '/patchInstallationResults/' * | project resourceName, properties.status,properties.startDateTime, properties.lastModifiedDateTime, properties.startedBy"
}

[ID] に移動し、システム割り当てマネージド ID をオンにします。


[Azure ロールの割り当て] をクリックし、権限を割り当てます。今回は検証なので、閲覧者を割り当てました。



ここまでで一旦テストをします。[トリガーの実行] > [実行] をクリックします。


問題なく設定できていれば、以下のように実行の履歴に成功で表示されます。


成功した実行履歴をクリックし、[HTTP] コネクタを開いて、出力の箇所でクエリの結果を確認します。以下のように結果が表示されていれば問題ありません。この結果の json は後で使うのでどこかにコピーしておきます。


あとは通知の設定を行います。まず出力件数を取得します。[+新しいステップ] から [データ操作] > [JSON の解析] を選択し、 コンテンツ欄で [本文] を選択します。


[サンプルのペイロードを使用してスキーマを作成する] を選択し、さきほど確認したクエリ結果の json を貼り付け、[完了] をクリックすると、スキーマ欄に自動入力されます。



次にクエリ結果がある場合のみ通知するため、条件設定を入れます。[制御] > [条件] を選択し、条件に [count] [次の値より大きい] [0] を入力します。


True 側でメールの設定を行います。今回は Outlook でのメール通知にしています。[+新しいステップ] をクリックし、[Office 365 Outlook] の [メールの送信 (V2)] を選択します。初めてこのコネクタを利用する場合は認証を求められるので、メール送信アカウントでログインしてください。


以下のように送信先や本文を指定します。本来であれば、json を加工してもう少し見やすい形でメールに記載すべきですが、今回はテストということでそのまま HTTP レスポンスの本文を張り付けています。


False のほうに一応 [制御] > [終了] を設定し、状態を [成功] にしておきます。(これはなくても動きますが)


すべての設定が完了したので、[保存] をクリックして [概要] に移動します。

動作確認

[トリガーの実行] をクリックします。


実行の履歴で成功していることを確認します。


以下のようにメールが出てきました。

まとめ

今回は Azure Resource Graph の検索結果をもとにしたアラートを作成してみました。こちらを使用することで、Azure Monitor の診断設定に対応していないサービスに関しても通知を作成することが可能になります。

Microsoft (有志)

Discussion