Мониторинг Nginx в Prometheus

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

1.Настройка Nginx на отдачу статусной страницы
2.Запуск Nginx-экспортера для сбора метрик с Nginx и отдачи их Prometheus-у
3.Настройка Prometheus-а для сбора метрик с Nginx-экспортера
4.Импортирование/настройка dashboard Grafana для визуализации метрик
5.Настрйка правил Prometheus для мониторинга Nginx  показателей

1.Настройка Nginx на отдачу статусной страницы
Проверка поддержки Nginx-ом модуля http_stub_status_module и описание собираемых параметров с помощью этого модуля изложено ранее в этой статье

Добавляем поддержку nginx-статуса в дефолтном хосте

Важно разрешит доступ к статусной странице Nginx для docker-подсети( 172.16.0.0/12)
Запрос на nginx контейнер будет идти с nginx-exporter-контейнера, который будет запущен в одной docker-сети с nginx-контейнером

Проверяем синтаксис конфигурационного файла Nginx

Перегружаем nginx

Заходим в любой контейнер,который находится в одной сети с nginx-контейнером и проверяем доступность статусной страницы(например, в контейнер с php-fpm)

 

2.Запуск Nginx-экспортера для сбора метрик с Nginx и отдачи их Prometheus-у

Если не используется docker-compose
Nginx-экспортер запускаем в той же docker-сети, в которой и запущен nginx-контейнер,чтобы средствами Docker  экспортер смог разименовать имя nginx-контейнера в его IP-адрес и находясь с ним в одной подсети подключиться по этому IP-адресу для снятия с него метрик

– URI, на котором доступна статусная страница Nginx

– кол-во попыток,который будет делать экспортер при старте,чтобы снять метрики с nginx-контейнера, перед тем,как выдать ошибку о недоступности целевого nginx

– путь, на котором будут доступны метрики экспортера

 

Если используется docker-compose
В данном случае nginx-exporter добавим в docker-compose, с помощью которого запущенны различные приложения, включая Nginx, с которого собираются метрики
Добавляем nginx-exporter в docker-compose.yml

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

Создание и запуск nginx-exporter контейнера

Проверяем наличие запущенного nginx-exporter контейнера, который будет собирать метрики с nginx-сервера

С хоста, на котором запущен Nginx-контейнер, проверяем доступность метрик с nginx-экспортера

С мониторинг хоста

Получаем также успешный ответ

 

3.Настройка Prometheus-а для сбора метрик с Nginx-экспортера

Добавляем nginx-экпортер в service discovery файл

Подключаем этот service discovery файл в Prometheus

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

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

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

 

4.Импортирование/настройка dashboard Grafana для визуализации метрик
Импортируем дашбоард отсюда
https://github.com/nginxinc/nginx-prometheus-exporter/tree/master/grafana

Я изменил его под свои задачи
Nginx-dashboard.zip

 

5.Настрйка правил Prometheus для мониторинга Nginx  показателей
Добавление несколько правил для мониторинга Nginx в Prometheus
1.Запущен ли Nginx (nginx_is_running)
2.Все ли принятые Nginx-ом подключения были обработаны (nginx_not_all_connections_are_handled)
3.Превышение текущего количества активных подключений определенного значения для нескольких(двух) сайтов(nginx_high_number_active_connections)

 

Источник:
https://github.com/nginxinc/nginx-prometheus-exporter
https://github.com/nginxinc/nginx-prometheus-exporter/tree/master/grafana
https://dimitr.im/monitoring-nginx-with-prometheus-and-grafana
http://nginx.org/en/docs/http/ngx_http_stub_status_module.html#stub_status

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

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

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