Схема сбора метрик
Метрики Prometheus собираются двумя способами — через статический конфигурационный файл или динамический Service Discovery.
Статический конфиг
Сбор метрик со storage-сервисов происходит через OpenTelemetry collector. Коллектор устанавливается на storage-хост и собирает все метрики с локальных сервисов. Prometheus собирает метрики с хостов через endpoint OpenTelemetry collector.
Для сбора метрик добавьте в конфигурационный файл /etc/prometheus/prometheus.yml в раздел static_configs таргеты с IP-адресами всех хостов. В случае добавления или удаления хоста внесите новые данные в static_configs.

Service Discovery
Рекомендуемый и наиболее гибкий способ сбора метрик. Prometheus получает список таргетов для сбора метрик по протоколу HTTP SD через Metadata Server. В случае добавления или удаления хоста таргеты динамически обновляются через 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 изображена на рисунке ниже:

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}