我们有一个远程 syslog 服务器,用于存储所有虚拟机的日志。一切运行正常,但在某些装有 nginx 的机器上,目录中出现了一个日志文件,其中包含已发送到远程 syslog 服务器的所有内容/usr/share/nginx
。
我检查了 rsyslog 配置以及 nginx 配置,但我不知道问题出在哪里。我删除了那个日志文件/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,我们不知道为什么会出现在那里。
答案1
来自文档:
从 1.7.1 版本开始可以记录到 syslog。
如果您的版本较旧,nginx 会将 syslog 指令视为文字文件名。
在这种情况下,这一行:
access_log syslog:server=someserver.vps:10514,tag=nginxaccess vhosts;
配置 nginx 将访问日志写入名为 的文件syslog:server=someserver.vps:10514,tag=nginxaccess
。没有绝对路径,因此它会在守护进程主目录中创建。
答案2
似乎 nginx 无法解析 someserver.vps 地址(几天前我们遇到了一些 dns 问题),并且正如您所说,nginx 将 syslog 作为文字文件名处理,并在守护进程主目录中创建。
由于 rsyslog 配置,我们可以在远程 syslog 服务器上接收日志。这就是让我困惑的地方。
非常感谢您的帮助