はじめに
こんにちは、Global Solutions事業部、Azure Build Support Engineerの藤井と申します。今回が初投稿となります。アイレットではとても少数派のAzure 系クラウドエンジニアです。独立系パッケージベンダーの前々職に在職中の2014年2月に初めて、Azureを触ったので、Azure歴はちょうど10年になります。2014年2月というのはWindows Azure からMicrosoft Azure にサービスブランド名が変更され、また日本リージョンが開設された時期でもあります。その後にAzure専業(入社当時)の某クラウドインテグレーターの前職を経て、2023年4月にアイレットに入社しました。
今後もAzure およびMicrosoft関係の話題を中心に、情報を発信していくつもりですので、よろしくお願いいたします。
Metric Alert Ruleについて
Microsoft Azure ではCPU 使用率やメモリ使用量など、標準で提供されているメトリックについて、閾値を独自にMetric Alert Rule設定して超過したときに、アラートを発報させる機能が利用できます。
Metric Alert Ruleを設定する手順について、Azure Portal を使ってGUIベースで設定する手順は、公式ドキュメント「メトリック警告ルールを作成または編集する」で詳しく解説されているものの、Azure CLI を使ってCLIベースで設定する手順は公式ドキュメント「CLI を使用して新しいアラート ルールを作成する」の解説では、情報が十分ではないと感じたため、本記事にて解説します。実際の業務での構築や運用シーンを想定すると、GUIベースで作業するよりも、CLIベースで作業する方が望ましいケースが多いです。
サンプルとして作成するリソースについて
本記事ではMetric Aler Ruleのサンプルを作成するために、併せて必須となる以下のリソースを作成します。
- Resource Group:作成する各種リソースへのアクセス権限を管理する単位
- App Service Plan:メトリックの取得対象として作成
- Action Group:発報されたアラートの通知先を登録
サンプルの手順詳細
- Resource GroupとApp Serivce Planを作成する
- Azure CLIにてResourece Group 東日本リージョンに作成します。
az group create –name “sample-rg” –location “japaneast”
※ Resource Groupの作成については以下を併せて参照
https://learn.microsoft.com/ja-jp/cli/azure/group?view=azure-cli-latest - 上記で作成した”sample-rg”に所属するApp Serivce PlanをAzure CLIにて作成します。
az appservice plan create -g “sample-rg” -n “sample-asp” –sku “S1”
※ App Serivce Plan の作成については以下を併せて参照
https://learn.microsoft.com/ja-jp/cli/azure/appservice/plan?view=azure-cli-latest
- Azure CLIにてResourece Group 東日本リージョンに作成します。
- App Serivce Plan から監視対象の候補となる項目の一覧を取得する
Microsoft Azure において作成される各種リソースは「Resource ID」と呼ばれる識別子を持っています。Resource IDを指定してMetric Alert Ruleで使用できる監視項目の情報を取得します。- Azure CLIにてApp Service Plan のResource IDを取得します。
$aspId = az appservice plan show -g “sample-rg” -n “sample-asp” -o tsv –query “id” - App Service Planで利用できる監視項目の一覧を取得します。行数が多くなるのでコマンドの例のようにjsonファイルで出力するのがおすすめです。
az monitor metrics list-definitions –resource $aspId > ./asp.json - 以下の画像は出力した値の一部です。出力した値の中で、赤枠内の次の項目に着目します。
・name > value の値
・supportedAggregationTypesの値
上記の値を組み合わせることで、アラートの閾値の上限を指定することができます。
- Azure CLIにてApp Service Plan のResource IDを取得します。
- Action Groupを作成しMetric Alert Ruleを設定する
- Azure CLIにてAction Groupを作成します。
az monitor action-group create -a email “sample” “sample@hoge.co.jp” -n “sample-acg” -g “sample-rg” - Azure CLIにてAction Group のResource IDを取得します。
$acgId = az monitor action-group show -n “sample-acg” -g “sample-rg” -o tsv –query “id” - Azure CLI にてMetric Alert Ruleを設定します。サンプルの例では”–condition”のパラメータの値”avg CpuPercentage”(CPU使用率の平均)を指定しています。前述の手順で取得した監視項目の一覧の情報を元に、閾値の条件式を導出しています。
az monitor metrics alert create -n “sample-mal” –scopes $aspId –condition “avg CpuPercentage >= 90” -g “sample-rg” -a $acgId - 下図は作成成功時にターミナルに表示される内容の例です。
- Azure CLIにてAction Groupを作成します。
- Metric Alert Ruleの閾値を変更する。
- Azure CLIにてMetric Alert Rule内で各条件に割り当てられている識別名を確認します。
az monitor metrics alert show -n “sample-mal” -g “sample-rg”
下図の赤枠内の”criteria” > “allOf” 内の”name”の値が各条件に割り当てられている識別名に相当します。 - Azure CLI にて上記(3)で設定したMetric Alert Ruleの閾値を「CPU使用率90%」から「CPU使用率80%」に変更します。” –remove-condition”の値として、上記(1)で確認した各条件に割り当てられた識別名の値を指定します。
az monitor metrics alert update -n “sample-mal” –remove-condition “cond0” –add-condition “avg CpuPercentage >= 80” -g “sample-rg”
下図の赤枠内の”threshold”の値が”80.0”で更新されています。
- Azure CLIにてMetric Alert Rule内で各条件に割り当てられている識別名を確認します。
おわりに
過去に自身がAzure CLIによる、Metric Alert Ruleの設定を試みたときに、以下の二点について公式ドキュメントの情報を見つけることができず、戸惑ったため本記事を執筆しました。
- “az monitor metrics alert create”にてMetric Alert Ruleを作成するときに、” –condition”のパラメータの値として指定する閾値の条件式の形式と、設定できる監視項目名を確認する方法
- “az monitor metrics alert update”にて、Metric Alert Ruleの閾値を変更するときに、削除対象となる変更前の条件を、”–remove-condition”で指定するときに、具体的にどのような値を指定すべきかと、指定する値を確認する方法
Azure CLIの各コマンドについて、「サンプルの手順詳細」ではシナリオ上、最低限のパラメータのみ指定しており、全てのパラメータを網羅していません。業務で利用するときは、「参考情報」でご案内している、各コマンドの公式ドキュメントよりできる限り全てのパラメータの意味と役割をご確認ください。
アイレット株式会社のGlobal Solutions事業部では、お客様のビジネス変革を実現しながら、最新のデータソリューションの導入を加速できるように設計されたデータ分析ソリューションとデータサービスの幅広いポートフォリオを提供しています。ビジネスの成功こそ、私たちが追求するものです。お困りの際はぜひ一度お気軽にお問い合わせください。
参考情報
[1] https://learn.microsoft.com/ja-jp/azure/azure-monitor/alerts/alerts-create-metric-alert-rule
[2] https://learn.microsoft.com/ja-jp/azure/azure-monitor/alerts/alerts-create-rule-cli-powershell-arm
[3] https://learn.microsoft.com/ja-jp/cli/azure/monitor/metrics?view=azure-cli-latest#az-monitor-metrics-list-definitions
[4] https://learn.microsoft.com/ja-jp/cli/azure/monitor/metrics/alert?view=azure-cli-latest