Passo a passo da API REST de monitoramento do Azure

Este artigo mostra como usar a referência da 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

A solicitação enviada usando a API do Azure Monitor usa 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 Microsoft Entra e recuperar um token de autenticação. Você pode criar uma entidade de serviço do Microsoft Entra usando o portal do Azure, CLI ou PowerShell. Para obter mais informações, consulte 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>'

Nota

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

Recuperar o ID do recurso

Usar a API REST requer a ID do recurso do Azure de destino. As IDs de recursos 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 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 Escala de Máquina Virtual do Azure: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/virtualMachineScaleSets/<vm-name>
  • Máquinas Virtuais do 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 JSON viewA screenshot showing the overview page for a resource with the JSON view link highlighted.

A página JSON de recursos é exibida. O ID do recurso pode ser copiado usando o ícone à direita do ID.

A screenshot showing the Resource JSON page for a resource.

Pontos de extremidade da API

Os pontos de extremidade da API usam 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

Certifique-se de incluir /providers/microsoft.insights/ após o URI do recurso quando fizer uma chamada de API para recuperar métricas ou definições de métricas.

Recuperar definições de métrica

Use a API REST de Definições de Métricas 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 corpo de resposta de exemplo. Neste 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"
                }
            ]
        },
        ...
    ]
}

Nota

Recomendamos o uso da versão da API "2018-01-01" ou posterior. As versões mais antigas da API de definições de métricas não suportam dimensões.

Recuperar valores de dimensão

Após 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 do Azure Monitor Metrics para localizar todos os valores de uma determinada dimensão métrica.

Use o elemento da métrica nas definições de name.value 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 query. O resultType é omitido para uma solicitação de valores métricos.

Nota

Para recuperar 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 NameTransactions dimensão da métrica, onde a GeoType dimensão tem um valor de , para o intervalo de Primarytempo 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 corpo de resposta de exemplo.

{
  "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 as definições de métrica e os valores de dimensão, recupere os valores de métrica. Use a API REST do Azure Monitor Metrics para recuperar os valores de métrica.

Use o elemento da métrica nas definições de name.value filtro. Se nenhum filtro de dimensão for especificado, a métrica acumulada e agregada 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 especifique ambos os 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 Top parâmetros de consulta e OrderBy podem ser usados para limitar e ordenar o número de séries temporais retornadas.

Nota

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 em ordem de valor decrescente, durante um intervalo de Transactions 5 minutos, onde 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 corpo de resposta de exemplo.

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

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

Além de consultar métricas em um recurso individual, alguns tipos de recursos também oferecem suporte à consulta de vários recursos em uma única solicitação. Essas APIs são o que potencializa a experiência Multi-Resource no explorador de métricas do Azure. O conjunto de tipos de recursos que dão suporte à consulta de várias métricas pode ser visto na folha Métricas no monitor do Azure por meio da lista suspensa de tipo de recurso no seletor de escopo na folha de contexto. Para obter mais informações, consulte a documentação do Multi-Resource UX.

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

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

Consultando métricas para vários exemplos de recursos

O exemplo a seguir mostra uma solicitação de definições de métrica individual:

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étrica 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 de parâmetros de region consulta 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étrica individual.

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

Nota

Um Microsoft.ResourceId eq '*' filtro é adicionado no exemplo para as solicitações de métricas de vários recursos. O filtro informa à API para retornar uma série temporal separada por recurso de máquina virtual na assinatura e 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 para cada recurso é diferenciada pelo valor de Microsoft.ResourceId metadados em cada entrada de série temporal, como pode ser visto no valor de retorno de amostra a seguir. Se não houver resourceIds recuperados por essa consulta, uma série"timeseries": [] temporal vazia 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"
}

Solução de 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 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 para uma data futura.
    • Outra causa comum é especificar um filtro que não corresponde 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
    O uso de 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 sobre as dimensões solicitadas, por exemplo, assinatura e região. Se não houver recursos na combinação de assinatura e região, a API retornará uma única série temporal com um único ponto de dados de 0.

  • 401 erros de autorização:
    As APIs de métricas de recursos individuais exigem que um usuário tenha a permissão Monitoring Reader 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 a assinatura consultada para usar as APIs de métricas de vários recursos. Mesmo que os usuários tenham o Monitoring Reader em todos os recursos de uma assinatura, a solicitação falhará se o usuário não tiver o Monitoring Reader na própria assinatura.

Próximos passos