Log AnalyticsからAzure Resource Graphを通してアラートを上げる
これは何
先日、こちらの機能がパブリックプレビューで追加されました。
そもそも、Azure Resource Graph(ARG)には、現在のAzure環境のあらゆる情報が格納されています。ARGにクエリを投げることで、お望みの形式にフィルタしたうえでそれらの情報を集計することが可能です。一方で、ARGは過去の状態を保持しません。
この機能では、Log Anaytics のクエリからARGに対してクエリをかけることができ、それによってLog Anaytics クエリに紐づくログアラートのソースとして利用できる、というのがメリットになります。
つまり、実質的にARGのテーブルに格納されているあらゆる情報=Azure環境のあらゆる現在の構成情報をもとにアラートが発報できるという優れものです。
本記事では簡単にこちらの機能を試します。
Log Anaytics から ARG を呼び出してみる
最近コスト最適化に興味があり、こんなクエリを書いてみました。接続されていないディスクを検出するものです。接続されていないだけで毎回アラートを出すのもやりすぎ感があったので、接続されていない且つSKUのTierが高いものを洗い出すクエリとしました。
arg("").Resources
| where type =~ "Microsoft.Compute/disks"
| where properties.diskState =~ "Unattached"
| where sku.tier in ("Premium", "Standard")
きちんと応答が得られていることを確認し、[+新しいアラートルール]からアラートを設定してみます。
アラートの作成
[条件]は以下のように設定しました。
[アクション]では、シンプルにメール送付するアクショングループを選択
[詳細]では、各種情報を入れますが、[Identity]のところでマネージドIDを選択します。ARGを読みに行くにあたって、注釈にもある通りルールの作成後に権限の付与が必要となります。
作成後、アラートルールの概要画面からサブスクリプションの閲覧者権限をこのマネージドIDに付与します。
アラート受信確認
5分ほど待っていると、アラートメールが来ていることがか確認できました。以降はうるさいのでアラートルールを無効化しておきます。
おわり
今回はコスト最適化のノリで、Unattachedなディスクを検出するという例でやってみましたが、本当にいろいろなユースケースが生まれると思います。ぜひ使いこなしたいところですね。
Reference
Discussion