Compartilhar via


Biblioteca de clientes de Métricas de Consulta do Azure Monitor para JavaScript – versão 1.0.0

A biblioteca de clientes de Métricas de Consulta do Azure Monitor é usada para executar consultas somente leitura na plataforma de dados de métricas do Azure Monitor:

  • Métricas - Coleta dados numéricos de recursos monitorados em um banco de dados de série temporal. Métricas são valores numéricos que são coletados a intervalos regulares e descrevem algum aspecto de um sistema em um determinado momento. As métricas são leves e capazes de dar suporte a cenários quase em tempo real, tornando-as úteis para alertas e detecção rápida de problemas.

Migrando de @azure/monitor-query consultoria ⚠️

Confira o Guia de migração para obter instruções detalhadas sobre como atualizar o código do aplicativo do pacote original @azure/monitor-query para a @azure/monitor-query-metrics biblioteca.

Recursos

Como começar

Ambientes com suporte

Para obter mais informações, consulte nossa política de suporte.

Pré-requisitos

Instalar o pacote

Instale a biblioteca de clientes de Métricas de Consulta do Azure Monitor para JavaScript com npm:

npm install --save @azure/monitor-query-metrics

Criar o cliente

Um cliente autenticado é necessário para consultar Métricas. Para autenticar, o exemplo a seguir usa DefaultAzureCredential do pacote @azure/identity .

import { DefaultAzureCredential } from "@azure/identity";
import { MetricsClient } from "@azure/monitor-query-metrics";

const credential = new DefaultAzureCredential();

// Create a MetricsClient
const endpoint = " https://<endpoint>.monitor.azure.com/";
const metricsClient = new MetricsClient(endpoint, credential);

Configurar o cliente para a nuvem soberana do Azure

Por padrão, os clientes da biblioteca são configurados para usar a Nuvem Pública do Azure. Em vez disso, para usar uma nuvem soberana, forneça o ponto de extremidade correto e o valor de audiência ao instanciar um cliente. Por exemplo:

import { DefaultAzureCredential } from "@azure/identity";
import { MetricsClient } from "@azure/monitor-query-metrics";

const credential = new DefaultAzureCredential();

// Create a MetricsClient
const endpoint = " https://<endpoint>.monitor.azure.cn/";
const metricsClient = new MetricsClient(endpoint, credential, {
  audience: "https://monitor.azure.cn/.default",
});

Executar a consulta

Para obter exemplos de consultas do Metrics, consulte a seção Exemplos .

Conceitos principais

Estrutura de dados de métricas

Cada conjunto de valores de métrica é uma série temporal com as seguintes características:

  • A hora em que o valor foi coletado
  • O recurso associado ao valor
  • Um namespace que atua como uma categoria para a métrica
  • Um nome de métrica
  • O valor em si
  • Algumas métricas têm várias dimensões, conforme descrito em métricas multidimensionais. As métricas personalizadas podem ter até 10 dimensões.

Exemplos

Consulta de métricas

Para consultar métricas para um ou mais recursos do Azure, use o queryResources método de MetricsClient. Esse método requer um ponto de extremidade regional ao criar o cliente. Por exemplo, https://westus3.metrics.monitor.azure.com.

Cada recurso do Azure deve residir em:

  • A mesma região que o ponto de extremidade especificado ao criar o cliente.
  • A mesma assinatura do Azure.

As IDs de recurso devem ser as dos recursos para os quais as métricas estão sendo consultadas. Normalmente é do formato /subscriptions/<id>/resourceGroups/<rg-name>/providers/<source>/topics/<resource-name>.

Para localizar a ID/URI do recurso:

  1. Navegue até a página do recurso no portal do Azure.
  2. Selecione o link Exibição JSON na seção Visão geral .
  3. Copie o valor na caixa de texto ID do recurso na parte superior da exibição JSON.

Além disso:

import { DefaultAzureCredential } from "@azure/identity";
import { MetricsClient } from "@azure/monitor-query-metrics";

const resourceIds = [
  "/subscriptions/0000000-0000-000-0000-000000/resourceGroups/test/providers/Microsoft.OperationalInsights/workspaces/test-logs",
  "/subscriptions/0000000-0000-000-0000-000000/resourceGroups/test/providers/Microsoft.OperationalInsights/workspaces/test-logs2",
];
const metricsNamespace = "Microsoft.OperationalInsights/workspaces";
const metricNames = ["Heartbeat"];
const endpoint = "https://westus3.metrics.monitor.azure.com";

const credential = new DefaultAzureCredential();
const metricsClient = new MetricsClient(endpoint, credential);

const result = await metricsClient.queryResources(resourceIds, metricNames, metricsNamespace, {
  aggregation: "Count",
});

console.log(`Retrieved metrics for ${result.length} resources`);
for (const resource of result) {
  console.log(`Resource: ${resource.resourceId}`);
  console.log(`Metrics: ${resource.metrics.length}`);
}

Lidar com a resposta da consulta de métricas

A API de consulta de métricas retorna uma lista de MetricsQueryResult objetos. O MetricsQueryResult objeto contém propriedades como uma lista de Metricobjetos -typed, granularity, namespacee timespan. A Metric lista de objetos pode ser acessada usando a metrics propriedade. Cada Metric objeto nesta lista contém uma lista de TimeSeriesElement objetos. Cada TimeSeriesElement objeto contém data e metadatavalues propriedades. Na forma visual, a hierarquia de objetos da resposta se assemelha à seguinte estrutura:

MetricsQueryResult
|---granularity
|---timespan
|---cost
|---namespace
|---resourceRegion
|---metrics (list of `Metric` objects)
    |---id
    |---type
    |---name
    |---unit
    |---timeseries (list of `TimeSeriesElement` objects)
        |---metadatavalues
        |---data (list of data points)

Nota: Cada um MetricsQueryResult é retornado na mesma ordem que o recurso correspondente no resourceIds parâmetro. Se várias métricas diferentes forem consultadas, as métricas serão retornadas na ordem dos metricNames enviados.

Exemplo de resposta de manipulação:

import { DefaultAzureCredential } from "@azure/identity";
import { MetricsClient, Durations } from "@azure/monitor-query-metrics";

const resourceIds = [
  "/subscriptions/0000000-0000-000-0000-000000/resourceGroups/test/providers/Microsoft.OperationalInsights/workspaces/test-logs",
];
const metricsNamespace = "Microsoft.OperationalInsights/workspaces";
const metricNames = ["Heartbeat"];
const endpoint = "https://westus3.metrics.monitor.azure.com";

const credential = new DefaultAzureCredential();
const metricsClient = new MetricsClient(endpoint, credential);

const endTime = new Date();
const startTime = new Date(endTime.getTime() - 60 * 60 * 1000); // 1 hour ago

const result = await metricsClient.queryResources(resourceIds, metricNames, metricsNamespace, {
  aggregation: "Count,Average", // Multiple aggregations
  startTime: startTime,
  endTime: endTime,
  interval: Durations.fiveMinutes,
  top: 10, // Limit results
  orderBy: "count desc", // Sort by count descending
  filter: "Computer eq '*'", // Filter criteria
});

console.log(`Retrieved ${result.length} resources with advanced filtering`);
for (const resource of result) {
  for (const metric of resource.metrics) {
    console.log(`Metric: ${metric.name}`);
    console.log(`Time series count: ${metric.timeseries.length}`);
  }
}

Para obter um inventário de métricas e dimensões disponíveis para cada tipo de recurso do Azure, consulte Métricas com suporte com o Azure Monitor.

Resolução de problemas

Para diagnosticar vários cenários de falha, consulte o guia de solução de problemas.

Próximas etapas

Para saber mais sobre o Azure Monitor, consulte a documentação do serviço do Azure Monitor.

Contribuindo

Se você quiser contribuir com essa biblioteca, leia o guia de contribuição para saber mais sobre como criar e testar o código.

Os testes deste módulo são uma mistura de testes dinâmicos e de unidade, que exigem que você tenha uma instância do Azure Monitor. Para executar os testes, você precisará executar:

  1. rush update
  2. rush build -t @azure/monitor-query-metrics
  3. cd into sdk/monitor/monitor-query-metrics
  4. Copie o sample.env arquivo para .env
  5. Abra o .env arquivo em um editor e preencha os valores.
  6. npm run test.

Para obter mais detalhes, consulte nossa pasta de testes .