Azure Resouce Graph の検索結果をもとにアラート通知する
はじめに
Azure におけるアラートは基本的には Azure Monitor を活用するケースが多いですが、一部のサービスは Log Analytics ワーク スペースにログを記録するための診断設定がなく、Azure Monitor アラートが使用できないケースがあります。
最近だと Azure Automation の一部として提供していた Update Management が Update Management センターに置き換わるのですが、現時点では診断設定がないため、Azure Monitor を使用したパッチ適用失敗などのアラート通知ができません。そのため、今回は Azure Resouce Graph の結果をもとにアラート通知する仕組みを作ります。
設定
以下を参考に Logic Apps で実装します。
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 の診断設定に対応していないサービスに関しても通知を作成することが可能になります。
Discussion