Получение метрик в формате Prometheus text-based exposition
В этом разделе описано, как получить метрики из облака Cloud.ru в формате Prometheus text-based exposition по pull-модели (scraping).
Перед началом работы
Для работы с API личного кабинета Cloud.ru потребуется:
эндпоинт для запросов — https://monitoring.api.cloud.ru;
project_id.
Пример запроса с project_id вашего проекта для работы с API Cloud.ru можно найти в личном кабинете в разделе Мониторинг → Публичные API, блок Получение метрик.
Получение метрик с помощью curl-запроса
Чтобы получить метрики:
Выполните запрос:
curl -X GET --location "https://monitoring.api.cloud.ru/v2/{project_id}/scrape_metrics?match=условие" \ -H "Authorization: Bearer $TOKEN"В теле запроса укажите следующие параметры:
match — обязательный параметр. Фильтр для задания условий и получения данных о метриках. Любой валидный запрос в promQL формате, который возвращает массив значений. Например:
match={product_type="enterprise_network"} — возвращает все метрики выделенных устройств NSX Provider Gateway/T0/Edge/T1;
match={product_instаnce_id="abcd..."} — возвращает все метрики экземпляра продукта;
match=usage_average — возвращает метрики по использованию процессора виртуальных машин платформы Облако VMware.
start — опциональный параметр. Начало временного интервала, за который необходимо получить данные о метриках.
end — опциональный параметр. Конец временного интервала, за который необходимо получить данные о метриках.
В ответ на запрос возвратятся последние значения метрик, удовлетворяющих запросу, за указанный временной интервал.
metric_name{label_name="label_value",label_name="label_value",...} value timestamp
Где:
metric_name — название метрики;
label_name — название лейбла метрики;
label_value — значение лейбла;
value — значение метрики;
timestamp — временная метка, указанная в Unix timestamp в миллисекундах.
Каждому временному ряду соответствует отдельная строчка в получаемом массиве данных. Например:
{nsx.gw.port.tx.total_packets{alias="abcd-VDC-1-edge02",host_id="uuid",host_name="abcd-VDC-1-edge02-qwerty",interface_name="192.168.1.254/-ba9b508c...",interface_type="Tx segment downlink",product_type="enterprise_network",project_id="uuid",region="Lab",service_instance_id="uuid",tenant_name="abcd-UI-QWERTY"} 1.027992130413 1703848117458nsx.gw.port.tx.total_packets{alias="abcd-VDC-1-edge02",host_id="uuid",host_name="abcd-VDC-1-edge02-qwerty",interface_name="Uplink",interface_type="T1 uplink",product_type="enterprise_network",project_id="uuid",region="Lab",service_instance_id="uuid",tenant_name="abcd-UI-QWERTY"} 2.159119950351 1703848117457}
В результате одного запроса может вернуться максимум 10 000 таймсерий. Если их будет больше, вернется ошибка.
Получение метрик с помощью vmagent
Для автоматизации сбора метрик по pull-модели можно использовать Prometheus или другой удобный инструмент.
Подробнее о настройках сборщика метрик в документации scrape_configs.
Пример конфигурации vmagent:
config:global:scrape_interval: 30s #периодичность сбораscrape_configs:- job_name: 'cloud.ru_project1'static_configs:- targets:- monitoring.api.cloud.ru #эндпоинт публичного API сервиса мониторингаlabels: #статическое назначение дополнительных лейблов в собираемые метрикиcustom_label_name: custom_label_valuehonor_labels: true #отдает приоритет исходным лейблам таймсерий в случае конфликта наименований с лейблами, назначаемыми статическиhonor_timestamps: true #сохраняет переданный таймстемпmetrics_path: /v2/{project_id}/scrape_metrics?match={product_type="enterprise_network"} #путь для получения метрик. Необходимо поставить свой project_id и фильтр метрик после matchscheme: httpsoauth2: #настройка обращения в IAM для выдачи JWT токена для подписи запросовclient_id: "%{CLIENT_ID}"client_secret: "%{CLIENT_SECRET}"token_url: "https://id.cloud.ru/auth/system/token"endpoint_params:"grant_type": "access_key"
Набор методов для получения метрик в формате Prometheus text-based exposition
Получение метрик проекта Облачной платформы Cloud.ru в формате Prometheus text-based exposition
project_id (string) – Идентификатор проекта
match (array) – Правила выборки метрик - селектор временных рядов Prometheus
start (integer) – Начало временного интервала, за который необходимо получить данные о метриках
end (integer) – Конец временного интервала, за который необходимо получить данные о метриках
200 OK – Успешное выполнение запроса
400 Bad Request – Некорректный запрос
401 Unauthorized – Необходима авторизация
403 Forbidden – Доступ запрещен
404 Not Found – Ресурс не найден
500 Internal Server Error – Внутренняя ошибка сервера