Skip to content

Настройка журналирования Nginx в Syslog и подсистему ЖУРНАЛЛИСТ

Nginx поддерживает вывод журналов как в файлы, так и напрямую в syslog. Для интеграции с подсистемой ЖУРНАЛЛИСТ рекомендуется использовать syslog, что позволяет централизованно собирать и анализировать события веб-серверов.

Общая схема

Nginx:

  • генерирует access и error логи
  • отправляет их в syslog или файл
  • syslog (rsyslog / syslog-ng) пересылает данные в ЖУРНАЛЛИСТ

Где настраивается логирование

Основной конфигурационный файл:

bash
/etc/nginx/nginx.conf

или файлы виртуальных хостов:

bash
/etc/nginx/conf.d/*.conf

Включение syslog

Error log в syslog

nginx
error_log syslog:server=localhost:514,facility=local0,tag=nginx error;

Access log в syslog

nginx
access_log syslog:server=localhost:514,facility=local0,tag=nginx,severity=info;

Пример полной конфигурации

nginx
http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"';

    access_log syslog:server=localhost:514,facility=local0,tag=nginx main;
    error_log  syslog:server=localhost:514,facility=local0,tag=nginx error;
}

Перезапуск Nginx

bash
systemctl reload nginx

Настройка пересылки в ЖУРНАЛЛИСТ

rsyslog

Файл:

bash
/etc/rsyslog.d/nginx.conf

Пример по тегу:

bash
if $programname == 'nginx' then @@journalist-server:514
& stop

или по facility:

bash
local0.* @@journalist-server:514

syslog-ng

bash
filter f_nginx { program("nginx"); };

destination d_journalist {
    tcp("journalist-server" port(514));
};

log {
    source(src);
    filter(f_nginx);
    destination(d_journalist);
};

Проверка

  1. Проверить локальный syslog:
bash
tail -f /var/log/syslog
  1. Сделать HTTP-запрос:
bash
curl http://localhost
  1. Убедиться, что события появились в ЖУРНАЛЛИСТ

Какие события попадают

Access log

  • HTTP-запросы
  • коды ответов
  • IP-адреса клиентов
  • URL и user-agent

Error log

  • ошибки конфигурации
  • ошибки upstream
  • таймауты
  • проблемы с соединениями

Рекомендации

  • использовать отдельный facility (например, local0)
  • разделять access и error логи при необходимости
  • использовать TCP для передачи
  • ограничивать verbosity error_log

Альтернативный вариант (через файл)

Если используется файловое логирование:

nginx
access_log /var/log/nginx/access.log;
error_log  /var/log/nginx/error.log;

Тогда:

bash
input(type="imfile"
      File="/var/log/nginx/*.log"
      Tag="nginx"
      Facility="local0")

Когда использовать syslog

Рекомендуется:

  • при централизованном мониторинге
  • при высокой нагрузке
  • для корреляции с backend-сервисами

Особенности Nginx

  • высокая интенсивность логов (особенно access)
  • важно контролировать объем
  • гибкая настройка формата логов

Краткий вывод

Nginx имеет встроенную поддержку syslog, что делает интеграцию с подсистемой ЖУРНАЛЛИСТ простой и эффективной. Это позволяет включить веб-трафик и ошибки в единую систему анализа, повышая прозрачность и управляемость инфраструктуры.