はじめに
以前、次のブログを書きました。
Resource Graph のデータを Log Analytics に投入する
このブログでは、Resource Graph に記録される変更分析のデータをもとに Azure Monitor でアラートを発火したかったので、Logic Apps を使って Resource Graph のデータを Log Analytics に投入しました。仕方がないので仕組みを自作した形です。
そんな中で「Azure Moniro のログアラートが Resource Graph をサポートする」というパブリックプレビューが発表になりました。
Public Preview: Azure Log Alerts support for Azure Resource Graph (ARG)
「これを使えば、自前の仕組みがなくても Resource Graph のデータをもとに Azure Monitor でアラートが発火できるのでは」ということで、実際に試しました。
とりあえず検索してみる
Log Analytics で arg("").[テーブル名] という構文を使うことで、Resource Graph のデータを取得できます。
気になった通常の Kusto との違いは次の3点です。ちょっと不便ですが慣れれば許せる範囲です。
- Resource Graph 側のプロパティが候補にでてこない
- Resource Graph 側のプロパティには赤波線が出る
- 時間の範囲が使えない(おそらく Resource Graph には TimeGenerated フィールドがないから)
ですので、時系列のテーブル内の特定の時間のログだけを検索したい場合には、時間を含むプロパティを利用してクエリ内でフィルタする必要があります。
アラートを設定してみる
Kusto の書き方さえ分かれば、後は通常のログアラートと同じ要領でアラートを設定するだけです。
上に記載した時間の範囲が使えない注意点がログアラートの設定にも該当しますので、ログアラートのクエリ内に対象にしたい時間を明記します。
また、アラートルールで Resource Graph を検索する際にはアラートルールに対して Managed ID の設定が必要です。今回はシステム割り当てマネージド ID を選択したうえで、該当のマネージド ID に対してサブスクリプションの閲覧者権限を振りました。
ただし、システム割り当て Managed ID を選択すると、アラートルールごとにマネージド ID が出来上がってしまいます。サブスクリプションごとの RBAC の割り当ての上限が4000なことを踏まえると、アラートルールを沢山作る場合にはユーザ割り当てマネージド ID の利用を検討したほうが良いでしょう。
アラートを受信してみる
今回は2つのアラートを設定してみました。
一つ目が Update Manager によるパッチ適用が成功した場合です。
もう一つが 変更分析によって新しい変更が検出された場合です。
条件を満たせば後は普通のログアラートと同じです。アクショングループで指定したアクションが実行されます。今回はメールを送るアクショングループを選択しました。その結果、実際にメールが届きました。メール内のログクエリへのリンクをクリックすると Log Analytics が開いて、条件に合致したクエリが表示されます。Log Analytics 内のデータを利用したログアラートと全く同じ挙動です。
おわりに
Log Analytics から Resource Graph のデータを検索したうえで、ログアラートも試しました。Update Manager によるパッチの適用結果や変更分析の検出結果をメールで通知したいという要望を実現できる良い機能です。GA が待ち遠しいです。
Note
- 当サイトは個人のブログです。このブログに示されている見解や意見は個人的なものであり、所属組織の見解や意見を表明するものではありません。
- 公開情報を踏まえて正確な情報を掲載するよう努めますが、その内容の完全性や正確性、有用性、安全性、最新性について一切保証しません。
- 添付文章やリンク先などを含む本サイトの内容は作成時点でのものであり、予告なく変更される場合があります。