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

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

1.Настройка конфигурационного файла Blackbox-экспортера на поддержку http/s-проверки
2.Настройка Prometheus-а для подключения и поддержки Blackbox-экспортера
3.Импортирование/настройка dashboard Grafana для визуализации метрик
4.Настрйка правил Prometheus для мониторинга доступности сайта, скорости ответа сайта.

Например, мониторить будем несколько сайтов
По https такие сайты: mysite1.com, mysite2.com, mysite4.com
По http – сайт mysite3.com

Доступность сайтов mysite1.com, mysite2.com, mysite3.com будем мониторить с помощью допустимых кодов ответа — в нашем случае следующих кодов ответа — 200,302,301,304

Доступность сайта mysite4.com будем мониторить по наличию в исходном коде страницы необходимой строки/подстроки — например, подстроки «my custom site string»

Для общей группы сайтов (mysite{1,2,3}.com) создаем модуль, например, с именем http_2xx-general, для сайта mysite4.com – создаем отдельный модуль, например, с именем http_2xx-mysite4.com

В обоих модулях используем следующие настройки

 

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

Определяем вышеуказанные модули с именами http_2xx-general и http_2xx-mysite4.com

 

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

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

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

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

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

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

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

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

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

 

3.Импортирование/настройка dashboard Grafana для визуализации метрик

Sites-dashboard.zip

 

4.Настрйка правил Prometheus для мониторинга доступности сайта, скорости ответа сайта

Добавляем правила для мониторинга доступности сайта, скорости ответа сайта, монитринга просроченного SSL-сертификата
1.Cайт mysite4.com недоступен вообще (site_down_mysite4.com) (т.е нет ответа в течение отведенного в проверке времени выполнения — в нашем случае 10 секунд (параметр timeout в конфигурационном файле Blackbox-экспортера для модуля http_2xx-mysite4.com))
2.Любой другой сайт(mysite1.com, mysite2.com, mysite3.com) кроме сайта mysite4.com(он мониторится вышеуказанным правилом) недоступен вообще (site_down) (т.е нет ответа в течение отведенного в проверке времени выполнения — в нашем случае 10 секунд (параметр timeout в конфигурационном файле Blackbox-экспортера для модуля http_2xx-general))
3.Время ответа(response time) от сайта слишком долгое(site_is_very_slow) — более 3-х секунд
4.Code-ответа от сайта не 2XX(http_status_code_not_200-299) (отредактируйте на допустимое кодs ответа в вашем случае)
5.SSL-сертификат станет просроченным через 30 дней(ssl_certificate_expire)

 

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

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

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

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

 

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

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

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

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