• 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%
    "
    $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端的日志收集

    四、总结

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

  • 相关阅读:
    SQL SERVER常用函数
    SQL SERVER系统表
    How do I implement a cancelable event?
    sql之left join、right join、inner join的区别
    inno setup脚本,涵盖了自定义安装界面,调用dll等等应用
    MS SQL SERVER 数据库日志压缩方法与代码
    SQLSERVER:计算数据库中各个表的数据量和每行记录所占用空间
    mysql记录执行的SQL语句
    powershell 激活WIN10
    jfinal undertow web.xml
  • 原文地址:https://www.cnblogs.com/security-guard/p/13365471.html
Copyright © 2020-2023  润新知