Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
MONITORING_METRICS_FAIL Linux / DevOps

Мониторинг Nginx: настройка stub_status и экспорт метрик в Prometheus

Обновлено: 21.08.2026
  • Ошибка 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: 106

4. Развертывание 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
Практический опыт инженера: Всегда отключайте access_log для эндпоинта /stub_status, иначе частый скрейпинг Prometheus (например, раз в 5 секунд) создаст паразитный мусор в логах доступа и исказит реальную статистику запросов.

Частые вопросы (FAQ)

Что означает метрика 'Waiting' в stub_status?

Waiting — это количество Keep-Alive соединений, которые в данный момент не выполняют запросов, а просто удерживают TCP-сессию открытой в ожидании следующего запроса клиента.

Почему accepts и handled могут различаться?

Если число handled меньше accepts, это означает, что Nginx сбросил часть входящих соединений из-за превышения лимитов worker_connections или listen backlog.