У нас есть удаленный сервер системного журнала, на котором мы храним журналы всех наших виртуальных машин. Все работает нормально, за исключением того, что на некоторых машинах с nginx в каталоге появился файл журнала со всем, что было отправлено на удаленный сервер системного журнала. /usr/share/nginx
.
Я проверил rsyslog conf, а также nginx conf, но я не могу понять, в чем проблема. Я удаляю этот файл журнала на /usr/share/nginx
и через несколько дней он снова появляется.
django-03 mario:~$ ls -larth /usr/share/nginx/
total 1,5G
drwxr-xr-x 2 root root 23 dic 5 2018 html
drwxr-xr-x 150 root root 4,0K abr 23 13:34 ..
drwxr-xr-x 3 root root 148 sep 6 06:26 .
-rw-r--r-- 1 www-data root 247M oct 17 09:31 syslog:server=someserver.vps:10514,tag=nginxerror
-rw-r--r-- 1 www-data root 1,2G oct 17 09:33 syslog:server=someserver.vps:10514,tag=nginxaccess
Вот конфигурация rsyslog.
###############
#### RULES ####
###############
... Rest of the file ...
.
.
.
*.* @@someserver.vps:10514
Как видите, rsyslog отправляет все на someserver.vps: 10514 и работает нормально.
Вот конфигурация nginx, мы отправляем журналы в обе стороны на удаленный сервер и на локальную машину на /var/log/syslog
.
... Rest of the file ...
.
.
.
##
# Logging Settings
##
log_format vhosts '$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log vhosts;
error_log /var/log/nginx/error.log;
access_log syslog:server=someserver.vps:10514,tag=nginxaccess vhosts;
error_log syslog:server=someserver.vps:10514,tag=nginxerror;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Как вы можете видеть на /usr/share/nginx/
появляется имя someserver.vps
со всеми журналами. Это похоже на 1.2G, и мы не знаем, почему там появляется.
Похоже, что nginx не смог разрешить адрес someserver.vps (несколько дней назад у нас были проблемы с DNS), и, как вы сказали, nginx обрабатывал системный журнал как буквальное имя файла и создавал его в домашнем каталоге демонов.
Мы получали журналы на удаленном сервере системного журнала благодаря конфигурации rsyslog. И вот что меня смущало.
Спасибо большое за помощь
Из документации:
Запись в системный журнал доступна начиная с версии 1.7.1.
Если ваша версия старше, nginx будет рассматривать директивы syslog как буквальное имя файла.
В этом случае эта строка:
access_log syslog:server=someserver.vps:10514,tag=nginxaccess vhosts;
настраивает nginx для записи журнала доступа к файлу с именем syslog:server=someserver.vps:10514,tag=nginxaccess
. Абсолютного пути нет, поэтому он создается в домашнем каталоге демонов.