Поделиться через


Клиентская библиотека метрик запросов Azure Monitor для JavaScript — версия 1.0.0

Клиентская библиотека метрик запросов Azure Monitor используется для выполнения запросов только для чтения к платформе данных метрик Azure Monitor:

  • Метрики — собирает числовые данные из отслеживаемых ресурсов в базу данных временных рядов. Метрики — это числовые значения, собираемые с регулярными интервалами и описывающие некоторые аспекты системы в определенное время. Метрики являются упрощенными и способными поддерживать сценарии почти в режиме реального времени, что делает их полезными для оповещения и быстрого обнаружения проблем.

Миграция с @azure/monitor-query консультативного ⚠️

Ознакомьтесь с Руководством по миграции , чтобы получить подробные инструкции о том, как обновить код приложения из исходного @azure/monitor-query пакета в библиотеку @azure/monitor-query-metrics .

Ресурсы:

Начало работы

Поддерживаемые среды

Для получения дополнительной информации ознакомьтесь с нашей политикой поддержки.

Предпосылки

  • Подписка Azure
  • Реализация TokenCredential, например, такой тип учетных данных, как в библиотеке удостоверений Azure .
  • Для запроса метрик требуется ресурс Azure любого типа (учетная запись хранения, Key Vault, Cosmos DB и т. д.).

Установите пакет

Установите клиентскую библиотеку метрик запросов Azure Monitor для JavaScript с помощью npm:

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

Создание клиента

Для запроса метрик требуется клиент, прошедший проверку подлинности. Для проверки подлинности в следующем примере используется DefaultAzureCredential из пакета @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);

Настройка клиента для суверенного облака Azure

По умолчанию клиенты библиотеки настроены на использование общедоступного облака Azure. Чтобы использовать суверенное облако, укажите правильное значение конечной точки и аудитории при создании экземпляра клиента. Рассмотрим пример.

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

Выполнение запроса

Примеры запросов метрик см. в разделе Примеры .

Основные понятия

Структура данных метрик

Каждый набор значений метрик — это временный ряд со следующими характеристиками:

  • Время сбора значения
  • Ресурс, связанный со значением
  • Пространство имен, которое действует как категория для метрики
  • Имя метрики
  • Само значение
  • Некоторые метрики имеют несколько измерений, как описано в многомерных метриках. Пользовательские метрики могут содержать до 10 измерений.

Примеры

Запрос метрик

Чтобы запросить метрики для одного или нескольких ресурсов Azure, используйте queryResources метод MetricsClient. Для этого метода требуется региональная конечная точка при создании клиента. Например: https://westus3.metrics.monitor.azure.com.

Каждый ресурс Azure должен находиться в:

  • Тот же регион, что и конечная точка, указанная при создании клиента.
  • Та же подписка Azure.

Идентификаторы ресурсов должны совпадать с идентификаторами ресурсов, для которых запрашиваются метрики. Обычно это формат /subscriptions/<id>/resourceGroups/<rg-name>/providers/<source>/topics/<resource-name>.

Чтобы найти идентификатор/URI ресурса, выполните следующие действия.

  1. Перейдите на страницу ресурса на портале Azure.
  2. Выберите ссылку Представление JSON в разделе Обзор .
  3. Скопируйте значение в текстовое поле Идентификатор ресурса в верхней части представления JSON.

Кроме того:

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

Обработка ответа на запрос метрик

API запросов метрик возвращает список MetricsQueryResult объектов. Объект MetricsQueryResult содержит такие свойства, как список Metric-типизированных объектов, granularity, namespace, и timespan. Доступ Metric к списку объектов можно получить с помощью metrics свойства. Каждый Metric объект в этом списке содержит список TimeSeriesElement объектов. Каждый TimeSeriesElement объект содержит data и metadatavalues свойства. В визуальной форме иерархия объектов ответа напоминает следующую структуру:

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)

Заметка: Каждый из них MetricsQueryResult возвращается в том же порядке, что и соответствующий ресурс в параметре resourceIds . Если запрашивается несколько различных метрик, метрики возвращаются в порядке отправления metricNames .

Пример ответа на обработку:

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

Инвентаризацию метрик и измерений, доступных для каждого типа ресурсов Azure, см. в статье Поддерживаемые метрики с Azure Monitor.

Устранение неполадок

Чтобы диагностировать различные сценарии сбоев, см. руководство по устранению неполадок.

Дальнейшие шаги

Дополнительные сведения об Azure Monitor см. в документации по службе Azure Monitor.

Вклад

Если вы хотите внести свой вклад в эту библиотеку, ознакомьтесь с руководством по вкладу, чтобы узнать больше о том, как создавать и тестировать код.

Тесты этого модуля — это смесь динамических и модульных тестов, которые требуют наличия экземпляра Azure Monitor. Чтобы выполнить тесты, необходимо выполнить следующее:

  1. rush update
  2. rush build -t @azure/monitor-query-metrics
  3. cd into sdk/monitor/monitor-query-metrics
  4. Скопируйте файл в sample.env.env
  5. .env Откройте файл в редакторе и заполните значения.
  6. npm run test.

Для получения более подробной информации просмотрите нашу папку с тестами .