Passo a passo da API REST de monitoramento do Azure

Esse artigo mostra como usar a Referência de API REST do Azure Monitor.

Recupere definições de métrica, valores de dimensão e valores de métrica usando a API do Azure Monitor e use os dados em seus aplicativos ou armazene em um banco de dados para análise. Você também pode listar regras de alerta e exibir logs de atividades usando a API do Azure Monitor.

Autenticar solicitações do Azure Monitor

Solicitação enviada usando a API do Azure Monitor usam o modelo de autenticação do Azure Resource Manager. Todas as solicitações são autenticadas com o Microsoft Entra ID. Uma abordagem para autenticar o aplicativo cliente é criar uma entidade de serviço do Microsoft Entra e recuperar o token de autenticação. Você pode criar uma entidade de serviço do Microsoft Entra usando o portal do Azure, a CLI ou o PowerShell. Para obter mais informações, confira Registrar um aplicativo para solicitar tokens de autorização e trabalhar com APIs.

Recuperar um token

Depois de criar uma entidade de serviço, recupere um token de acesso usando uma chamada REST. Envie a seguinte solicitação usando o appId e password para sua entidade de serviço ou aplicativo:


    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>

Por exemplo

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'

Uma solicitação bem-sucedida recebe um token de acesso na resposta:

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

Depois de autenticar e recuperar um token, use o token de acesso em suas solicitações de API do Azure Monitor, incluindo o cabeçalho 'Authorization: Bearer <access token>'

Observação

Para obter mais informações sobre como trabalhar com a API REST do Azure, consulte a Referência da API REST do Azure.

Recuperar a ID do recurso

O uso da API REST requer a ID do recurso de destino do Azure. As IDs de recurso seguem o seguinte padrão:

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

Por exemplo

  • Hub IoT do Azure: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Devices/IotHubs/<iot-hub-name>
  • Pool de SQL Elástico: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Sql/servers/<pool-db>/elasticpools/<sql-pool-name>
  • Banco de Dados SQL do Azure (v12): /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Sql/servers/<server-name>/databases/<database-name>
  • Barramento de Serviço do Azure: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ServiceBus/<namespace>/<servicebus-name>
  • Conjuntos de Dimensionamento de Máquinas Virtuais do Microsoft Azure: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/virtualMachineScaleSets/<vm-name>
  • Máquinas Virtuais do Microsoft Azure: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/virtualMachines/<vm-name>
  • Hubs de Eventos do Azure: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.EventHub/namespaces/<eventhub-namespace>

Use o portal do Azure, o PowerShell ou a CLI do Azure para localizar a ID do recurso.

Para localizar o resourceID no portal, na página de visão geral do recurso, selecione Exibição JSONA screenshot showing the overview page for a resource with the JSON view link highlighted.

A página JSON do recurso é exibida. A ID do recurso pode ser copiada usando o ícone à direita da ID.

A screenshot showing the Resource JSON page for a resource.

Pontos de extremidade de API

Os pontos de extremidade da API utilizam o seguinte padrão:
/<resource URI>/providers/microsoft.insights/<metrics|metricDefinitions>?api-version=<apiVersion>
O resource URI é composto pelos seguintes componentes:
/subscriptions/<subscription id>/resourcegroups/<resourceGroupName>/providers/<resourceProviderNamespace>/<resourceType>/<resourceName>/

Importante

Verifique se você incluiu /providers/microsoft.insights/ após o URI do recurso quando fizer uma chamada à API para recuperar as métricas ou definições de métricas.

Recuperar as definições de métrica

Use a API REST de Definições de Métrica do Azure Monitor para acessar a lista de métricas disponíveis para um serviço. Use o seguinte formato de solicitação para recuperar definições de métrica.

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>

Por exemplo, a solicitação a seguir recupera as definições de métrica para uma conta de Armazenamento do Azure.

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

O JSON a seguir mostra um exemplo de corpo de resposta. Nesse exemplo, apenas a segunda métrica tem dimensões.

{
    "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"
                }
            ]
        },
        ...
    ]
}

Observação

É recomendável usar a versão da API “2018-01-01” ou posterior. Versões mais antigas da API de definições de métrica não dão suporte à dimensões.

Recuperar valores de dimensão

Depois de recuperar as definições de métrica disponíveis, recupere o intervalo de valores para as dimensões da métrica. Use valores de dimensão para filtrar ou segmentar as métricas em suas consultas. Use a API REST de Métricas do Azure Monitor para encontrar todos os valores para uma determinada dimensão de métrica.

Use o elemento name.value da métrica nas definições de filtro. Se nenhum filtro for especificado, a métrica padrão será retornada. A API permite que apenas uma dimensão tenha um filtro curinga. Especifique a solicitação de valores de dimensão usando o "resultType=metadata" parâmetro de consulta. O resultType é omitido para uma solicitação de valores de métrica.

Observação

Para recuperar os valores de dimensão usando a API REST do Azure Monitor, use a versão da API “2019-07-01” ou posterior.

Use o seguinte formato de solicitação para recuperar valores de dimensão.

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>

O exemplo a seguir recupera a lista de valores de dimensão que foram emitidos para a API Name dimensão da Transactions métrica, em que a GeoType dimensão tem um valor de Primary, para o intervalo de tempo especificado.

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'

O JSON a seguir mostra um exemplo de corpo de resposta.

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

Recuperar valores de métrica

Depois de recuperar os valores de dimensão e definições, recupere os valores da métrica. Use a API REST de Métricas do Azure Monitor para recuperar os valores de métrica.

Use o elemento name.value da métrica nas definições de filtro. Se nenhum filtro de dimensão for especificado, a métrica agregada, acumulada será retornada.

Para buscar várias séries temporais com valores de dimensão específicos, especifique um parâmetro de consulta de filtro que especifica os dois valores de dimensão, como "&$filter=ApiName eq 'ListContainers' or ApiName eq 'GetBlobServiceProperties'".

Para retornar uma série temporal para cada valor de uma determinada dimensão, use um filtro *, como "&$filter=ApiName eq '*'". Os parâmetros de consulta Top e OrderBy podem ser usados para limitar e ordenar o número de séries temporais retornadas.

Observação

Para recuperar valores de métricas multidimensionais usando a API REST do Azure Monitor, use a versão da API “2019-07-01” ou posterior.

Use o seguinte formato de solicitação para recuperar valores de métrica.

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>

O exemplo a seguir recupera as três principais APIs, pelo número de Transactions em ordem de valor decrescente, durante um intervalo de 5 minutos, em que a GeoType dimensão tem um valor de 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'

O JSON a seguir mostra um exemplo de corpo de resposta.

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

Consulta de métricas para vários recursos ao mesmo tempo.

Além da consulta de métricas em um recurso individual, alguns tipos de recursos também têm suporte para a consulta de vários recursos em uma única solicitação. Essas APIs são o que potencializa a experiência de Vários Recursos no explorador de métricas do Azure. O conjunto de tipos de recursos que têm suporte para a consulta de várias métricas pode ser visto na folha Métricas no Azure Monitor através da lista suspensa de tipos de recursos no seletor de escopo na folha de contexto. Para obter mais informações, consulte a documentação da UX de Vários Recursos.

Há algumas diferenças importantes entre a consulta de métricas para vários recursos e para recursos individuais.

  • As APIs de vários recursos de Métricas operam no nível da assinatura em vez de no nível da ID do recurso. Essa restrição significa que os usuários que consultam essas APIs devem ter as permissões de Leitor de Monitoramento na própria assinatura.
  • As APIs de vários recursos de métricas dão suporte a apenas um único resourceType por consulta, que deve ser especificado na forma de um parâmetro de consulta de namespace de métrica.
  • As APIs de vários recursos de Métricas suportam apenas uma única região do Azure por consulta, que deve ser especificada na forma de um parâmetro de consulta de região.

Exemplos de consulta de métricas para vários recursos

O exemplo a seguir mostra uma solicitação de definições de métricas por pessoa:

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

A solicitação a seguir mostra a solicitação de definições de métricas equivalentes para vários recursos. As únicas alterações são o caminho da assinatura em vez de um caminho de ID de recurso e a adição dos parâmetros de consulta region e 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

O exemplo a seguir mostra uma solicitação de métricas individuais.

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

Abaixo está uma solicitação de métricas equivalente para vários recursos:

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 '*'

Observação

Um filtro Microsoft.ResourceId eq '*' é adicionado no exemplo para as solicitações de métricas de vários recursos. O filtro diz à API para retornar uma série temporal separada por recurso de máquina virtual na assinatura e na região. Sem o filtro, a API retornaria uma única série temporal agregando a CPU média de todas as VMs. A série temporal de cada recurso é diferenciada pelo valor de metadados Microsoft.ResourceId em cada entrada de série temporal, como pode ser visto no seguinte exemplo de valor de retornado. Se não houver resourceIds recuperados por esta consulta, uma série temporal vazia "timeseries": [] será retornada.

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

Solucionar problemas de métricas de consulta para vários recursos

  • Série temporal vazia retornada "timeseries": []

    • Uma série temporal vazia é retornada quando nenhum dado está disponível para o intervalo de tempo e o filtro especificados. A causa mais comum é especificar um intervalo de tempo que não contém dados. Por exemplo, se o intervalo de tempo estiver definido como uma data futura.
    • Outra causa comum é especificar um filtro que não corresponda a nenhum recurso. Por exemplo, se o filtro especificar um valor de dimensão que não existe em nenhum recurso na combinação de assinatura e região, "timeseries": [] será retornado.
  • Filtros curinga
    Usar um filtro curinga, como Microsoft.ResourceId eq '*', faz com que a API retorne uma série temporal para cada resourceId na assinatura e região. Se a combinação de assinatura e região não contiver recursos, uma série temporal vazia será retornada. A mesma consulta sem o filtro curinga retornaria uma única série temporal, agregando a métrica solicitada nas dimensões solicitadas, por exemplo, assinatura e região. Se não houver recursos na assinatura e na combinação de região, a API retornará uma única série temporal com um único ponto de dados de 0.

  • Erros de autorização 401:
    As APIs de métricas de recurso individuais exigem que um usuário tenha a permissão Leitor de Monitoramento no recurso que está sendo consultado. Como as APIs de métricas de vários recursos são APIs de nível de assinatura, os usuários devem ter a permissão Leitor de Monitoramento para que a assinatura consultada use as APIs de métricas de vários recursos. Mesmo que os usuários tenham o Leitor de Monitoramento em todos os recursos de uma assinatura, a solicitação falhará se o usuário não tiver o Leitor de Monitoramento na própria assinatura.

Próximas etapas