我们有一个远程系统日志服务器,我们在其中存储所有虚拟机的日志。一切工作正常,除了在某些使用 nginx 的机器上,包含已发送到远程 syslog 服务器的所有内容的日志文件出现在 directory 上/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 将 syslog 视为文字文件名,并在守护进程主目录上创建。
由于 rsyslog 配置,我们在远程 syslog 服务器上接收日志。这就是让我感到困惑的地方。
非常感谢您的帮助
从文档中:
如果您的版本较旧,nginx 会将 syslog 指令视为文字文件名。
在这种情况下,这一行:
配置 nginx 以将访问日志写入名为
syslog:server=someserver.vps:10514,tag=nginxaccess
. 没有绝对路径,所以它是在守护进程主目录中创建的。