ごった煮

色々な事を書いてます

Azure CLI で Azure Monitor に登録されているアラートの情報を取得する

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

積極的に使っていきましょう。