Сервис экспорта метрик

Для экспорта метрик о работе приложений (сервисов) в виде prometheus-метрик используются специализированные библиотеки или независимые сервисы, называемые экспортёры. Экспортёры используются в случаях, когда в наблюдаемом приложении не реализован собственный механизм экспорта prometheus-метрик.

При включении Prometheus server и/или VictoriaMetrics часть экспортёров автоматически включается, а соответствующие таргеты прописываются в конфигурационном файле prometheus.yml. Для включения отдельных экспортёров необходимо, чтобы был включён соответствующий наблюдаемый сервис.

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

Наименование приложения (сервиса)

Механизм экспорта метрик

Условие включения экспортёра

OpenStack
(nova, cinder, neutron, placement и др.)

prometheus openstack exporter

enable_prometheus: "yes" или enable_victoriametrics: "yes"

libvirt

prometheus libvirt exporter

enable_nova: "yes" и

nova_compute_virt_type in ['kvm', 'qemu'] и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

MariaDB

prometheus mysqld exporter

enable_mariadb:"yes"

Proxysql

Встроенный

enable_proxysql: "yes" и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

RabbitMQ

Встроенный

enable_rabbitmq: "yes" и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

Linux (производительность, утилизация)

prometheus node exporter

enable_prometheus: "yes" или enable_victoriametrics: "yes"

Linux (сервисы, контейнеры, пакеты)

hypervisor exporter

enable_prometheus: "yes" или enable_victoriametrics: "yes"

Consul

prometheus consul exporter

enable_consul: "yes" и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

Memcached

prometheus memcached exporter

enable_memcached:"yes"

Multipath

multipath exporter

enable_multipathd: "yes" и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

Fluentd

Встроенный

enable_fluentd: "yes" и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

OpenSearch

prometheus elasticsearch exporter

enable_opensearch: "yes" и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

HTTP эндпоинты

prometheus blackbox exporter

enable_prometheus: "yes" или enable_victoriametrics: "yes"

Bird

prometheus bird exporter

enable_bird: "yes" и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

Open vSwitch

prometheus ovs exporter

enable_openvswitch: "yes" и neutron_plugin_agent == 'openvswitch' и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

Docker-контейнеры

cAdvisor

enable_prometheus: "yes" или enable_victoriametrics: "yes"

Prometheus server

Встроенный

enable_prometheus: "yes"

VictoriaMetrics

Встроенный

enable_victoriametrics:"yes"

Redfish

prometheus redfish exporter

enable_prometheus_redfish_exporter:"yes" и

(enable_prometheus: "yes" или enable_victoriametrics: "yes")

Blackbox exporter

Blackbox exporter предназначен для проверки доступности эндпоинтов по протоколам HTTP, HTTPS, DNS, TCP, ICMP and gRPC.

В конфигурационном файле экспортёра prometheus-blackbox-exporter.yml описываются модули проверки. Конфигурация модуля описывает протокол и параметры подключения к эндпоинту.

По умолчанию в конфигурационном файле экспортёра описаны следующие модули:

  • http_2xx;

  • os_endpoint;

  • http_post_2xx;

  • tcp_connect;

  • tls_connect;

  • ssh_banner;

  • icmp.

Примечание

Изменение параметров модулей и добавление своих модулей производится посредством внесения изменений в конфигурационный файл prometheus-blackbox-exporter.yml с последующим его размещением в репозитории региона в /config/prometheus/ и запуском пайплайна с тегом prometheus. Содержимое файла из репозитория региона перезапишет содержимое конфигурационного файла по умолчанию.

При включении экспортёра в конфигурационный файл prometheus.yml по умолчанию добавляется проверка доступности следующих эндпоинтов (если соответствующий сервис был включён):

Эндпоинт

Модуль проверки

Веб-консоль AdminUI

http_2xx

AdminUI backend

http_2xx

Веб-консоль GitLab

http_2xx

Grafana

http_2xx

Веб-консоль OpenSearch Dashboards

http_2xx

Веб-консоль Horizon

http_2xx

Nexus

http_2xx

Подробная документация по экспортёру доступна по ссылке https://github.com/prometheus/blackbox_exporter.

Добавление эндпоинтов

Для добавления проверки доступности дополнительных эндпоинтов в конфигурационный файл региона (по умолчанию /globals.d/REGION.yml) добавьте переменную prometheus_blackbox_exporter_endpoints с перечнем соответствующих эндпоинтов в формате <название_проверки>:<модуль_проверки>:<адрес_эндпоинта>:<порт_эндпоинта>, где:

  • <название_проверки> — произвольное текстовое значение, соответствует метке service в метриках probe_*,

  • <модуль_проверки> — модуль проверки, описанный в конфигурационном файле prometheus-blackbox-exporter.yml, соответствует метке module в метриках probe_*,

  • <адрес_эндпоинта> — URL, FQDN или IP адрес эндпоинта, в зависимости от используемого модуля, соответствует метке instance в метриках probe_*,

  • <порт_эндпоинта> — сетевой порт, который прослушивает эндпоинт.

Допускается использование переменных kolla-ansible.

Пример конфигурации:

prometheus_blackbox_exporter_endpoints:
  - "ssl_check:http_2xx:https://cloud.itkey.com:443"
  - "ssl_check:http_2xx:https://{{ kolla_external_fqdn }}:{{ horizon_listen_port }}"

Prometheus Node exporter

Prometheus Node exporter формирует метрики о работе операционной системы и оборудования, предоставляемых ядрами *NIX, при помощи подключаемых сборщиков метрик. По умолчанию в конфигурации экспортёра включена только часть сборщиков.

Подключение или отключение сборщиков метрик осуществляется при помощи параметров запуска экспортёра. Для добавления дополнительных параметров запуска экспортёра выполните следующие действия:

  1. В конфигурационный файл региона (по умолчанию /globals.d/REGION.yml) добавьте переменную prometheus_node_exporter_cmdline_extras с необходимыми значениями.

  2. Запустите пайплайн с тегом prometheus.

  3. После завершения пайплайна значение переменной будет добавлено в команду запуска экспортёра.

Подробная документация по экспортёру доступна по ссылке https://github.com/prometheus/node_exporter.

Мониторинг systemd-сервисов

Наблюдение за systemd-сервисами и сбор метрик по их работе осуществляется с помощью node exporter. Сбор метрик экспортёром производится через обращение к D-Bus сокету на узле.

Примечание

Для обеспечения возможности обращения экспортёра из docker-контейнера к D-Bus сокету на узле должна присутствовать технологическая учётная запись с таким же uid как у пользователя, от имени которого работает экспортёр (по умолчанию имя пользователя prometheus, uid 42472).

Важно

При включённом на узле AppArmor также для docker-контейнера с экспортёром назначьте AppArmor-политику, разрешающую отправку сообщений к D-Bus.

Для включения сбора метрик о сервисах systemd в параметры запуска node exporter добавьте параметр "--collector.systemd". Данный параметр включает сбор метрик о текущем статусе по всем сервисам systemd.

Для мониторинга перезапуска systemd-сервисов дополнительно добавьте параметр "--collector.systemd.enable-restarts-metrics".

Для сбора данных только по определённому списку сервисов дополнительно добавьте параметр "--collector.systemd.unit-include", в котором укажите regex-фильтр названий сервисов.

Пример конфигурации со сбором метрик о сервисах systemd, включая метрики о перезапуске сервисов, ограничиваясь только сервисами chronyd, containerd, а также всеми сервисами, название которых начинается с kolla-:

prometheus_node_exporter_cmdline_extras: "--collector.systemd --collector.systemd.unit-include (chronyd|containerd|kolla-.+).service --collector.systemd.enable-restarts-metrics"

Перезапуск systemd-сервисов отражает метрика node_systemd_service_restart_total. Значение метрики будет увеличиваться при нештатном перезапуске сервиса, например, в таких случаях как: ошибка конфигурации сервиса, перезапуск соответствующего контейнера командой docker restart.

Важно

Перезапуск сервиса командой systemctl restart <имя сервиса> приведёт к обнулению значения метрики и алерт не будет создан.

Отслеживание перезапуска сервиса командой systemctl restart <имя сервиса> возможно реализовать через наблюдение за метрикой node_systemd_unit_start_time_seconds, а точнее за разницей между текущим значением времени и значением данной метрики. В случае, если время прошедшее с момента запуска сервиса меньше порогового значения, то можно считать, что произошёл перезапуск сервиса.

Примечание

Сбор метрики node_systemd_unit_start_time_seconds по умолчанию выключен, для её включения в параметры запуска node exporter добавьте параметр --collector.systemd.enable-start-time-metrics.

Prometheus redfish exporter

Prometheus redfish exporter формирует метрики о работе серверного физического оборудования, используя Redfish API при подключении к BMC-интерфейсу физического сервера.

Функционирование экспортёра реализовано по схеме «мульти-таргет» (multi-target pattern): экспортёр размещается на управляющих узлах, а в качестве таргетов указываются адреса BMC-интерфейсов.

Примечание

Для корректного развёртывания и корректной работы экспортёра необходимо его размещать на одном узле с сервисом сбора и хранения метрик.

При использовании Prometheus server в качестве сервиса сбора и хранения метрик, в базу данных каждого Prometheus server будут записаны метрики только с одного экспортёра, расположенного на том же узле.

При использовании VictoriaMetrics в качестве сервиса сбора и хранения метрик, в базу данных будут записаны метрики со всех экспортёров.

Список таргетов формируется из всех узлов, указанных в inventory, по следующим правилам:

  • Если в inventory для узла задана переменная bmc_address и эта переменная имеет не пустое значение, то в качестве таргета указывается значение переменной bmc_address.

  • Если в inventory для узла переменная bmc_address не задана или эта переменная имеет пустое значение, то таргет формируется как объединение значений переменной hostname из inventory и переменной bmc_suffix из конфигурационного файла региона.

Важно

Необходимо обеспечить корректное разрешение DNS-имён таргетов в IP-адреса BMC-интерфейсов.

Примечание

На каждом сервере в настройках BMC необходимо заранее создать учётную запись для подключения к Redfish API. Достаточно минимальных прав доступа. На некоторых моделях серверов может потребоваться дополнительно включить протокол redfish.

Имя пользователя для подключения к Redfish API задаётся в переменной bmc_monitoring_user (по умолчанию prometheus) в конфигурационном файле региона (по умолчанию /globals.d/REGION.yml). Пароль для учётной записи необходимо внести в Vault в качестве значения ключа bmc_monitoring_password в файле passwords_yml. Для безопасной работы с секретами реализована поддержка взаимодействия с Vault-агентом.

Формируемые экспортёром метрики объединены в несколько групп. Имеется возможность включать сбор метрик только из определённых групп. Включение/выключение сбора метрик конкретной группы задаётся с помощью соответствующих переменных в конфигурационном файле региона (по умолчанию /globals.d/REGION.yml).

Наименование группы

Значение по умолчанию

Наименование переменной

processors

false

enable_redfish_exporter_metric_processors

system

true

enable_redfish_exporter_metric_system

sensors

false

enable_redfish_exporter_metric_sensors

power

false

enable_redfish_exporter_metric_power

events

false

enable_redfish_exporter_metric_events

storage

false

enable_redfish_exporter_metric_storage

memory

false

enable_redfish_exporter_metric_memory

network

false

enable_redfish_exporter_metric_network

extra

false

enable_redfish_exporter_metric_extra

all

false

enable_redfish_exporter_metric_all

Группа all переопределяет все остальные группы и включает сбор всех метрик.

При включении группы events возможно отфильтровать события, по которым производится сбор метрик, по минимальному уровню критичности и максимальному возрасту события. Управление фильтрами задаётся с помощью соответствующих переменных в конфигурационном файле региона (по умолчанию /globals.d/REGION.yml).

Наименование фильтра

Значение по умолчанию

Наименование переменной

severity

warning

redfish_exporter_events_severity

maxage

7d

redfish_exporter_events_maxage

Важно

Включение дополнительных групп увеличивает время сбора метрик. Необходимо отслеживать превышение таймаута для задания экспортёра.

Управление интервалом и таймаутом задания экспортёра задаётся с помощью соответствующих переменных в конфигурационном файле региона (по умолчанию /globals.d/REGION.yml).

Наименование параметра

Значение по умолчанию

Наименование переменной

Интервал сбора метрик (scrape interval)

180s

prometheus_redfish_exporter_interval

Таймаут сбора метрик (scrape timeout).

Не должен превышать интервал сбора метрик.

180s

prometheus_redfish_exporter_timeout

HTTP таймаут в секундах для вызовов Redfish API

60

redfish_exporter_api_timeout

Подробная документация по экспортёру доступна по ссылке https://github.com/mrlhansen/idrac_exporter/tree/master.