上限付きのサブスクリプションで使っていると地味に SSD のディスクってコミットから削られていきます。
ということで、Azure Policy を使って、SSD ディスクを見つけるポリシーを書いてみました。
また、検知するだけだとダッシュボードを見に行く必要があるので、Log Analytics を使って、アラートも作ってみます。
Azure Policyの定義
下の JSON を見てもらえれば分ると思いますが、type が Microsoft.Compute/disks のもので、SKU の名前が SSD の場合、アクティビティログに出すようにしました。
{ "if": { "allof": [ { "field": "type", "equals": "Microsoft.Compute/disks" }, { "field": "Microsoft.Compute/disks/sku.name", "in": [ "Premium_LRS", "StandardSSD_LRS", "UltraSSD_LRS" ] } ] }, "then": { "effect": "audit" } }
ポリシーを作ったら、ログをひっかけるときに使う、定義 ID をコピーしておきます。
Log Analytics のクエリと Azure Monitor の設定
続いて、Log Analytics のクエリです。
アクティビティログを見ると、OperationNameは、"Microsoft.Authorization/policies/audit/action" の様です。
また、ログの Properties から、policies 要素を取ってます。この部分もうちょっと改善したいところですが。。
また、policies を展開した 変数 a には、ポリシーのプロパティが入っているので文字列として扱って、ポリシーの 定義 ID(policyDefinitionId) をひっかけてます。
AzureActivity | where OperationName == "Microsoft.Authorization/policies/audit/action" | extend a = extractjson("$", Properties) | where a contains "8630d37b-2d65-44ff-be11-a0763c3c31ea"
Azure Policy のチェック間隔は、24 時間に1回なので、アラートは設定できる最大の 1 時間に 1 回チェックするようにしました。
ポリシーと組み合わせるといろいろできそうなので積極的に使ってみようと思います。