Встроенный Prometheus-сервер¶
control.observability.prometheus
В кластер central/Sapsan встроена плоскость данных статистики. Стримеры Sapsan передают текущую статистику в central; держатель мандата stats формирует историю метрик в памяти. Запросы к этой истории обслуживают графики консоли без дисковой TSDB и отдельного сервера метрик.
В группе из нескольких инстансов central действует одна плоскость статистики и одно хранилище истории. Остальные инстансы пересылают запросы истории держателю мандата: обращения через разные инстансы используют одну историю. Перезапуск держателя или передача мандата создаёт новое хранилище: прежние точки не переносятся.
По умолчанию период сбора составляет 30 секунд, глубина хранения — шесть часов. Дополнительно действуют пределы: 1024 точки на серию и 1 200 000 серий на хранилище. Они ограничивают расход памяти, поэтому шесть часов истории не гарантированы при любой конфигурации. Для длительного хранения используйте внешнюю систему метрик.
Метрики отдельного сервера¶
Отдельный стример Sapsan экспортирует текущие счётчики для сбора внешним Prometheus. Это не предоставляет описанный здесь API запросов к истории: он относится к плоскости статистики кластера в central.
Запросы к кластеру¶
Для Grafana добавьте источник данных типа Prometheus с базовым URL https://central.example/central/api-v4/prometheus и авторизацией management API central. К этой базе добавляются стандартные пути API Prometheus:
- Запросы:
/api/v1/queryи/api/v1/query_range. - Каталог серий и меток:
/api/v1/series,/api/v1/labelsи/api/v1/label/{name}/values. - Информация о сборке:
/api/v1/status/buildinfo.
Этот URL использует бэкенд, выбранный настройкой central.stats: встроенную историю, внешний Prometheus или Retroview. Описанные выше ограничения памяти и глубины хранения относятся только ко встроенной истории.
В сериях стримов метка name обозначает стрим, а server_id — стример. Встроенный движок поддерживает подмножество PromQL; неподдерживаемые конструкции возвращают явную ошибку.
rate(in_media_bytes_total{name="cam1"}[1m])
sum by (server_id) (rate(in_media_bytes_total[1m]))