rsyslog是一个快速处理收集系统日志的开源程序,提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地, rsyslog被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。
rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发送到另外的远程服务器。rsyslog的另外一个用法,就是可以配置为客户端,用来过滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog服务器上
根据下面的拓扑图,搭建Rsyslog Server记录远程主机系统日志
1、Rsyslog Server服务器 192.168.31.80
2、Rsyslog Client主机 192.168.31.151
实现Client主机通过rsyslog发送自身的系统日志到Rsyslog Server服务器,服务器端将该主机系统日志存放到一个指定的目录里面,进行按IP和日志简单分类存储
一、rsyslog服务器端配置
CentOS7系统默认安装了rsyslog服务
cp /etc/rsyslog.conf /etc/rsyslog.conf_default
vi /etc/rsyslog.conf
1)取消如下两行的注释,开启UDP 514接收配置
$ModLoad imudp
$UDPServerRun 514
2)在$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat这一行添加如下配置
# This one is the template to generate the log filename dynamically, depending on the client’s IP address.
# 根据客户端的IP单独存放主机日志在不同目录,设置远程日志存放路径及文件名格式
$template Remote,”/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log”
# Log all messages to the dynamically formed file.
# 排除本地主机IP日志记录,只记录远程主机日志
:fromhost-ip, !isequal, “127.0.0.1” ?Remote
# 注意此规则需要在其它规则之前,否则配置没有意义,远程主机的日志也会记录到Server的日志文件中
# 忽略之前所有的日志,远程主机日志记录完之后不再继续往下记录
& ~
3)重启rsyslog服务
systemctl restart rsyslog
二、rsyslog客户端配置
1)取消如下五行的注释
$ActionQueueFileName fwdRule1
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
2)最后一行添加*.* @rsyslog服务器IP
*.* @192.168.31.80
3)重启rsyslog服务
systemctl restart rsyslog
三、在服务器端验证效果
cd /var/log/syslog/
cd 192.168.31.151/
tail -f 192.168.31.151_2020-08-23.log