nav-img
Evolution

Схема сбора метрик

Метрики Prometheus собираются двумя способами — через статический конфигурационный файл или динамический Service Discovery.

Статический конфиг

Сбор метрик со storage-сервисов происходит через OpenTelemetry collector. Коллектор устанавливается на storage-хост и собирает все метрики с локальных сервисов. Prometheus собирает метрики с хостов через endpoint OpenTelemetry collector.

Для сбора метрик добавьте в конфигурационный файл /etc/prometheus/prometheus.yml в раздел static_configs таргеты с IP-адресами всех хостов. В случае добавления или удаления хоста внесите новые данные в static_configs.

Сбор метрик через OpenTelemetry collector

Service Discovery

Рекомендуемый и наиболее гибкий способ сбора метрик. Prometheus получает список таргетов для сбора метрик по протоколу HTTP SD через Metadata Server. В случае добавления или удаления хоста таргеты динамически обновляются через Service Discovery.

Сбор метрик через Service Discovery

Prometheus и OpenTelemetry collector могут использовать как статические конфигурации сервисов, с которых нужно собирать метрики, так и получать этот список из внешних источников.

Для получения списка целей для сбора метрик из MDS отправьте запрос к Prometheus endpoint:

curl MDS_IP_ADDRESS:60080/targets

Запрос возвращает все цели для сбора метрик.

Каждая цель имеет свой набор меток, по умолчанию у всех целей есть:

  • cluster_id;

  • cluster_uuid;

  • cluster_name.

Для каждой метки задаются host_id и service. Это позволяет получать цели для конкретных хостов или сервисов.

Запрос, возвращающий все цели на хосте 0x985403c287ad0aa0 среди MDS и CSD:

curl MDS_IP_ADDRESS:60080/targets?host_id=0x985403c287ad0aa0&service=csd&service=mds

При запросе можно задать сервисы:

  • csd;

  • mds;

  • otel_collector;

  • node_exporter.

Схема работы механизма обнаружения сервисов для SDS изображена на рисунке ниже:

Схема работы механизма обнаружения сервисов для SDS

Prometheus обращается в заданный MDS для получения списка всех OpenTelemetry collector, OpenTelemetry collector, MDS, CSD и node_exporter.

Примечание

Цели для сбора метрик могут быть получены только через один заранее выбранный MDS. При удалении этого MDS из кластера необходимо обновить все адреса в Prometheus и OpenTelemetry collector. Возможным решением является назначение адреса для получения целей через /etc/hosts или использование DNS-сервера.

На всех хостах для NodeExporter и OpenTelemetry collector порты должны совпадать, значения по умолчанию:

  • NodeExporter — 9100;

  • OpenTelemetry collector— 60091.

Для изменения этих портов выполните команды:

storage config set --name telemetry.otel_collector.port --value {port}
storage config set --name telemetry.node_exporter.port --value {port}