Сервис экспорта метрик¶
Для экспорта метрик о работе приложений (сервисов) в виде prometheus-метрик используются специализированные библиотеки или независимые сервисы, называемые экспортёры. Экспортёры используются в случаях, когда в наблюдаемом приложении не реализован собственный механизм экспорта prometheus-метрик.
При включении Prometheus server и/или VictoriaMetrics часть экспортёров автоматически включается, а соответствующие таргеты прописываются в конфигурационном файле prometheus.yml. Для включения отдельных экспортёров необходимо, чтобы был включён соответствующий наблюдаемый сервис.
Перечень приложений (сервисов), для которых система мониторинга производит сбор метрик, а также условия включения представлен в таблице:
Наименование приложения (сервиса) |
Механизм экспорта метрик |
Условие включения экспортёра |
|---|---|---|
OpenStack
(nova, cinder, neutron, placement и др.)
|
prometheus openstack exporter |
|
libvirt |
prometheus libvirt exporter |
enable_nova: "yes" иnova_compute_virt_type in ['kvm', 'qemu'] и(
enable_prometheus: "yes" или enable_victoriametrics: "yes") |
MariaDB |
prometheus mysqld exporter |
|
Proxysql |
Встроенный |
enable_proxysql: "yes" и(
enable_prometheus: "yes" или enable_victoriametrics: "yes") |
RabbitMQ |
Встроенный |
enable_rabbitmq: "yes" и(
enable_prometheus: "yes" или enable_victoriametrics: "yes") |
Linux (производительность, утилизация) |
prometheus node exporter |
|
Linux (сервисы, контейнеры, пакеты) |
hypervisor exporter |
|
Consul |
prometheus consul exporter |
enable_consul: "yes" и(
enable_prometheus: "yes" или enable_victoriametrics: "yes") |
Memcached |
prometheus memcached exporter |
|
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 |
|
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 |
|
Prometheus server |
Встроенный |
|
VictoriaMetrics |
Встроенный |
|
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, при помощи подключаемых сборщиков метрик. По умолчанию в конфигурации экспортёра включена только часть сборщиков.
Подключение или отключение сборщиков метрик осуществляется при помощи параметров запуска экспортёра. Для добавления дополнительных параметров запуска экспортёра выполните следующие действия:
В конфигурационный файл региона (по умолчанию
/globals.d/REGION.yml) добавьте переменнуюprometheus_node_exporter_cmdline_extrasс необходимыми значениями.Запустите пайплайн с тегом
prometheus.После завершения пайплайна значение переменной будет добавлено в команду запуска экспортёра.
Подробная документация по экспортёру доступна по ссылке 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 |
|
system |
true |
|
sensors |
false |
|
power |
false |
|
events |
false |
|
storage |
false |
|
memory |
false |
|
network |
false |
|
extra |
false |
|
all |
false |
|
Группа all переопределяет все остальные группы и включает сбор всех метрик.
При включении группы events возможно отфильтровать события, по которым производится сбор метрик, по минимальному уровню критичности и максимальному возрасту события. Управление фильтрами задаётся с помощью соответствующих переменных в конфигурационном файле региона (по умолчанию /globals.d/REGION.yml).
Наименование фильтра |
Значение по умолчанию |
Наименование переменной |
|---|---|---|
severity |
warning |
|
maxage |
7d |
|
Важно
Включение дополнительных групп увеличивает время сбора метрик. Необходимо отслеживать превышение таймаута для задания экспортёра.
Управление интервалом и таймаутом задания экспортёра задаётся с помощью соответствующих переменных в конфигурационном файле региона (по умолчанию /globals.d/REGION.yml).
Наименование параметра |
Значение по умолчанию |
Наименование переменной |
|---|---|---|
Интервал сбора метрик (scrape interval) |
180s |
|
Таймаут сбора метрик (scrape timeout). Не должен превышать интервал сбора метрик. |
180s |
|
HTTP таймаут в секундах для вызовов Redfish API |
60 |
|
Подробная документация по экспортёру доступна по ссылке https://github.com/mrlhansen/idrac_exporter/tree/master.