Azure を使っていると監視で Azure Monitor を使うと思いますが、毎回似たようなことを手動でやるのもしんどいので CLI でいい感じにした方が色々楽ですよね
ということで今回は、Azure CLI でAzure Monitor を触るための第一歩をまとめます。
Azure CLI でメトリックアラートの情報を取得する
とりあえず az コマンドを使えるように Azure CLI を入れるか Windows Terminal で Cloud Shell に繋ぎましょう
以下のコマンドで Azure Monitor に登録されているメトリックアラートの情報が取得できます。
az monitor metrics alert list
このコマンドで、現在選択しているサブスクリプションのすべてのアラートが表示されます。(デフォルトだとJson形式)
[ { "actions": [ { "actionGroupId": "アクショングループid", "webhookProperties": null } ], "autoMitigate": null, "criteria": { "additionalProperties": null, "allOf": [ { "criterionType": "StaticThresholdCriterion", "dimensions": [], "metricName": "Http5xx", "metricNamespace": "microsoft.web/sites", "name": "cond0", "operator": "GreaterThan", "threshold": 0.0, "timeAggregation": "Count" } ], "odatatype": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria" }, "description": "High CPU", "enabled": true, "evaluationFrequency": "0:01:00", "id": "リソースid", "lastUpdatedTime": null, "location": "global", "name": "CLI_Test", "resourceGroup": "Staging", "scopes": [ "監視ターゲットid" ], "severity": 2, "tags": null, "type": "Microsoft.Insights/metricAlerts", "windowSize": "0:05:00" } ]
結果は、上のような感じです。
az monitor alert list
というコマンドもありますが、将来的に廃止されるようなので
az monitor metrics alert list
を使用しましょう。
結果をフィルタする
単純に json でデータをドカンと落としても、ほとんどの情報は、必要のないデータなので必要なデータだけ出すようにフィルタを掛けましょう。 Azure CLI では、結果を jmespath 方式でフィルタ出来ます。
az monitor alert list --query "jmespathのクエリ"
という形でフィルタが出来ます。
アラート自体のリソースid と名前だけを表示するようにするクエリは、以下のような感じです。
az monitor alert list --query "[*].[id,name]"
これを実行すると以下のような結果が返されます。
[ [ "リソースid", "リソース名" ] ]
まとめ
Azure CLI で簡単にAzure Monitor の情報を取得できました。
CLI からアラートの作成なども行えるので、よくある VM のリソース監視や DB のリソース監視などのように大体みんな同じようなアラートを設定するような場合に、一つテンプレートを作っておけば簡単に同じようなアラートを展開できるためミスも減らせて非常に有意義です。
積極的に使っていきましょう。