Мониторинг Nginx: настройка stub_status и экспорт метрик в Prometheus
- Ошибка
404 Not Foundпри обращении к эндпоинту/stub_statusили/metrics. - В выводе
nginx -Vотсутствует флаг модуля--with-http_stub_status_module. - Prometheus не может собрать метрики производительности веб-сервера (RPS, Active connections).
1. Проверка наличия модуля stub_status
nginx -V 2>&1 | grep -o -- "--with-http_stub_status_module"2. Создание изолированного VirtualHost для метрик
Создайте конфигурационный файл /etc/nginx/conf.d/status.conf:
server {
listen 127.0.0.1:8080;
server_name 127.0.0.1;
access_log off;
location /stub_status {
stub_status on;
allow 127.0.0.1;
allow 10.0.0.0/8;
deny all;
}
}3. Проверка формата вывода метрик
nginx -t && systemctl reload nginx
curl http://127.0.0.1:8080/stub_statusПример вывода:
Active connections: 291
server accepts handled requests
16630948 16630948 31070650
Reading: 6 Writing: 179 Waiting: 1064. Развертывание nginx-prometheus-exporter
Запуск официального экспортера в systemd или Docker:
docker run -d --name=nginx-exporter --net=host \
nginx/nginx-prometheus-exporter:latest \
-nginx.scrape-uri=http://127.0.0.1:8080/stub_status Частые вопросы (FAQ)
Что означает метрика 'Waiting' в stub_status?
Waiting — это количество Keep-Alive соединений, которые в данный момент не выполняют запросов, а просто удерживают TCP-сессию открытой в ожидании следующего запроса клиента.
Почему accepts и handled могут различаться?
Если число handled меньше accepts, это означает, что Nginx сбросил часть входящих соединений из-за превышения лимитов worker_connections или listen backlog.