Сервер метрик

Сервер метрик используется в инфраструктуре QHB для сбора, агрегации и пересылки метрик в различные системы:

  • систему мониторинга Graphite;
  • базу данных временных рядов Prometheus;
  • агент по сбору метрик и журналов Vector;
  • для сохранения данных метрик в CSV-файлах.

Список и особенности формирования метрик QHB содержатся в разделе Метрики QHB.

Сервер метрик должен быть установлен и настроен на каждой машине, где работают компоненты QHB (сам сервер баз данных или QCP). Подробную информацию см. в разделе Установка.

При необходимости агрегатор сервера метрик можно разместить на отдельном хосте. Подробную информацию см. в разделе Работа сервера метрик в режиме разделенного коллектора и агрегатора.

Настройка сервера метрик

Пример файла конфигурации устанавливается по пути /etc/metricsd/config-example.yaml.

Для работы сервера необходимо скопировать его в /etc/metricsd/config.yaml и скорректировать необходимые параметры. Особого внимания требует раздел aggregation → backends. Настройка сервера метрик под разных потребителей представлена в соответствующих разделах:

Для автоматического запуска сервера при старте системы активируйте соответствующий сервис systemd:

$ sudo systemctl enable --now metricsd.service

В случае потери связи между сервером метрик и QHB (происходит в случае перезагрузки сервиса сервера метрик) в результате чего снижается количество поступающих метрик и появляются логи Failed to open a metrics sender, администратор для повторного подключения сервера метрик к базе должен выполнить либо перезапуск QHB, либо выполнить вызов следующей функции в QHB:

select metrics_reset();

После выполнения команды необходимо убедиться, что количество поступающих метрик вернулось к изначальному объему (восстановление должно произойти в течении 1 минуты).

Конфигурация сервера метрик для 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 на реальный адрес сервера метрик в вашей сети.

В конфигурации базы нужно изменить строчку:

#metrics_collector_path = 'path/to/metrics`

на

metrics_collector_path = '@metrics-collector'

А затем перезапустить базу данных в следующем порядке:

  • запустить metricsd;
  • запустить базу данных;
  • запустить Prometheus.

ВНИМАНИЕ!
При отправке метрик в Prometheus все точки, присутствующие в названии метрики, сервером метрик заменяются на "_".