Мониторинг доступности порта хоста в Prometheus

Алгоритм действий состоит из следующих шагов:

1.Настройка конфигурационного файла Blackbox-экспортера на поддержку проверки порта целевого хоста
2.Настройка Prometheus-а для подключения и поддержки Blackbox-экспортера
3.Настрйка правил Prometheus для мониторинга доступности/недоступности порта целевого хоста

Например, проверим,что mysql-port(3306) НЕ доступен снаружи для подключений
т.е. если кто-то выставит наружу mysql, то система мониторинга это обнаружит и оповестит по соответствующему каналу связи

 

1.Настройка конфигурационного файла Blackbox-экспортера на поддержку tcp-проверки

Определяем модуль с именем tcp_connect.
Время проверки — до 5 секунд
Протокол для проверки — TCP

 

2.Настройка Prometheus-а для подключения и поддержки blackbox-экспортера

Определение конетйнера blackbox-exporter в docker-compose.yml

Конфигурационный файл blackbox-exporter-а монтируется как volume для возможности его изменения и применения новых настроек без пересборки контейнера
Значение переменных определяющих размер резервируемой и максимально доступной памяти для контейнера, а также версию/тег образа, вынесем в файл с переменными окружения .env, который читает docker-compose

 

В конфигурационном файле prometheus определяем цели(хосты), доступность/недоступность портов MySQL которых необходимо мониторить
Название модуля(tcp_connect) должно совпадать с именем модуля, указанным в конфигурационном файле blackbox-экспортера — blackbox.yml (см.пункт 1)
За счет переназначения меток в подразделе relabel_configs значение поля(метки) instance будет равно значению поля(метки) addess(а address — это те имена хостов/IP-адреса, которые указаны в параметре targets)
т.к нас интересует порт mysql, то добавляем 3306(если используется дефолтный порт) к именам хостов в подразделе targets

Проверка синтаксиса конфиг.файла Prometheus и файлов с правилами

Проверка синтаксиса docker-compose.yml файла

Создаем и запускаем blackbox-exporter, проверяем корректность его запуска

Логи контейнера blackbox-exporter

После чего проверяем в Prometheus наличие новых целей для мониторинга

 

3.Настрйка правил Prometheus для мониторинга доступности/недоступности порта целевого хоста

Добавляем правило для мониторинга доступности/недоступности порта 3306
Если порт доступен снаружи, то правило сработает и отправит оповещение через настроенный канал связи(например, Slack)

1.Порт MySQL(3306) доступен снаружи

Проверка синтаксиса конфиг.файла Prometheus и файлов с правилами

Перечитываем конф.файл Prometheus

После чего в Prometheus→Alerts появляется добавленное правило

При изменении конфигурационного файла blackbox-exporter-а blackbox.yml для применения новых настроек достаточно послать POST запрос на перечитывание своего конф.файл blackbox-exporter контейнеру. Если в этом файле будут ошибки,то изменения не применяются и соответствующая ошибка будет в выводе такого POST-запроса
Например, это можно сделать из любого контейнера, который находится в одной docker-сети с blackbox-exorter-контейнером и у которого установлен curl
Например, внутри контейнера с grafana выполним команду по перезагруки blackbox-exporter

 

Добавление мониторинга другого порта
Если необходимо добавить мониторинг другого порта, например, порта Redis (6379)
Для этого в prometheus.yml добавляем блок

И в файл с описанием правил проверки(в данном случае prometheus/services_rules.yml)

Проверка синтаксиса конфиг.файла Prometheus и файлов с правилами

Перечитываем конф.файл Prometheus

После чего проверяем наличие
— правила для мониторинга Redis в Prometheus→Alerts
— наличие новой цели по мониторингу Redis-порта в Prometheus→Status→Target

 

Источник:
https://github.com/prometheus/blackbox_exporter
https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md

Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

Яндекс.Метрика