Métricas do Azure Resource Manager no Azure Monitor

Quando você cria e gerencia recursos no Azure, suas solicitações são orquestradas por meio do painel de controle do Azure, o Azure Resource Manager. Este artigo descreve como monitorar o volume e a latência das solicitações de painel de controle feitas ao Azure.

Com essas métricas, você pode observar tráfego e latência para solicitações do painel de controle em todas as assinaturas. Por exemplo, agora você pode descobrir quando suas solicitações foram limitadas ou falharam filtrando códigos de status específicos examinando as solicitações estranguladas e examinando os erros do servidor.

As métricas estão disponíveis por até três meses (93 dias) e acompanham apenas solicitações síncronas. Para um cenário como o de uma criação de VM, as métricas não representam o desempenho ou a confiabilidade da operação assíncrona de execução prolongada.

Como acessar métricas do Azure Resource Manager

Você pode acessar métricas do painel de controle por meio das APIs REST do Azure Monitor, dos SDKs e do portal do Azure (selecionando a métrica "Azure Resource Manager"). Para obter uma visão geral no Azure Monitor, confira Métricas do Azure Monitor.

Não há nenhum processo de aceitação ou de entrada para acessar métricas do painel de controle.

Para obter diretrizes de como recuperar um token de portador e fazer solicitações ao Azure, confira Referência da API REST do Azure.

Definição de métrica

A definição das métricas do Azure Resource Manager no Azure Monitor só é acessível por meio da versão da API 2017-12-01-preview. Para recuperar a definição, você pode executar o seguinte snippet de código, substituindo "00000000-0000-0000-0000-000000000000" pela sua ID da assinatura:

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

Este trecho retorna a definição do esquema de métricas. Notavelmente, esse esquema inclui as dimensões em que você pode filtrar com a API do Monitor:

Nome da dimensão Descrição
ResourceUri A ID de Recurso completa para um recurso específico.
RequestRegion A região do Azure Resource Manager onde seu painel de controle solicita aterrissagem, como "EastUS2". Essa região não é a localização do recurso.
StatusCode Tipo de resposta do Azure Resource Manager para sua solicitação de painel de controle. Os valores possíveis são (mas não estão limitados a):
- 0
- 200
- 201
- 400
- 404
- 429
- 500
- 502
StatusCodeClass A classe do código de status retornado do Azure Resource Manager. Os valores possíveis são:
– 2xx
– 4xx
– 5xx
Namespace O namespace para o Provedor de Recursos, em maiúsculas, como "MICROSOFT.COMPUTE"
ResourceType Qualquer tipo de recurso no Azure para o qual você tenha criado ou enviado uma solicitação, em maiúsculas, como "VIRTUALMACHINES"
Método O método HTTP usado na solicitação feita ao Azure Resource Manager. Os valores possíveis são:
– GET
– HEAD
- PUT
- POST
– PATCH
– DELETE

Exemplos

Agora, vamos analisar alguns cenários que podem ajudar você a explorar as métricas do Azure Resource Manager.

Métricas de painel de controle de latência e tráfego de consulta por meio do portal do Azure

Primeiro, navegue até a folha do Azure Monitor no portal:

Captura de tela da navegação para a página de Monitoramento do portal do Azure com as Métricas de Exploração destacadas.

Depois de selecionar Explorar Métricas, selecione uma assinatura e selecione a métrica do Azure Resource Manager:

Captura de tela da seleção de uma assinatura única e da métrica do Azure Resource Manager no portal do Azure.

Em seguida, depois de selecionar Aplicar, você pode visualizar suas métricas Traffic (Tráfego) e Latency (Latência) do painel de controle com filtragem e divisão personalizadas:

Captura de tela da visualização de métricas no portal do Azure, mostrando as opções de filtrar e dividir por dimensões.

Métricas de painel de controle de latência e tráfego de consulta via API REST

Depois de autenticado com o Azure, você pode fazer uma solicitação para recuperar métricas do painel de controle para a sua assinatura. No script, substitua "00000000-0000-0000-0000-000000000000" pela ID da sua assinatura. O script recuperará a latência média da solicitação (em segundos) e a contagem total de solicitações para o período de dois dias, dividido por intervalos de um dia:

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

No caso das métricas do Azure Resource Manager, você pode recuperar a contagem de tráfego usando a métrica Latency e incluindo a agregação 'count'. Você verá uma resposta do JSON para a solicitação:

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

Se você quiser recuperar apenas a contagem de tráfego, poderá utilizar a métrica Traffic com a agregação 'count':

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

A resposta para a solicitação é:

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

Para saber as dimensões de métricas com suporte, você precisa especificar o valor da dimensão para exibir os valores correspondentes das métricas. Por exemplo, se você quiser se concentrar em Latency para solicitações bem-sucedidas ao ARM, você precisa filtrar a dimensão StatusCodeClass com 2XX.

Se quiser ver o número de solicitações feitas em sua assinatura para recursos de Rede, como redes virtuais e balanceadores de carga, você precisará filtrar a dimensão Namespace para MICROSOFT.NETWORK.

Examinar solicitações limitadas

Para exibir apenas suas solicitações limitadas, você precisa filtrar para apenas respostas de código de status 429. Para chamadas à API REST, a filtragem é realizada por meio da propriedade $filter e da dimensão StatusCode acrescentando $filter=StatusCode eq '429', conforme visto no final da solicitação, ao seguinte snippet de código:

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

Você também pode filtrar diretamente no portal: captura de tela filtrando o Código de Status de HTTP para respostas 429 apenas no portal do Azure.

Examinar erros do servidor

Com aparência semelhante à da visualização de solicitações limitadas, você filtra somente as respostas 5xx para exibir todas as solicitações que retornaram um código de resposta de erro de servidor. Para chamadas à API REST, a filtragem é realizada por meio da propriedade $filter e da dimensão StatusCodeClass acrescentando $filter=StatusCodeClass eq '5xx', conforme visto no final da solicitação, ao seguinte snippet de código:

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

Você também pode realizar a filtragem de erros genéricos do servidor no portal definindo a propriedade do filtro como 'StatusCodeClass' e o valor como '5xx', semelhante ao que foi feito no exemplo de limitação.

Próximas etapas