Udostępnij za pomocą


Przewodnik po interfejsie API REST monitorowania platformy Azure

W tym artykule pokazano, jak używać dokumentacji interfejsu API REST usługi Azure Monitor.

Pobieranie definicji metryk, wartości wymiarów i wartości metryk przy użyciu interfejsu API usługi Azure Monitor i używanie danych w aplikacjach lub przechowywanie ich w bazie danych na potrzeby analizy. Możesz również wyświetlić listę reguł alertów i wyświetlić dzienniki aktywności przy użyciu interfejsu API usługi Azure Monitor.

Uwierzytelnianie żądań usługi Azure Monitor

Żądanie przesłane przy użyciu interfejsu API usługi Azure Monitor korzysta z modelu uwierzytelniania usługi Azure Resource Manager. Wszystkie żądania są uwierzytelniane przy użyciu identyfikatora Entra firmy Microsoft. Jedną z metod uwierzytelniania aplikacji klienckiej jest utworzenie jednostki usługi Microsoft Entra i pobranie tokenu uwierzytelniania. Jednostkę usługi firmy Microsoft Entra można utworzyć przy użyciu witryny Azure Portal, interfejsu wiersza polecenia lub programu PowerShell. Aby uzyskać więcej informacji, zobacz Rejestracja aplikacji w celu żądania tokenów autoryzacyjnych i pracy z interfejsami API.

Pobieranie tokenu

Po utworzeniu jednostki usługi pobierz token dostępu. Określ resource=https://management.azure.com w żądaniu tokenu.

Uzyskaj token uwierzytelniający, korzystając z jednej z następujących metod:

  • Interfejs Linii Komend (CLI)
  • Interfejs programistyczny REST
  • Zestaw do tworzenia oprogramowania

Podczas żądania tokena musisz podać parametr resource. Parametr resource jest adresem URL zasobu, do którego chcesz uzyskać dostęp.

Zasoby obejmują:

  • https://management.azure.com
  • https://api.loganalytics.io
  • https://monitoring.azure.com

Uzyskaj token za pomocą żądania REST

Użyj poniższego wywołania REST API, aby uzyskać token. To żądanie używa identyfikatora klienta i tajnego hasła klienta do uwierzytelnienia żądania. Identyfikator klienta i tajny kod klienta są uzyskiwane podczas rejestracji aplikacji w Microsoft Entra ID. Aby uzyskać więcej informacji, zobacz Rejestracja aplikacji w celu żądania tokenów autoryzacyjnych i pracy z interfejsami API.

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://monitoring.azure.com'

Treść odpowiedzi pojawia się w następującym formacie:

{
    "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"
}

Po uwierzytelnieniu i pobraniu tokenu użyj tokenu dostępu w żądaniach interfejsu API usługi Azure Monitor, dołączając nagłówek 'Authorization: Bearer <access token>'

Uwaga / Notatka

Aby uzyskać więcej informacji na temat pracy z interfejsem API REST platformy Azure, zobacz dokumentację interfejsu API REST platformy Azure.

Pobieranie identyfikatora zasobu

Użycie interfejsu API REST wymaga identyfikatora docelowego zasobu platformy Azure. Identyfikatory zasobów są zgodne z następującym wzorcem:

/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/<provider>/<resource name>/

Na przykład

  • Azure IoT Hub: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Devices/IotHubs/<iot-hub-name>
  • Pula elastyczna SQL: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Sql/servers/<pool-db>/elasticpools/<sql-pool-name>
  • Azure SQL Database (wersja 12): /subscriptions/ <subscription-id>/ resourceGroups/ <resource-group-name> /providers/Microsoft.Sql/servers/ <server-name> /databases/ <database-name>
  • Azure Service Bus: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ServiceBus/<namespace>/<servicebus-name>
  • Zestawy skalowania maszyn wirtualnych Azure: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/virtualMachineScaleSets/<vm-name>
  • Azure Virtual Machines: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/virtualMachines/<vm-name>
  • Azure Event Hubs: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.EventHub/namespaces/<eventhub-namespaces>

Użyj witryny Azure Portal, programu PowerShell lub interfejsu wiersza polecenia platformy Azure, aby znaleźć identyfikator zasobu.

Aby znaleźć resourceID w portalu, na stronie przeglądu zasobu wybierz Widok JSON.

Zrzut ekranu przedstawiający stronę przeglądu zasobu z wyróżnionym linkiem widoku JSON.

Wyświetlana jest strona zasobu JSON. Identyfikator zasobu można skopiować przy użyciu ikony po prawej stronie identyfikatora.

Zrzut ekranu przedstawiający stronę Resource JSON dla zasobu.

Punkty końcowe interfejsu API

Punkty końcowe interfejsu API używają następującego wzorca:

/<resource URI>/providers/microsoft.insights/<metrics|metricDefinitions>?api-version=<apiVersion>

Element resource URI składa się z następujących składników:

/subscriptions/<subscription id>/resourcegroups/<resourceGroupName>/providers/<resourceProviderNamespace>/<resourceType>/<resourceName>/

Ważne

Pamiętaj, aby po identyfikatorze URI zasobu umieścić /providers/microsoft.insights/ podczas wykonywania wywołania interfejsu API w celu pobrania metryk lub definicji metryk.

Pobieranie definicji metryk

Użyj interfejsu REST API definicji metryk Azure Monitor, aby uzyskać dostęp do listy metryk dostępnych dla różnych usług. Użyj następującego formatu żądania, aby pobrać definicje metryk.

GET /subscriptions/<subscription id>/resourcegroups/<resourceGroupName>/providers/<resourceProviderNamespace>/<resourceType>/<resourceName>/providers/microsoft.insights/metricDefinitions?api-version=<apiVersion>
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer <access token>

Na przykład następujące żądanie pobiera definicje metryk dla konta usługi Azure Storage:

curl --location --request GET 'https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metricDefinitions?api-version=2018-01-01'
--header 'Authorization: Bearer eyJ0eXAiOi...xYz

Poniższy kod JSON przedstawia przykładową treść odpowiedzi. W tym przykładzie tylko druga metryka ma wymiary:

{
    "value": [
        {
            "id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metricdefinitions/UsedCapacity",
            "resourceId": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage",
            "namespace": "Microsoft.Storage/storageAccounts",
            "category": "Capacity",
            "name": {
                "value": "UsedCapacity",
                "localizedValue": "Used capacity"
            },
            "isDimensionRequired": false,
            "unit": "Bytes",
            "primaryAggregationType": "Average",
            "supportedAggregationTypes": [
                "Total",
                "Average",
                "Minimum",
                "Maximum"
            ],
            "metricAvailabilities": [
                {
                    "timeGrain": "PT1H",
                    "retention": "P93D"
                },
                 ...
                {
                    "timeGrain": "PT12H",
                    "retention": "P93D"
                },
                {
                    "timeGrain": "P1D",
                    "retention": "P93D"
                }
            ]
        },
        {
            "id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metricdefinitions/Transactions",
            "resourceId": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage",
            "namespace": "Microsoft.Storage/storageAccounts",
            "category": "Transaction",
            "name": {
                "value": "Transactions",
                "localizedValue": "Transactions"
            },
            "isDimensionRequired": false,
            "unit": "Count",
            "primaryAggregationType": "Total",
            "supportedAggregationTypes": [
                "Total"
            ],
            "metricAvailabilities": [
                {
                    "timeGrain": "PT1M",
                    "retention": "P93D"
                },
                {
                    "timeGrain": "PT5M",
                    "retention": "P93D"
                },
                ...
                {
                    "timeGrain": "PT30M",
                    "retention": "P93D"
                },
                {
                    "timeGrain": "PT1H",
                    "retention": "P93D"
                },
                ...
                {
                    "timeGrain": "P1D",
                    "retention": "P93D"
                }
            ],
            "dimensions": [
                {
                    "value": "ResponseType",
                    "localizedValue": "Response type"
                },
                {
                    "value": "GeoType",
                    "localizedValue": "Geo type"
                },
                {
                    "value": "ApiName",
                    "localizedValue": "API name"
                }
            ]
        },
        ...
    ]
}

Uwaga / Notatka

Zalecamy używanie interfejsu API w wersji "2018-01-01" lub nowszej. Starsze wersje interfejsu API definicji metryk nie obsługują wymiarów.

Pobieranie wartości wymiarów

Po pobraniu dostępnych definicji metryk pobierz zakres wartości dla wymiarów metryki. Użyj wartości wymiarów, aby filtrować lub segmentować metryki w zapytaniach. Użyj interfejsu API REST metryk usługi Azure Monitor, aby znaleźć wszystkie wartości dla danego wymiaru metryki.

Użyj elementu metryki name.value w definicjach filtru. Jeśli nie określono żadnych filtrów, zwracana jest domyślna metryka. Interfejs API umożliwia tylko jednemu wymiarowi filtrowanie symboli wieloznacznych. Określ żądanie wartości wymiarów przy użyciu parametru "resultType=metadata" zapytania. Element resultType zostanie pominięty dla żądania wartości metryk.

Uwaga / Notatka

Aby pobrać wartości wymiarów przy użyciu interfejsu API REST usługi Azure Monitor, użyj interfejsu API w wersji "2019-07-01" lub nowszej.

Użyj następującego formatu żądania, aby pobrać wartości wymiarów:

GET /subscriptions/<subscription-id>/resourceGroups/
<resource-group-name>/providers/<resource-provider-namespace>/
<resource-type>/<resource-name>/providers/microsoft.insights/
metrics?metricnames=<metric>
&timespan=<starttime/endtime>
&$filter=<filter>
&resultType=metadata
&api-version=<apiVersion> HTTP/1.1
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer <access token>

Poniższy przykład pobiera listę wartości wymiarów, które zostały wyemitowane dla API Name wymiaru Transactions metryki, gdzie GeoType wymiar ma wartość Primary, dla określonego zakresu czasu.

curl --location --request GET 'https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metrics \
?metricnames=Transactions \
&timespan=2023-03-01T00:00:00Z/2023-03-02T00:00:00Z \
&resultType=metadata \
&$filter=GeoType eq \'Primary\' and ApiName eq \'*\' \
&api-version=2019-07-01'
-header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJ0e..meG1lWm9Y'

Poniższy kod JSON przedstawia przykładową treść odpowiedzi:

{
  "timespan": "2023-03-01T00:00:00Z/2023-03-02T00:00:00Z",
  "value": [
    {
      "id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/Microsoft.Insights/metrics/Transactions",
      "type": "Microsoft.Insights/metrics",
      "name": {
        "value": "Transactions",
        "localizedValue": "Transactions"
      },
      "unit": "Count",
      "timeseries": [
        {
          "metadatavalues": [
            {
              "name": {
                "value": "apiname",
                "localizedValue": "apiname"
              },
              "value": "DeleteBlob"
            }
          ]
        },
        {
          "metadatavalues": [
            {
              "name": {
                "value": "apiname",
                "localizedValue": "apiname"
              },
              "value": "SetBlobProperties"
            }
          ]
        },
        ...
      ]
    }
  ],
  "namespace": "Microsoft.Storage/storageAccounts",
  "resourceregion": "eastus"
}

Pobierz wartości metryk

Po pobraniu definicji metryk oraz wartości wymiarów, pobierz wartości metryk. Użyj interfejsu REST API Azure Monitor Metrics, aby pobrać wartości metryk.

Użyj elementu metryki name.value w definicjach filtru. Jeśli nie określono filtrów wymiarów, zostanie zwrócona zagregowana metryka.

Wiele szeregów czasowych

Szereg czasowy to zestaw punktów danych uporządkowanych według czasu dla danej kombinacji wymiarów. Wymiar jest aspektem metryki, która opisuje punkt danych, taki jak identyfikator zasobu, region lub ApiName.

  • Aby pobrać wiele szeregów czasowych z określonymi wartościami wymiarów, określ parametr zapytania filtru, który określa obie wartości wymiarów, takie jak "&$filter=ApiName eq 'ListContainers' or ApiName eq 'GetBlobServiceProperties'". W tym przykładzie uzyskasz szereg czasowy, w którym ApiName znajduje się ListContainers i drugi szereg czasowy, gdzie ApiName to GetBlobServiceProperties.

  • Aby zwrócić szereg czasowy dla każdej wartości danego wymiaru, użyj filtru * takiego jak "&$filter=ApiName eq '*'". Top Użyj parametrów zapytania iOrderBy, aby ograniczyć i posortować liczbę zwracanych szeregów czasowych. W tym przykładzie uzyskasz szereg czasowy dla każdej wartości ApiNamew zestawie wyników. Jeśli żadne dane nie są zwracane, interfejs API zwraca pusty szereg "timeseries": []czasowy .

Uwaga / Notatka

Aby pobrać wielowymiarowe wartości metryk przy użyciu interfejsu API REST usługi Azure Monitor, użyj interfejsu API w wersji "2019-07-01" lub nowszej.

Użyj następującego formatu żądania, aby pobrać wartości metryk:

GET /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/<resource-provider-namespace>/<resource-type>/<resource-name>/providers/microsoft.insights/metrics?metricnames=<metric>&timespan=<starttime/endtime>&$filter=<filter>&interval=<timeGrain>&aggregation=<aggreation>&api-version=<apiVersion>
Host: management.azure.com
Content-Type: application/json
Authorization: Bearer <access token>

Poniższy przykład pobiera trzy najlepsze interfejsy API według malejącej kolejności wartości liczby Transactions w 5-minutowym przedziale czasowym, gdzie wymiar GeoType ma wartość Primary.

curl --location --request GET 'https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/microsoft.insights/metrics \
?metricnames=Transactions \
&timespan=2023-03-01T02:00:00Z/2023-03-01T02:05:00Z \
& $filter=apiname eq '\''GetBlobProperties'\'
&interval=PT1M \
&aggregation=Total \
&top=3 \
&orderby=Total desc \
&api-version=2019-07-01"' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer yJ0eXAiOi...g1dCI6Ii1LS'

Poniższy kod JSON przedstawia przykładową treść odpowiedzi:

{
  "cost": 0,
  "timespan": "2023-03-01T02:00:00Z/2023-03-01T02:05:00Z",
  "interval": "PT1M",
  "value": [
    {
      "id": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/azmon-rest-api-walkthrough/providers/Microsoft.Storage/storageAccounts/ContosoStorage/providers/Microsoft.Insights/metrics/Transactions",
      "type": "Microsoft.Insights/metrics",
      "name": {
        "value": "Transactions",
        "localizedValue": "Transactions"
      },
      "unit": "Count",
      "timeseries": [
        {
          "metadatavalues": [
            {
              "name": {
                "value": "apiname",
                "localizedValue": "apiname"
              },
              "value": "GetBlobProperties"
            }
          ],
          "data": [
            {
              "timeStamp": "2023-09-19T02:00:00Z",
              "total": 2
            },
            {
              "timeStamp": "2023-09-19T02:01:00Z",
              "total": 1
            },
            {
              "timeStamp": "2023-09-19T02:02:00Z",
              "total": 3
            },
            {
              "timeStamp": "2023-09-19T02:03:00Z",
              "total": 7
            },
            {
              "timeStamp": "2023-09-19T02:04:00Z",
              "total": 2
            }
          ]
        },
        ...
      ]
    }
  ],
  "namespace": "Microsoft.Storage/storageAccounts",
  "resourceregion": "eastus"
}

Wykonywanie zapytań dotyczących metryk dla wielu zasobów naraz.

Oprócz wykonywania zapytań dotyczących metryk dla pojedynczego zasobu niektóre typy zasobów obsługują również wykonywanie zapytań dotyczących wielu zasobów w jednym żądaniu. Te interfejsy API umożliwiają obsługę wielu zasobów w Eksploratorze metryk platformy Azure. Zestaw typów zasobów, które umożliwiają wykonywanie zapytań dotyczących wielu metryk, można zobaczyć na karcie Metryki w usłudze Azure Monitor poprzez rozwijaną listę typów zasobów w selektorze zakresu na karcie kontekstowej. Aby uzyskać więcej informacji, zobacz dokumentację środowiska użytkownika z wieloma zasobami.

Istnieją pewne istotne różnice między wykonywaniem zapytań dotyczących metryk dla wielu i poszczególnych zasobów.

  • Interfejsy API wielu zasobów metryk działają na poziomie subskrypcji zamiast na poziomie identyfikatora zasobu. To ograniczenie oznacza, że użytkownicy wykonujący zapytania dotyczące tych interfejsów API muszą mieć uprawnienia Czytelnik monitorujący dla subskrypcji.
  • Interfejsy API do obsługi wielozadaniowych zasobów metrycznych obsługują tylko jeden typ zasobu w każdym zapytaniu, który należy określić w formie parametru zapytania w przestrzeni nazw.
  • Interfejsy API metryk z wieloma zasobami obsługują tylko jeden region Azure na zapytanie, który musi być określony w postaci parametru zapytania o region.

Wykonywanie zapytań dotyczących metryk dla wielu przykładów zasobów

W poniższym przykładzie przedstawiono żądanie pojedynczych definicji metryk:

GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1/providers/microsoft.insights/metricdefinitions?api-version=2021-05-01

Następujące żądanie przedstawia żądanie równoważnych definicji metryk dla wielu zasobów. Jedynymi zmianami są ścieżka subskrypcji zamiast ścieżki identyfikatora zasobu oraz dodawanie parametrów region zapytania i metricNamespace .

GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/providers/microsoft.insights/metricdefinitions?api-version=2021-05-01&region=eastus&metricNamespace=microsoft.compute/virtualmachines

W poniższym przykładzie przedstawiono pojedyncze żądanie metryk:

GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1/providers/microsoft.Insights/metrics?timespan=2023-06-25T22:20:00.000Z/2023-06-26T22:25:00.000Z&interval=PT5M&metricnames=Percentage CPU&aggregation=average&api-version=2021-05-01

Poniżej znajduje się równoważne żądanie metryk dla wielu zasobów:

GET https://management.azure.com/subscriptions/12345678-abcd-98765432-abcdef012345/providers/microsoft.Insights/metrics?timespan=2023-06-25T22:20:00.000Z/2023-06-26T22:25:00.000Z&interval=PT5M&metricnames=Percentage CPU&aggregation=average&api-version=2021-05-01&region=eastus&metricNamespace=microsoft.compute/virtualmachines&$filter=Microsoft.ResourceId eq '*'

Uwaga / Notatka

Filtr Microsoft.ResourceId eq '*' jest dodawany w przykładzie dla żądań metryk wielu zasobów. Filtr * informuje interfejs API o zwracaniu oddzielnej serii czasowej dla każdego zasobu maszyny wirtualnej, który zawiera dane w subskrypcji i regionie. Bez filtru interfejs API zwróci pojedynczą serię czasową, agregując średnią wartość użycia CPU dla wszystkich VM. Szeregi czasowe dla każdego zasobu są rozróżniane przez wartość metadanych Microsoft.ResourceId dla każdego wpisu tych szeregów, jak to pokazano w poniższej przykładowej wartości zwracanej. Jeśli nie ma identyfikatorów zasobów pobranych przez to zapytanie, zwracana jest pusta seria"timeseries": [] czasowa.

{
    "timespan": "2023-06-25T22:35:00Z/2023-06-26T22:40:00Z",
    "interval": "PT6H",
    "value": [
        {
            "id": "subscriptions/12345678-abcd-98765432-abcdef012345/providers/Microsoft.Insights/metrics/Percentage CPU",
            "type": "Microsoft.Insights/metrics",
            "name": {
                "value": "Percentage CPU",
                "localizedValue": "Percentage CPU"
            },
            "displayDescription": "The percentage of allocated compute units that are currently in use by the Virtual Machine(s)",
            "unit": "Percent",
            "timeseries": [
                {
                    "metadatavalues": [
                        {
                            "name": {
                                "value": "Microsoft.ResourceId",
                                "localizedValue": "Microsoft.ResourceId"
                            },
                            "value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM1"
                        }
                    ],
                    "data": [
                        {
                            "timeStamp": "2023-06-25T22:35:00Z",
                            "average": 3.2618888888888886
                        },
                        {
                            "timeStamp": "2023-06-26T04:35:00Z",
                            "average": 4.696944444444445
                        },
                        {
                            "timeStamp": "2023-06-26T10:35:00Z",
                            "average": 6.19701388888889
                        },
                        {
                            "timeStamp": "2023-06-26T16:35:00Z",
                            "average": 2.630347222222222
                        },
                        {
                            "timeStamp": "2023-06-26T22:35:00Z",
                            "average": 21.288999999999998
                        }
                    ]
                },
                {
                    "metadatavalues": [
                        {
                            "name": {
                                "value": "Microsoft.ResourceId",
                                "localizedValue": "Microsoft.ResourceId"
                            },
                            "value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/EASTUS-TESTING/providers/Microsoft.Compute/virtualMachines/TestVM2"
                        }
                    ],
                    "data": [
                        {
                            "timeStamp": "2023-06-25T22:35:00Z",
                            "average": 7.567069444444444
                        },
                        {
                            "timeStamp": "2023-06-26T04:35:00Z",
                            "average": 5.111835883171071
                        },
                        {
                            "timeStamp": "2023-06-26T10:35:00Z",
                            "average": 10.078277777777778
                        },
                        {
                            "timeStamp": "2023-06-26T16:35:00Z",
                            "average": 8.399097222222222
                        },
                        {
                            "timeStamp": "2023-06-26T22:35:00Z",
                            "average": 2.647
                        }
                    ]
                },
                {
                    "metadatavalues": [
                        {
                            "name": {
                                "value": "Microsoft.ResourceId",
                                "localizedValue": "Microsoft.ResourceId"
                            },
                            "value": "/subscriptions/12345678-abcd-98765432-abcdef012345/resourceGroups/Common-TESTING/providers/Microsoft.Compute/virtualMachines/CommonVM1"
                        }
                    ],
                    "data": [
                        {
                            "timeStamp": "2023-06-25T22:35:00Z",
                            "average": 6.892319444444444
                        },
                        {
                            "timeStamp": "2023-06-26T04:35:00Z",
                            "average": 3.5054305555555554
                        },
                        {
                            "timeStamp": "2023-06-26T10:35:00Z",
                            "average": 8.398817802503476
                        },
                        {
                            "timeStamp": "2023-06-26T16:35:00Z",
                            "average": 6.841666666666667
                        },
                        {
                            "timeStamp": "2023-06-26T22:35:00Z",
                            "average": 3.3850000000000002
                        }
                    ]
                }
            ],
            "errorCode": "Success"
        }
    ],
    "namespace": "microsoft.compute/virtualmachines",
    "resourceregion": "eastus"
}

Rozwiązywanie problemów z wykonywaniem zapytań dotyczących metryk dla wielu zasobów

  • Zwrócona pusta seria czasowa "timeseries": []

    • Pusty szereg czasowy jest zwracany, gdy żadne dane nie są dostępne dla określonego zakresu czasu i filtru. Najczęstszą przyczyną jest określenie zakresu czasu, który nie zawiera żadnych danych. Jeśli na przykład zakres czasu jest ustawiony na datę przyszłą.
    • Inną częstą przyczyną jest określenie filtru, który nie pasuje do żadnych zasobów. Jeśli na przykład filtr określa wartość wymiaru, która nie istnieje dla żadnych zasobów w ramach subskrypcji i kombinacji regionu, "timeseries": [] zostanie zwrócona.
  • Filtry z symbolami wieloznacznymi

    Użycie filtru wieloznacznego, takiego jak Microsoft.ResourceId eq '*' powoduje, że interfejs API zwraca szereg czasowy dla każdego identyfikatora zasobu w subskrypcji i regionie. Jeśli kombinacja subskrypcji i regionu nie zawiera żadnych zasobów, zwracany jest pusty szereg czasowy. To samo zapytanie bez filtru z symbolami wieloznacznymi zwróci pojedynczą serię czasową, agregując żądaną metrykę dla żądanych wymiarów, na przykład subskrypcję i region.

  • Błędy autoryzacji 401

    Interfejsy API metryk poszczególnych zasobów wymagają, aby użytkownik posiadał Czytelnik monitorowania dla zasobu będącego przedmiotem zapytania. Ponieważ interfejsy API metryk wielu zasobów są interfejsami API na poziomie subskrypcji, użytkownicy muszą mieć uprawnienie Czytelnik monitorowania dla subskrypcji, aby korzystać z interfejsów API metryk wielu zasobów. Nawet jeśli użytkownicy mają rolę Monitoring Reader dla wszystkich zasobów w subskrypcji, żądanie kończy się niepowodzeniem, jeśli użytkownik nie ma roli Monitoring Reader w samej subskrypcji.

  • Błędy ograniczania przepustowości 529

    Kod błędu 529 wskazuje, że system metryk ogranicza obecnie żądania. Zalecanym działaniem jest zaimplementowanie schematu wykładniczego ponawiania prób. Aby uzyskać więcej informacji na temat ograniczania przepustowości, zobacz Omówienie sposobu ograniczania żądań usługi Azure Resource Manager.

Dalsze kroki