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 のリソース監視などのように大体みんな同じようなアラートを設定するような場合に、一つテンプレートを作っておけば簡単に同じようなアラートを展開できるためミスも減らせて非常に有意義です。
積極的に使っていきましょう。