REST API を使用して Azure リソースのカスタム メトリックを Azure Monitor メトリック ストアに送信する
この記事では、Azure リソースのカスタム メトリックを REST API 経由で Azure Monitor メトリック ストアに送信する方法について説明します。 メトリックが Azure Monitor に送信されると、それらを使用して、標準メトリックを使用して実行できるすべての処理を実行できます。 たとえば、グラフやアラートを生成し、メトリックを他の外部ツールにルーティングできます。
Note
REST API では、Azure リソースのカスタム メトリックの送信のみを許可します。 他の環境またはオンプレミスにあるリソースのメトリックを送信するには、Application Insights を使用します。
メトリックを出力するためのサービス プリンシパルを作成および承認する
サービス プリンシパルとは、そのトークンを使用して、特定の Azure リソースを認証し、アクセス権を付与することができる、Azure Active Directory を使用するアプリケーションです。 リソースには、ユーザー アプリ、サービス、自動化ツールが含まれます。
Azure Active Directory にアプリケーションを登録して、サービス プリンシパルを作成します。
トークンの要求時に使用するアプリのテナント ID、新しいクライアント ID、およびクライアント シークレットの値を保存します。
前の手順の一環として作成されたアプリに、メトリックを発行するリソースへの監視メトリック発行者アクセス許可を付与します。 アプリを使用して多くのリソースに対してカスタム メトリックを発行する予定である場合は、リソース グループまたはサブスクリプション レベルでこれらのアクセス許可を付与できます。
リソースの概要ページで、[アクセスの制御 (IAM)] を選択します。
[追加] を選択し、ドロップダウン リストから [ロールの割り当ての追加] を選択します。
検索フィールドで "監視メトリック" を検索します。
[監視メトリック発行者] をリストから選択します。
[メンバー] を選択します。
[選択] フィールドでアプリを検索します。
一覧から自分のアプリを選択します。
[選択] をクリックします。
[レビューと割り当て] を選択します。
承認トークンを取得する
コマンド プロンプトで、または Postman などのクライアントを使用して、次の要求を送信します。
curl -X POST 'https://login.microsoftonline.com/<tennant ID>/oauth2/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<your apps client ID>' \
--data-urlencode 'client_secret=<your apps client secret' \
--data-urlencode 'resource=https://monitor.azure.com'
次のような応答本文が表示されます。
{
"token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"expires_on": "1672826207",
"not_before": "1672739507",
"resource": "https://monitoring.azure.com",
"access_token": "eyJ0eXAiOiJKV1Qi....gpHWoRzeDdVQd2OE3dNsLIvUIxQ"
}
次の HTTP 要求で使用するために、応答のアクセス トークンを保存します。
REST API 経由でメトリックを送信する
次の JSON をファイルに貼り付けます。 custommetric.json としてローカル コンピューターに保存します。 過去 20 分以内になるように time パラメーターを更新します。 出力からの時間が 20 分を超えたメトリックはストアに保存できません。 メトリック ストアは、アラート設定やリアルタイムでのグラフ作成に最適化されています。
{ "time": "2023-01-03T11:00:20", "data": { "baseData": { "metric": "QueueDepth", "namespace": "QueueProcessing", "dimNames": [ "QueueName", "MessageType" ], "series": [ { "dimValues": [ "ImagesToProcess", "JPEG" ], "min": 3, "max": 20, "sum": 28, "count": 3 } ] } } }
次の変数を使用して、次の HTTP POST 要求を送信します。
- location: メトリック出力対象のリソースのデプロイ リージョン。
- resourceId: メトリック追跡対象の Azure リソースのリソース ID。
- accessToken: 前の手順で取得した承認トークン。
curl -X POST 'https://<location>/.monitoring.azure.com<resourceId>/metrics' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer <accessToken>' \ -d @custommetric.json
JSON ファイルのタイムスタンプと値を変更します。 JSON ファイルの 'time' 値は UTC である必要があることに注意してください。
前の 2 つの手順を数回繰り返して、数分間のデータを作成します。
トラブルシューティング
プロセスのどこかでエラー メッセージを受信した場合は、次のトラブルシューティング情報を考慮してください。
- サブスクリプションまたはリソース グループまたはリソースに対してメトリックを発行できない場合は、[アクセスの制御 (IAM)] でアプリケーションまたはサービス プリンシパルに監視メトリック発行者ロールが割り当てられていることを確認します。
- ディメンション名の数が値の数と一致することを確認します。
- カスタム メトリックをサポートしていないリージョンに対してメトリックを出力しているのではないことを確認します。 「サポートされているリージョン」を参照してください。
メトリックの表示
Azure portal にサインインします。
左側のメニューで [監視] を選択します。
[モニター] ページで、 [メトリック] を選択します。
集計の期間を [過去 1 時間] に変更します。
[スコープ] ドロップダウン リストで、メトリックを送信する対象のリソースを選択します。
[メトリックの名前空間] ドロップダウン リストで、queueprocessing を選択します。
[メトリック] ドロップダウン リストで、QueueDepth を選択します。
次のステップ
カスタム メトリックの詳細を確認します。