一.准备
rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog从8.5.0后对imfile模块进行重构,文件名中可以支持通配符,因此建议配置之前升级rsyslog至8.5以后的版本。可以通过源码安装,也可以在官网上下载对应的repo文件,来进行安装:
cd /etc/yum.repos.d/
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
yum install -y rsyslog
二.配置
服务器端配置:
打开配置文件/etc/rsyslog.conf,将
# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
修改为
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
重启rsyslog服务:service rsyslog restart
rsyslog服务端口为514,需要修改服务器防火墙配置,放通514端口。(配置省略)
客户端配置
修改/etc/rsyslogd.conf,在#### MODULES ####模块配置中,新增
$ModLoad imfile,表示打开文件接收模块,使rsyslog服务可以推送其他服务的日志信息(rsyslog默认只可以推送系统的日志,比如DHCP,cron等)。
在/etc/rsyslog.d目录下新增配置文件,vsb10.conf(如果只配置apache日志,可以创建为apache.conf等),新增以下内容:
$template BiglogFormatTomcat,"%msg%\n"
$InputFileName /opt/vsb9/tomcat/logs/catalina.out
$InputFileTag catalina-out
$InputFileStateFile stat-catalina-out
$InputFileSeverity info
$InputFileFacility local6
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
##以上为tomcat日志配置
$template BiglogFormatApache,"%msg%\n"
$InputFileName /opt/vsb9/apache/logs/access/access_log_*
$InputFileTag apache-access
$InputFileStateFile stat-apache-access
$InputFileSeverity info
$InputFileFacility local6
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
##以上为apache日志配置
$template BiglogFormatPostgresql,"%msg%\n"
$InputFileName /opt/vsb9/pgsql/data/pg_log/postgresql*.log
$InputFileTag postgresql
$InputFileStateFile postgresql
$InputFileSeverity info
$InputFileFacility local6
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
##以上为postgresql日志配置
*.* @@192.168.174.149:514
##*.*表示所有日志级别,即所有日志以TCP协议推送至192.168.174.149的514端口。 @为UDP协议,@@为TCP协议。
客户端本地的默认设置会将所有info级别的日志记录到/var/log/messages,如果应用访问日志一直写会导致系统盘写满,
根据如上标红设置表示记录的日志级别为local6.info,可设置local6不输出到messages,修改/etc/rsyslog.conf如下
*.info;mail.none;authpriv.none;cron.none;local6.none /var/log/messages
如果仅需要传某个应用日志,或者日志分别发送到不同日志服务器,则配置的日志级别要区分开,不要重复,
然后配置对应级别发送到对应日志服务器,例如:
local6.info @@192.168.174.149:514
表示将所有日志级别为local6.info的日志发送到日志服务器192.168.174.149
3.重启rsyslog服务即可,service rsyslog restart。服务器端将接收到客户端推送的日志信息,默认保存在服务器端/var/log/messages文件中