Сервер метрик
Сервер метрик используется в инфраструктуре QHB для сбора, агрегации и пересылки метрик в различные системы:
- систему мониторинга Graphite;
- базу данных временных рядов Prometheus;
- агент по сбору метрик и журналов Vector;
- для сохранения данных метрик в CSV-файлах.
Список и особенности формирования метрик QHB содержатся в разделе Метрики QHB.
Сервер метрик должен быть установлен и настроен на каждой машине, где работают компоненты QHB (сам сервер баз данных или QCP). Подробную информацию см. в разделе Установка.
При необходимости агрегатор сервера метрик можно разместить на отдельном хосте. Подробную информацию см. в разделе Работа сервера метрик в режиме разделенного коллектора и агрегатора.
Настройка сервера метрик
Пример файла конфигурации устанавливается по пути /etc/metricsd/config-example.yaml.
Для работы сервера необходимо скопировать его в /etc/metricsd/config.yaml и скорректировать необходимые параметры. Особого внимания требует раздел aggregation → backends. Настройка сервера метрик под разных потребителей представлена в соответствующих разделах:
- Конфигурация сервера метрик для Graphite;
- Конфигурация сервера метрик для формирования CSV-файлов;
- Конфигурация сервера метрик для Vector;
- Конфигурация сервера метрик для Prometheus.
Для автоматического запуска сервера при старте системы активируйте соответствующий сервис systemd:
$ sudo systemctl enable --now metricsd.service
В случае потери связи между сервером метрик и QHB (происходит в случае перезагрузки сервиса сервера метрик) в результате чего снижается количество поступающих метрик и в журнале появляются уведомления «Failed to open a metrics sender» (не удалось открыть передатчик метрик), для повторного подключения сервера метрик к базе администратор должен выполнить либо перезапуск QHB, либо вызов следующей функции в QHB:
SELECT metrics_reset();
После выполнения команды необходимо убедиться, что количество поступающих метрик вернулось к изначальному объему (восстановление должно произойти в течении 1 минуты).
В конфигурации базы нужно изменить строчку:
#metrics_collector_path = 'path/to/metrics`
на
metrics_collector_path = '@metrics-collector'
А затем перезапустить базу данных в следующем порядке:
- запустить metricsd;
- запустить базу данных;
- запустить систему для приема метрик (Graphite, Prometheus и т. д.).
Конфигурация сервера метрик для Graphite
Тема установки и настройки Graphite выходит за рамки данной документации. Пожалуйста, обратитесь к документации Graphite.
# Конфигурация серверов. Должен быть сконфигурирован хотя бы один сервер.
backends:
# Конфигурация сервера graphite
- graphite:
# Адрес терминала TCP Graphite для текстового протокола. Порт по умолчанию: 2003.
# Доступен только протокол TCP, поэтому если Graphite не принимает подключение
# к этому порту, это вызовет ошибку!
address: "graphite:2003"
# Префикс, добавляемый к имени каждой метрики. Необязательный параметр; по
# умолчанию — пустая строка.
prefix: ""
# Время ожидания подключения. Необязательный параметр; по умолчанию — 30
# секунд.
connection_timeout: "30 sec"
# Время ожидания отправки данных. Необязательный параметр; по умолчанию — 5
# секунд.
send_timeout: "5 sec"
Исправьте параметр address на реальный адрес сервера Graphite в вашей сети. Также рекомендуется изменить значение параметра prefix на, например, имя машины, на которой запущен сервер. Этот префикс будет добавляться ко всем генерируемым метрикам.
Конфигурация сервера метрик для формирования CSV-файлов
# Конфигурация серверов. Должен быть сконфигурирован хотя бы один сервер.
backends:
# Конфигурация серверного процесса CSV (в случае необходимости копирования
# данных о метриках в CSV-файлы)
- csv:
# Каталог, содержащий CSV-файлы.
directory: "/var/lib/qhb/csv_create"
# Системный идентификатор экземпляра QHB.
qhb_instance: "instance_name"
# Интервал переключения CSV-файлов (необязательно).
rotation_age: "1 h"
# Настройка времени следующего переключения после запуска (необязательно).
rotation_offset: 2022-03-01T18:00:00
Параметры конфигурации серверного процесса CSV необходимы в случае, если нужно сохранять данные метрик в CSV-файлы. Для этого используются следующие параметры:
-
directory указывает место расположения CSV-файлов.
-
qhb_instance — системный идентификатор экземпляра; не может быть пустым и содержать кавычки, в чем-то аналогичен параметру prefix, но его значение при загрузке данных метрик заполняет отдельный столбец в таблице метрик, не связанный с именем метрик. Может быть полезен при наличии нескольких экземпляров QHB на одном сервере.
-
rotation_age — период переключения CSV-файлов. Единицы измерения можно задавать, например, в виде секунд (s), минут (m), часов (h), дней (d).
-
rotation_offset — этот параметр задает время переключения на очередной CSV-файл после запуска сервера метрик. Время указывается для часового пояса UTC. Параметр удобно использовать для выравнивания начала очередного периода, например, по началу следующего часа.
Конфигурация сервера метрик для Vector
Тема установки и настройки сборщика журналов Vector выходит за рамки данной документации. Пожалуйста, обратитесь к документации Vector.
Пример настройки конфигурации источника данных Vector для сервера метрик QHB:
sources:
qhb_metricsd:
type: "http_server"
address: "metricsd:80"
acknowledgements: false
encoding: "ndjson"
Настройка параметров сервера метрик:
# Конфигурация серверов. Должен быть сконфигурирован хотя бы один сервер.
backends:
# Конфигурация серверного процесса Vector
- vector.dev:
# URL-адрес слушателя vector типа "http_server", настроенного на получение
# данных в формате "ndjson".
url: "metricsd:80"
Измените в параметрах address и url значение metricsd на реальный адрес сервера метрик в вашей сети.
Конфигурация сервера метрик для Prometheus
Тема установки и настройки Prometheus выходит за рамки данной документации. Пожалуйста, обратитесь к документации Prometheus.
Пример изменений в конфигурации Prometheus для сервера метрик QHB:
scrape_configs:
# Имя операции (job_name) добавляется в виде метки `job=<job_name>` во все
# временные ряды, извлекаемые из этой конфигурации.
- job_name: 'metricsd'
# metrics_path по умолчанию принимает значение '/metrics'
# scheme по умолчанию принимает значение 'http'.
static_configs:
- targets: ['metricsd:8080']
Настройка параметров сервера метрик:
# Конфигурация серверов. Должен быть сконфигурирован хотя бы один сервер.
backends:
# Конфигурация серверного процесса Prometheus:
- prometheus:
# Адрес, который будет выставлен для сканирования процессом Prometheus.
listening_address: "metricsd:8080"
Измените в параметрах targets и listening_address значение metricsd на реальный адрес сервера метрик в вашей сети.
ВНИМАНИЕ!
При отправке метрик в Prometheus все точки, присутствующие в названии метрики, сервером метрик заменяются на «_».