一、作用
rsyslog可以用来搜集服务器的系统日志。
二、安装
在centos7中,rsyslog已经默认安装。如果没有安装的话,通过yum安装即可
三、配置
配置主要分为服务端配置和客户端配置。配置文件的路径:/etc/rsyslog.conf
服务端的配置:
1、client向server传输日志可以通过UDP和TCP两种方式,我这里通过UDP传输,所以将UDP的配置打开,如果使用TCP则将TCP的配置打开即可
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
# $ModLoad imtcp
# $InputTCPServerRun 514
2、配置日志存放的路径、日志文件的命名、日志的格式
# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # 配置使用的格式化日志的模版
$template Remote,"/data/rsyslog/syncdir/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" # 设置远程日志存放路径和文件格式
:fromhost-ip, !isequal, "127.0.0.1" ?Remote # 如果是本机日志则不记录
3、由于我搜集的client数量较多,并且client传过来的message等日志同样会记录在server的messages日志文件中,我选择将这些日志输出的配置全部注释掉。当然也可以写一个脚本,定时清理该目录下的日志文件。
# *.info;mail.none;authpriv.none;cron.none /var/log/messages
# authpriv.* /var/log/secure
# mail.* -/var/log/maillog
# cron.* /var/log/cron
4、服务端做完这些配置后,重启一下rsyslog就可以了
systemctl restart rsyslog
client端配置:
1、客户端只需要在配置文件中加入一行即可,表示所有的日志都通过UDP传输到IP为10.42.149.57的服务端,如果使用TCP传输则把@写成@@即可
*.* @10.42.149.57
2、重启服务即可完成配置
systemctl restart rsyslog
四、问题记录
1、server服务器磁盘极短时间内被日志打满?
原因是我在服务端也做了客户端的配置,导致服务端的日志会向自己发送日志,同时我没有关闭本地日志文件存放的配置,这样会导致日志文件成指数增长,迅速将磁盘写满,解决方法也很简单,将client相关配置去掉,然后将本地日志文件的配置注释掉,问题就解决了。
2、搜集到的日志文件太大了怎么办?
可以使用gzip压缩文件将日志压缩归档,测试gzip压缩比可以达到1:15