У нас есть удаленный сервер системного журнала, на котором мы храним журналы всех наших виртуальных машин.
Все работает нормально, за исключением того, что на некоторых машинах с 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, и мы не знаем, почему там появляется.
From документация:
Запись в системный журнал доступна начиная с версии 1.7.1.
Если ваша версия старше, nginx будет рассматривать директивы системного журнала как буквальное имя файла.
В этом случае эта строка:
access_log syslog:server=someserver.vps:10514,tag=nginxaccess vhosts;
настраивает nginx для записи журнала доступа к файлу с именем syslog: server = someserver.vps: 10514, tag = nginxaccess
. Абсолютного пути не существует, поэтому он создается в домашнем каталоге демонов.
Похоже, что nginx не смог разрешить адрес someserver.vps (у нас были некоторые DNS проблемы несколько дней назад), и, как вы сказали, nginx рассматривал системный журнал как буквальное имя файла и создавал его в домашнем каталоге демонов.
Мы получали журналы на удаленном сервере системного журнала благодаря конфигурации rsyslog. И это меня сбивало с толку.
Большое спасибо за вашу помощь