Rsyslog系统日志转发

 一、rsyslog介绍

  rsyslog是一个快速处理日志的程序,提供了高性能、安全功能和模块化设计,将多种来源输入输出转换结果到目的地

  优点:多线程、支持加密协议(ssl、relp等)、多种数据库(mysql)等。

  可以监控录入每个用户的键入命令

 1.1、rsyslog架构图

 

Rsyslog架构,这是rsyslog官网 上的一张图,用来介绍rsyslog的架构, rsyslog的消息流是从输入模块->预处理模块->主队列->过滤模块- >执行队列->输出模块。
在这个流程图中,输入、输出、过滤三个部分称为module,输入模块有imklg、imsock、 imfile. 输出模块有omudp、omtcp、 omfile、 omprog、 ommysql. omruleset 。
过滤模块研究不多,只会提到mmnormalize.预处理模块主要解决各种syslog协议实现间的差异,举例说明如果日志系统client端使用rsyslog、server端使用syslog-ng,如果自己不做特殊处理syslog-ng是无法识别的。但是反过来,rsyslog的server端就可以识别syslog-ng发过来的消息。
Input模块,包括imklg、 imsock. imfile、 imtcp等, 是消息来源。
Filetr模块,处理消息的分析和过滤,rsyslog可以根据消 息的任何部分进行过滤,后面会介绍到具体的做法。
Output模块,包括omfile、 omprog. omtcp、 ommysq|等。 是消息的目的地。
Queue模块,负责消启的存储,从Input传入的未经过滤的消启放在主队列中,过滤后的消息放入到不同
action queue中,再由action queue送到各个输出模块。

二、实践部署

2.1、环境:

  CentOS7.4    2m2g  server  client1  client2

2.2、server上部署操作

  安装rsyslog程序(rsyslog默认已经在发行版安装,如果系统中没有的话,可以yum安装)

# yum install rsyslog -y

grep
-v "^#" /etc/rsyslog.conf | grep -v "^$" $ModLoad imuxsock # provides support for local system logging (e.g. via logger command) $ModLoad imjournal # provides access to the systemd journal $ModLoad immark # provides --MARK-- message capability $ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514 $WorkDirectory /var/lib/rsyslog $AllowedSender tcp, 192.168.37.100/24 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $template Remote,"/data/log/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log" :fromhost-ip, !isequal, "127.0.0.1" ?Remote $IncludeConfig /etc/rsyslog.d/*.conf $OmitLocalLogging on $IMJournalStateFile imjournal.state *.info;mail.none;authpriv.none;cron.none /data/log/messages authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron *.emerg :omusrmsg:* uucp,news.crit /var/log/spooler local7.* /var/log/boot.log

 

1、$AllowedSender tcp, 192.168.37.100/24  允许37.0网段内的主机以 tcp 协议来传输
2、 $template Remote,"/data/log/ %fromhost-ip%/ %fromhost-ip%_ %$YEAR%- %$MONTH%-%$DAY%.log"定义模板,接受日志文件路径,区分了不同主机的日志
3、 :fromhost-ip, !isequal, "127.0.0.1" ?Remote过滤server本机的日志。
4、$InputTCPServerRun 514开启tcp,tcp和udp可以共存的

创建日志目录,尽量选择系统内比较大的区域创建,因为考虑到要存放很多服务器的日志文件。

mkdir -pv /data/log

 

修改完后,重启rsyslog服务,并查看监听端口,514是否是tcp协议

2.3、client端部署操作

先修改两台机器的配置文件

# grep -v "^$" /etc/rsyslog.conf | grep -v "^#"

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$template myFormat,"%timestamp% %fromhost-ip% %msg%\n"
$ActionFileDefaultTemplate myFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                @@192.168.37.100
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

 

修改完后  wq! restart

2.4、验证

在服务器上进到  /data/log  目录下,进行查看,会发现这样的文件结构

[root@node ~]# tree /data/log/
/data/log/
├── 192.168.37.101
│ └── 192.168.37.101_2020-07-23.log
├── 192.168.30.57
│ └── 192.168.37.102_2020-07-23.log
└── messages

 

在server上操作查看日志

tail -f /data/log/192.168.37.101/192.168.37.101_2020-07-23.log 

 

三、收集系统其它服务日志,在客户端上操作

3.1、修改配置文件,在尾部添加几行参数

module(load="imfile" PollingInterval="5")
#加载imfile模块,并5秒刷新一次 $InputFileName
/var/log/http/access.log
#要监控的日志文件路径 $InputFileTag Apache1
:
#定义文件标签,注意最后是冒号: $InputFileStateFile state
-Apache1
#定义状态文件 $InputRunFileMonitor
#激活读取,可以设置多组日志读取,每组结束时设置本参数

 

3.2、老样子  wq!   systemctl restart rstslog

3.3、查看server端的日志收集

四、总结

最近发现系统有自己用户的操作输入内容,很好奇,于是收集了一下类似的博客,发现确实有这个服务,这样可以监控其他人员的操作,方便不时之需造成失误时错误环境的演示以及排错

 

posted @ 2020-07-23 11:52  Security  阅读(1390)  评论(0编辑  收藏  举报