rsyslog读取应用服务器nginx日志文件并发送至日志服务器
现将云主机上的nginx服务的日志发送到日志服务器进行归档备份,后期还会考虑对备份后的nginx日志进行ELK分析,目前因为只是简单的备份日志文件,所以我就使用rsyslog来完成日志的备份。
目标:使用rsyslog服务同步nginx服务的access.log和error.log日志文件到日志服务器。
说明:
- 一台部署nginx的服务器。
- 一台日志服务器。
- 双方以rsyslog作为桥梁,从而实现日志的中转运输。其中nginx主机上是rsyslog发送端,log主机上是rsyslog接收端。
主机类型 主机清单: 相关服务:
应用服务器 192.168.0.100 nginx服务、rsyslog服务
日志服务器 192.168.0.200 rsyslog服务
1.发送端的rsyslog服务参数配置
创建配置文件,添加如下内容:
将192.168.0.100的access.log和error.log发送到192.168.0.200服务器的514端口
vim /etc/rsyslog.d/nginx.conf $ModLoad imfile $InputFilePollInterval 5 $WorkDirectory /var/spool/rsyslog $PrivDropToGroup root $InputFileName /usr/local/nginx/logs/access.log $InputFileTag nginx-access: $InputFileStateFile stat-nginx-access $InputFileSeverity info $InputFilePersistStateInterval 25000 $InputRunFileMonitor $InputFileName /usr/local/nginx/logs/error.log $InputFileTag nginx-error: $InputFileStateFile stat-nginx-error $InputFileSeverity info $InputFilePersistStateInterval 25000 $InputRunFileMonitor *.* @@192.168.0.200:514 //@@表示TCP,@表示udp协议的514端口
2.日志服务器上接收端的rsyslog服务参数配置
修改配置文件/etc/rsyslog.conf,添加以下内容:
vim /etc/rsyslog.conf # 接收Nginx日志 $template NginxLog, "/var/log/nginx/%HOSTNAME%/%PROGRAMNAME%.log" if $programname == 'nginx-access' then -?NginxLog
这个配置文件的意思是,接收来自rsyslog客户端的名为“nginx-access”的日志,并将其保存在/var/log/nginx/目录下,每个客户端的日志分别保存在以客户端主机名为名的子目录中,日志文件名为程序名,例如nginx-access.log。
3.然后分别重启发送端和接收端的rsyslog服务
最后在接收端保存nginx日志的目录就可以看到从发送端同步过来的日志文件。