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 Rejestrowanie aplikacji w celu żądania tokenów autoryzacji i pracy z interfejsami API.

Pobieranie tokenu

Po utworzeniu jednostki usługi pobierz token dostępu przy użyciu wywołania REST. Prześlij następujące żądanie przy użyciu elementu appId i password dla jednostki usługi lub aplikacji:


    POST /<tenant-id>/oauth2/token
    Host: https://login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials
    &client_id=<app-client-id>
    &resource=https://management.azure.com
    &client_secret=<password>

Na przykład

curl --location --request POST 'https://login.microsoftonline.com/abcd1234-5849-4a5d-a2eb-5267eae1bbc7/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=0123b56a-c987-1234-abcd-1a2b3c4d5e6f' \
--data-urlencode 'client_secret=123456.ABCDE.~XYZ876123ABceDb0000' \
--data-urlencode 'resource=https://management.azure.com'

Pomyślne żądanie odbiera token dostępu w odpowiedzi:

{
   token_type": "Bearer",
   "expires_in": "86399",
   "ext_expires_in": "86399",
   "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax"
}

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

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 zasobu 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>
  • Elastyczna pula 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 platformy 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źć identyfikator resourceID w portalu, na stronie przeglądu zasobu wybierz widok JSONA screenshot showing the overview page for a resource with the JSON view link highlighted.

Zostanie wyświetlona strona Zasób JSON. Identyfikator zasobu można skopiować przy użyciu ikony po prawej stronie identyfikatora.

A screenshot showing the Resource JSON page for a resource.

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 uwzględnić /providers/microsoft.insights/ identyfikator URI zasobu podczas wykonywania wywołania interfejsu API w celu pobrania metryk lub definicji metryk.

Pobieranie definicji metryk

Użyj interfejsu API REST definicji metryk usługi Azure Monitor, aby uzyskać dostęp do listy metryk dostępnych dla usługi. 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

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

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

Pobieranie wartości metryk

Po pobraniu definicji metryk i wartości wymiarów pobierz wartości metryk. Użyj interfejsu API REST metryk usługi Azure Monitor, 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.

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'".

Aby zwrócić szereg czasowy dla każdej wartości danego wymiaru, użyj filtru * takiego jak "&$filter=ApiName eq '*'". Parametry Top zapytania i OrderBy mogą służyć do ograniczania i zamawiania liczby zwracanych szeregów czasowych.

Uwaga

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 pierwsze interfejsy API według liczby Transactions w kolejności malejącej wartości w zakresie 5-minutowym, w którym GeoType wymiar 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 obsługują wykonywanie zapytań dotyczących wielu metryk, można zobaczyć w bloku Metryki w usłudze Azure Monitor za pośrednictwem listy rozwijanej typ zasobu w selektorze zakresu w bloku kontekstu. 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 monitorowania dla samej subskrypcji.
  • Interfejsy API wielu zasobów metryk obsługują tylko jeden typ zasobu na zapytanie, które należy określić w postaci parametru zapytania przestrzeni nazw metryki.
  • Interfejsy API z wieloma zasobami metryk obsługują tylko jeden region świadczenia usługi Azure na zapytanie, które należy określić w postaci parametru zapytania regionu.

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

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 zasobu maszyny wirtualnej w subskrypcji i regionie. Bez filtru interfejs API zwróci pojedynczą serię czasową agregując średnią procesor CPU dla wszystkich maszyn wirtualnych. Szereg czasowy dla każdego zasobu jest rozróżniany przez Microsoft.ResourceId wartość metadanych dla każdego wpisu szeregów czasowych, jak widać 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ą typową przyczyną jest określenie filtru, który nie jest zgodny z żadnymi zasobami. 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 wieloznacznych, 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. Jeśli w subskrypcji i regionie nie ma żadnych zasobów, interfejs API zwraca pojedynczy szereg czasowy z pojedynczym punktem 0danych .

  • Błędy autoryzacji 401:
    Interfejsy API metryk poszczególnych zasobów wymagają od użytkownika uprawnienia Czytelnik monitorowania dla zasobu, którego dotyczy zapytanie. Ponieważ interfejsy API metryk wielu zasobów to interfejsy API na poziomie subskrypcji, użytkownicy muszą mieć uprawnienie Czytelnik monitorowania dla subskrypcji, do korzystania z interfejsów API metryk wielu zasobów. Nawet jeśli użytkownicy mają czytelnik monitorowania dla wszystkich zasobów w subskrypcji, żądanie kończy się niepowodzeniem, jeśli użytkownik nie ma czytelnika monitorowania w samej subskrypcji.

Następne kroki