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日志的目录就可以看到从发送端同步过来的日志文件。

 

 

posted @ 2023-04-18 14:10  粉色纽扣  阅读(1434)  评论(0编辑  收藏  举报