Compartir a través de


Biblioteca cliente de métricas de consulta de Azure Monitor para JavaScript: versión 1.0.0

La biblioteca cliente de métricas de consulta de Azure Monitor se usa para ejecutar consultas de solo lectura en la plataforma de datos de métricas de Azure Monitor:

  • Métricas : recopila datos numéricos de los recursos supervisados en una base de datos de series temporales. Las métricas son valores numéricos que se recopilan a intervalos regulares y describen algún aspecto de un sistema en un momento determinado. Las métricas son ligeras y capaces de admitir escenarios casi en tiempo real, por lo que son útiles para alertas y detección rápida de problemas.

Migración desde @azure/monitor-query el ⚠aviso ️

Consulte la Guía de migración para obtener instrucciones detalladas sobre cómo actualizar el código de la aplicación del paquete original @azure/monitor-query a la @azure/monitor-query-metrics biblioteca.

Recursos:

Cómo empezar

Entornos soportados

Para obtener más información, consulte nuestra política de soporte.

Prerrequisitos

Instalación del paquete

Instale la biblioteca cliente de métricas de consulta de Azure Monitor para JavaScript con npm:

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

Creación del cliente

Se requiere un cliente autenticado para consultar las métricas. Para autenticarse, en el ejemplo siguiente se usa DefaultAzureCredential del paquete @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);

Configuración del cliente para la nube soberana de Azure

De forma predeterminada, los clientes de la biblioteca están configurados para usar la nube pública de Azure. Para usar una nube soberana en su lugar, proporcione el punto de conexión y el valor de audiencia correctos al crear una instancia de un cliente. Por ejemplo:

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",
});

Ejecución de la consulta

Para obtener ejemplos de consultas de métricas, consulte la sección Ejemplos .

Conceptos clave

Estructura de datos de métricas

Cada conjunto de valores de métricas es una serie temporal con las siguientes características:

  • Hora en que se recopiló el valor
  • Recurso asociado al valor
  • Un espacio de nombres que actúa como una categoría para la métrica
  • Un nombre de métrica
  • El propio valor
  • Algunas métricas tienen varias dimensiones, como se describe en métricas multidimensionales. Las métricas personalizadas pueden tener hasta 10 dimensiones.

Ejemplos

Consulta de métricas

Para consultar las métricas de uno o varios recursos de Azure, use el queryResources método .MetricsClient Este método requiere un punto de conexión regional al crear el cliente. Por ejemplo: https://westus3.metrics.monitor.azure.com.

Cada recurso de Azure debe residir en:

  • La misma región que el punto de conexión especificado al crear el cliente.
  • La misma suscripción de Azure.

Los ID de recursos deben ser los de los recursos para los que se consultan las métricas. Normalmente es del formato /subscriptions/<id>/resourceGroups/<rg-name>/providers/<source>/topics/<resource-name>.

Para encontrar el ID/URI del recurso:

  1. Vaya a la página del recurso en Azure Portal.
  2. Seleccione el vínculo Vista JSON en la sección Información general .
  3. Copie el valor en el cuadro de texto ID de recurso en la parte superior de la vista JSON.

Además:

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}`);
}

Control de la respuesta de consulta de métricas

La API de consulta de métricas devuelve una lista de MetricsQueryResult objetos. El MetricsQueryResult objeto contiene propiedades como una lista de Metricobjetos con tipo, granularity, namespacey timespan. Se puede acceder a la Metric lista de objetos mediante la metrics propiedad. Cada Metric objeto de esta lista contiene una lista de TimeSeriesElement objetos. Cada TimeSeriesElement objeto contiene data y metadatavalues propiedades. En forma visual, la jerarquía de objetos de la respuesta es similar a la siguiente estructura:

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 uno MetricsQueryResult se devuelve en el mismo orden que el recurso correspondiente en el resourceIds parámetro. Si se consultan varias métricas diferentes, las métricas se devuelven en el orden de las metricNames enviadas.

Ejemplo de manejo de respuesta:

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 obtener un inventario de las métricas y dimensiones disponibles para cada tipo de recurso de Azure, consulte Métricas admitidas con Azure Monitor.

Solución de problemas

Para diagnosticar varios escenarios de error, consulte la guía de solución de problemas.

Pasos siguientes

Para más información sobre Azure Monitor, consulte la documentación del servicio Azure Monitor.

Contribución

Si desea contribuir a esta biblioteca, lea la guía de contribución de para obtener más información sobre cómo compilar y probar el código.

Las pruebas de este módulo son una combinación de pruebas dinámicas y unitarias, que requieren que tenga una instancia de Azure Monitor. Para ejecutar las pruebas, deberá ejecutar:

  1. rush update
  2. rush build -t @azure/monitor-query-metrics
  3. cd into sdk/monitor/monitor-query-metrics
  4. Copie el sample.env archivo en .env
  5. Abra el .env archivo en un editor y rellene los valores.
  6. npm run test.

Para obtener más detalles, consulte nuestra carpeta de pruebas .