Логирование и мониторинг
Тема дорожной карты · Nginx
Журналирование и мониторинг Nginx обеспечивают наблюдаемость, необходимую для понимания производительности веб-сервера, диагностики ошибок и выявления аномалий безопасности в развёртываниях обратного прокси и балансировщика нагрузки. Журналы доступа, настроенные через access_log /var/log/nginx/access.log combined;, записывают каждый запрос с временем ответа upstream, статусом кэша и метаданными SSL/TLS при использовании пользовательского log_format, тогда как error_log /var/log/nginx/error.log warn; фиксирует операционные проблемы на настроенном уровне серьёзности. Встроенный модуль ngx_http_stub_status_module предоставляет метрики соединений в реальном времени по настраиваемому URL — stub_status on; внутри блока location /nginx_status — показывая активные соединения, принятые соединения, обработанные запросы и счётчики чтения/записи/ожидания для оперативного мониторинга. Для продакшен-масштабирования журналирование и мониторинг Nginx обычно организуются через централизованный стек (ELK, Loki или Graylog) с помощью Filebeat или Promtail, тогда как nginx-prometheus-exporter опрашивает /nginx_status и предоставляет метрики Prometheus для дашбордов Grafana. Комплексное журналирование и мониторинг Nginx — основа для планирования мощностей, отчётности по SLA и реагирования на инциденты в любой инфраструктуре, где Nginx выступает основным веб-сервером или шлюзом трафика.
Как это работает
Логирование и мониторинг использует access_log + error_log. Определите JSON log-формат (log_format json escape=json '{"time":"$time_iso8601",...}';) для лёгкого ingestion в Loki, Elasticsearch, Vector. access_log /path/access.log json; per server-блок. Status-модуль (stub_status) экспонирует базовые метрики; nginx-vts-module даёт полные Prometheus-совместимые метрики. nginx-prometheus-exporter — sidecar-вариант.
Когда применять
Переход на JSON access logs — с первого дня; намного проще запрашивать, чем дефолтный combined-формат. Шлите в Loki через Vector/Promtail. nginx-prometheus-exporter — для метрик. Alerts на 5xx > 1%, пороги latency p95/p99, disk usage log-volume. logrotate — для ротации (или daily + dateext конфиг).
Типичные ошибки
Ловушки Логирование и мониторинг: дефолтный combined-формат лога ломается на спецсимволах (нет эскейпинга); диск забит access-логами без ротации (сервер перестаёт принимать трафик); не логируется X-Real-IP за CDN (видите CDN-IP вместо реальных клиентов); error log на дефолтном warn-уровне пропускает полезное (ставьте info при инцидентах).