Мониторинг Nginx с помощью Prometheus и Grafana
Содержание
Введение
В данной статье рассматривается настройка мониторинга Nginx с помощью Prometheus и Grafana. Предполагается, что Prometheus и Grafana уже установлены в вашей системе. Если это не так, то вы можете ознакомиться со следующими статьями:
Настройка Nginx
Для получения статистики и метрик от Nginx, необходимо настроить встроенную страницу stub status. Для этого:
-
Найдите свободный порт. Если следующая команда возвращает пустую строку, значит порт 8080 свободен:
ss -tunlp | grep :8080
-
Создайте файл
/etc/nginx/conf.d/stats.conf
со следующим содержимым:server { listen 8080; server_name _; access_log off; location /stub_status { stub_status on; } }
-
Перезапустите Nginx:
sudo systemctl restart nginx
-
Проверьте, что Nginx возвращает метрики:
curl http://localhost:8080/stub_status
Пример метрик:
Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0
Настройка Nginx Exporter
Nginx Exporter — это демон, который позволяет собирать метрики Nginx в Prometheus. Подробнее о нем можно узнать здесь.
Предварительные настройки
Перед установкой Nginx Exporter необходимо создать отдельную системную учетную запись, от имени которой будет работать Nginx Exporter. Это необходимо для ограничения доступа учетной записи, предназначенной только для работы Nginx Exporter. Для этого
-
Создайте системную группу с именем
nginx_exporter
:sudo groupadd --system nginx_exporter
-
Создайте системную учетную запись с именем
nginx_exporter
:sudo useradd -s /sbin/nologin --system -g nginx_exporter nginx_exporter
Загрузка и установка
Для загрузки и установки Nginx Exporter выполните следующие шаги:
-
Перейдите в папку
/tmp
:cd /tmp
-
Перейдите на страницу загрузки Nginx Exporter и скопируйте ссылку на архив требуемой версии.
-
Загрузите архив с помощью команды
wget
:wget https://github.com/nginx/nginx-prometheus-exporter/releases/download/v1.4.2/nginx-prometheus-exporter_1.4.2_linux_amd64.tar.gz
-
Распакуйте архив с помощью команды
tar
:tar -zxvf nginx-prometheus-exporter_1.4.2_linux_amd64.tar.gz
-
Переместите исполняемый файл
nginx-prometheus-exporter
в папку/usr/local/bin
:sudo mv nginx-prometheus-exporter /usr/local/bin/nginx_exporter
-
Измените владельца исполняемого файла на учетную запись
nginx_exporter
и группуnginx_exporter
:sudo chown nginx_exporter:nginx_exporter /usr/local/bin/nginx_exporter
Настройка демона
Для настройки запуска Nginx Exporter как демона выполните следующие шаги:
-
Создайте конфигурационный файл
/etc/systemd/system/nginx_exporter.service
со следующим содержимым:[Unit] Description=Nginx Exporter Wants=network-online.target After=network-online.target [Service] User=nginx_exporter Group=nginx_exporter Type=simple ExecStart=/usr/local/bin/nginx_exporter [Install] WantedBy=multi-user.target
-
Перезапустите конфигурацию systemd:
sudo systemctl daemon-reload
-
Запустите демона
nginx_exporter
:sudo systemctl start nginx_exporter
-
Включите демона
nginx_exporter
в автозагрузку:sudo systemctl enable nginx_exporter
-
Проверьте, что
nginx_exporter
возвращает метрики:curl http://localhost:9113/metrics
Пример метрик:
go_gc_duration_seconds{quantile="0"} 1.2448e-05 go_gc_duration_seconds{quantile="0.25"} 1.2448e-05 go_gc_duration_seconds{quantile="0.5"} 1.2448e-05
Настройка Prometheus
Необходимо сообщить Prometheus, что нужно собирать метрики с Nginx Exporter. Для этого в /etc/prometheus/prometheus.yaml
нужно добавить следующие строки:
scrape_configs:
- job_name: "nginx_exporter"
static_configs:
- targets: ["localhost:9113"]
После этого нужно перезапустить Prometheus:
sudo systemctl restart prometheus
Чтобы проверить, что все работает, нужно:
- Зайти в веб-интерфейс Prometheus, который по умолчанию доступен по адресу
http://X.X.X.X:9090
, гдеX.X.X.X
— IP-адрес вашего сервера. - В веб-интерфейсе на вкладке «Query» запросить какую-нибудь метрику, которую предоставляет Node Exporter, например,
nginx_http_requests_total
. Если метрики отображаются, значит все работает.
Также за состоянием сбора метрик можно следить на странице «Status > Target health».
Настройка Grafana
Для визуализации метрик Nginx можно создать как свой дашборд, так и воспользоваться существующими. Для этого:
- Откройте Grafana Labs, перейдите на страницу подходящего вам дашборда.
- Скопируйте ID подходящего вам дашборда.
- Откройте Grafana, перейдите на страницу «Dashboards».
- На странице «Dashboards» на нажмите «New», «Import».
- Вставьте ранее скопированный ID и нажмите «Load».
- Выберите название, расположение, а также источник данных для нового дашборда, после чего нажмите «Import».