次の方法で共有


Azure Monitor の Azure Resource Manager メトリック

Azure でリソースを作成および管理するとき、要求は Azure のコントロール プレーンである Azure Resource Manager を通じて調整されます。 この記事では、Azure に対して行われたコントロール プレーン要求の量と待機時間を監視する方法について説明します。

これらのメトリックを使用すると、サブスクリプション全体のコントロール プレーン要求のトラフィックと待機時間を監視できます。 たとえば、特定の状態コードでフィルター処理して、調整された要求を調べサーバー エラーを調べることにより、要求がいつ調整されたのか、またはいつ失敗したのかを確認できます。

メトリックは、最大 3 か月間 (93 日間) 使用でき、同期要求のみを追跡します。 VM の作成のようなシナリオの場合、メトリックは実行時間の長い非同期操作のパフォーマンスや信頼性を表すものではありません。

Azure Resource Manager メトリックへのアクセス

コントロール プレーン メトリックには、Azure Monitor REST API、SDK、Azure portal を使用して ("Azure Resource Manager" メトリックを選択することによって) アクセスできます。 Azure Monitor の概要については、Azure Monitor のメトリックに関するページを参照してください。

コントロール プレーン メトリックにアクセスするためのオプトインまたはサインアップのプロセスはありません。

ベアラー トークンを取得して Azure に要求を行う方法のガイダンスについては、Azure REST API リファレンスのページを参照してください。

メトリック定義

Azure Monitor での Azure Resource Manager メトリックの定義には、2017-12-01-preview API バージョンからのみアクセスできます。 定義を取得するには、"00000000-0000-0000-0000-000000000000" をご自身のサブスクリプション ID に置き換えて次のスニペットを実行します。

curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metricDefinitions?api-version=2017-12-01-preview&metricnamespace=microsoft.resources/subscriptions' \
--header 'Authorization: bearer {{bearerToken}}'

このスニペットでは、メトリック スキーマの定義が返されます。 特に、このスキーマには、Monitor API でフィルター処理できるディメンションが含まれています。

ディメンション名 説明
ResourceUri 特定のリソースの完全なリソース ID。
RequestRegion コントロール プレーンで場所が必要とされる、"EastUS2" のような Azure Resource Manager リージョン。 このリージョンは、リソースの場所ではありません。
StatusCode コントロール プレーン要求に対する Azure Resource Manager からの応答の種類。 あり得る値は次のとおりです (ただし、これらに限定されない)。
- 0
- 200
- 201
- 400
- 404
- 429
- 500
- 502
StatusCodeClass Azure Resource Manager から返される状態コードのクラス。 次のいずれかの値になります。
- 2xx
- 4xx
- 5xx
Namespace リソース プロバイダーの名前空間。"MICROSOFT.COMPUTE" のように、すべて大文字にします
ResourceType 要求を作成または送信した対象の Azure のリソースの種類。"VIRTUALMACHINES" のように、すべて大文字にします
方法 Azure Resource Manager に対する要求で使用される HTTP メソッド。 次のいずれかの値になります。
- GET
- HEAD
- PUT
- POST
- PATCH
- DELETE

次に、Azure Resource Manager メトリックについて調べるのに役立つシナリオを見てみましょう。

Azure portal を使用してトラフィックと待機時間のコントロール プレーン メトリックを照会する

まず、ポータルで [Azure Monitor] ブレードに移動します。

[メトリックについて調べる] が強調表示された、Azure portal の [モニター] ページに移動するスクリーンショット。

[メトリックについて調べる] を選択した後、1 つのサブスクリプションを選択してから、Azure Resource Manager メトリックを選択します。

Azure portal で 1 つのサブスクリプションと Azure Resource Manager のメトリックを選んだスクリーンショット。

次に、[適用] を選択した後、カスタム フィルター処理と分割を使用して、Traffic または Latency コントロール プレーン メトリックを視覚化できます。

フィルターやディメンションで分割するオプションが示された、Azure portal のメトリック視覚化のスクリーンショット。

REST API を使用してトラフィックと待機時間のコントロール プレーン メトリックを照会する

Azure で認証された後は、サブスクリプションのコントロール プレーン メトリックを取得するための要求を行うことができます。 このスクリプトで、"00000000-0000-0000-0000-000000000000" を、お使いのサブスクリプション ID に置き換えます。 このスクリプトでは、2 日間の平均要求待機時間 (秒) と合計要求数を 1 日間隔で分割して取得します。

curl --location --request GET "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=average,count&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z" \
--header "Authorization: bearer {{bearerToken}}"

Azure Resource Manager メトリックの場合は、Latency メトリックを使用し、'count' 集計を含めることでトラフィック数を取得できます。 次のように要求の JSON 応答が表示されます。

{
    "cost": 5758,
    "timespan": "2021-11-01T00:00:00Z/2021-11-03T00:00:00Z",
    "interval": "P1D",
    "value": [
        {
            "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/metrics/Latency",
            "type": "Microsoft.Insights/metrics",
            "name": {
                "value": "Latency",
                "localizedValue": "Latency"
            },
            "displayDescription": "Latency data for all requests to Azure Resource Manager",
            "unit": "Seconds",
            "timeseries": [
                {
                    "metadatavalues": [],
                    "data": [
                        {
                            "timeStamp": "2021-11-01T00:00:00Z",
                            "count": 1406.0,
                            "average": 0.19345163584637273
                        },
                        {
                            "timeStamp": "2021-11-02T00:00:00Z",
                            "count": 1517.0,
                            "average": 0.28294792353328935
                        }
                    ]
                }
            ],
            "errorCode": "Success"
        }
    ],
    "namespace": "microsoft.resources/subscriptions",
    "resourceregion": "global"
}

トラフィック数のみを取得する場合は、'count' 集計で Traffic メトリックを使用できます。

curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Traffic&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z' \
--header 'Authorization: bearer {{bearerToken}}'

この要求の応答は次のようになります。

{
    "cost": 2879,
    "timespan": "2021-11-01T00:00:00Z/2021-11-03T00:00:00Z",
    "interval": "P1D",
    "value": [
        {
            "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/metrics/Traffic",
            "type": "Microsoft.Insights/metrics",
            "name": {
                "value": "Traffic",
                "localizedValue": "Traffic"
            },
            "displayDescription": "Traffic data for all requests to Azure Resource Manager",
            "unit": "Count",
            "timeseries": [
                {
                    "metadatavalues": [],
                    "data": [
                        {
                            "timeStamp": "2021-11-01T00:00:00Z",
                            "count": 1406.0
                        },
                        {
                            "timeStamp": "2021-11-02T00:00:00Z",
                            "count": 1517.0
                        }
                    ]
                }
            ],
            "errorCode": "Success"
        }
    ],
    "namespace": "microsoft.resources/subscriptions",
    "resourceregion": "global"
}

メトリック サポート ディメンションの場合、対応するメトリック値を表示するには、ディメンション値を指定する必要があります。 たとえば、ARM への要求が成功した場合の Latency に注目する場合は、StatusCodeClass ディメンションを 2XX でフィルター処理する必要があります。

仮想ネットワークやロード バランサーのようなネットワーク リソースのサブスクリプションで行われた要求の数を確認する場合は、MICROSOFT.NETWORKNamespace ディメンションをフィルター処理する必要があります。

調整された要求の確認

調整された要求のみを表示するには、429 の状態コード応答のみになるようにフィルター処理する必要があります。 REST API 呼び出しの場合、フィルター処理は $filter プロパティと StatusCode ディメンションを使用して実行します。そのためには、次のスニペットの要求の最後にあるように、$filter=StatusCode eq '429' を追加します。

curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count,average&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCode%20eq%20%27429%27' \
--header 'Authorization: bearer {{bearerToken}}'

ポータルで直接フィルター処理することもできます。Azure portal で、HTTP 状態コードを 429 応答のみにフィルター処理するスクリーンショット。

サーバー エラーの確認

調整された要求を確認するのと同様に、5xx 応答のみをフィルター処理して、サーバー エラー応答コードを返した "すべて" の要求を表示します。 REST API 呼び出しの場合、フィルター処理は $filter プロパティと StatusCodeClass ディメンションを使用して実行します。そのためには、次のスニペットの要求の最後にあるように、$filter=StatusCodeClass eq '5xx' を追加します。

curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count,average&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCodeClass%20eq%20%275xx%27' \
--header 'Authorization: bearer {{bearerToken}}'

調整の例で行ったのと同様に、フィルター プロパティを 'StatusCodeClass' に設定し、値を '5xx' に設定することで、ポータル内で一般的なサーバー エラーのフィルター処理を実行することもできます。

次のステップ