1、服务端配置

1.1、修改配置文件

vim /etc/rsyslog.conf

把以下配置的注释打开,下面分别有tcp和udp的配置,和客户端保持一致,下面都开启因为路由器和交换机默认走的是udp协议;

  1. # Provides UDP syslog reception
  2. $ModLoad imudp
  3. $UDPServerRun 514
  4. # Provides TCP syslog reception
  5. $ModLoad imtcp
  6. $InputTCPServerRun 514

1.2、重启服务

  1. systemctl restart rsyslog
  2. systemctl enable rsyslog

1.3、查看连接

当有客户端连接上服务端时 可以查看连接状态
lsof -i:514

image.png

2、客户端配置

2.1、修改配置文件

vim /etc/rsyslog.conf

此处用于指定接收日志的rsyslog服务器的协议、IP地址和端口号,此处用的tcp
一个@表示用udp协议

  1. *.* @@192.100.3.100:514

2.2、重启服务

  1. systemctl restart rsyslog
  2. systemctl enable rsyslog

2.3、查看连接

当连接上服务端时 可以查看连接状态
lsof -i:514
image.png

3、详细配置说明

3.1、配置说明

  1. #### MODULES #### #定义日志的模块。
  2. $ModLoad imuxsock #imuxsock为模块名,支持本地系统日志的模块。
  3. $ModLoad imjournal #imjournal为模块名,支持对系统日志的访问。
  4. #$ModLoad imklog #imklog为模块名,支持内核日志的模块。
  5. #$ModLoad immark #immark为模块名,支持日志标记。
  6. # Provides UDP syslog reception #提供udp syslog的接收。
  7. #$ModLoad imudp #imudp为模块名,支持udp协议。
  8. #$UDPServerRun 514 #允许514端口接收使用udp和tcp转发来的日志。
  9. # Provides TCP syslog reception #提供tcp syslog的接收。
  10. #$ModLoad imtcp #imtcp为模块名,支持tcp协议。
  11. #$InputTCPServerRun 514
  12. #### GLOBAL DIRECTIVES #### #定义全局日志格式的指令。
  13. # Where to place auxiliary files
  14. $WorkDirectory /var/lib/rsyslog #工作目录。
  15. # Use default timestamp format
  16. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义日志格式默认模板。
  17. $IncludeConfig /etc/rsyslog.d/*.conf #所有配置文件路径。
  18. $OmitLocalLogging on #省略本地登录。
  19. # File to store the position in the journal
  20. $IMJournalStateFile imjournal.state
  21. #### RULES ####
  22. #kern.* /dev/console
  23. #记录所有日志类型的info级别以及大于info级别的信息到messages文件,但是mail邮件信息,authpriv验证方面的信息和corn时间和任务相关信息除外。
  24. *.info;mail.none;authpriv.none;cron.none /var/log/messages
  25. # authpriv验证相关的所有信息存放在/var/log/secure。
  26. authpriv.* /var/log/secure
  27. #邮件的所有信息存在/var/log/maillog;这里有一个“-”符号表示是使用异步的方式记录
  28. mail.* -/var/log/maillog
  29. #任务计划有关的信息存放在/var/log/cron。
  30. cron.* /var/log/cron
  31. #记录所有的≥emerg级别信息,发送给每个登录到系统的日志。
  32. *.emerg :omusrmsg:*
  33. #记录uucp,news.crit等存放在/var/log/spooler
  34. uucp,news.crit /var/log/spooler
  35. #本地服务器的启动的所有日志存放在/var/log/boot.log
  36. local7.* /var/log/boot.log
  37. #发送日志,@表示传输协议(@表示udp,@@表示tcp),后面是ip和端口。
  38. #*.* @@remote-host:514

3.2、自定义日志存储

默认:只是属于把日志接收过来并存放在默认路径,如下图:
image.png

服务端会根据产生日志的设施和级别把日志存放到不同的文件里,我们发过来的是ssh日志,默认就存在服务端的/var/log/secure文件里。当然发过来的其他设施产生的日志也会存到指定的文件里面。

如果我们要想把发过来的ssh日志存放到自己的指定的文件里面,可以在/etc/rsyslog.d/目录里面新建一个文件,这个目录是rsyslog的工作目录。文件内容如下:

vim /etc/rsyslog.d/sshd.conf

  1. if $programname contains 'sshd' then -/var/log/remote_log/ssh.log
  2. & ~

语法解释:
如果发过来的日志“程序名”包含sshd,就输入到ssh.log日志里面。
什么是程序名:程序名就是你这一类日志是哪个服务产生的。
&~表示不做后续的操作,日志只输入到ssh.log中。

验证:

1.服务端添加配置/etc/rsyslog.d/sshd.conf后重启服务 systecmctl restart rsyslog
客户端重启 systecmctl restart rsyslog

2.在业务服务器上产生一条ssh日志,可以利用ssh连接工具连接业务服务器,这样就好产生一条ssh日志,产生新的日志就会让rsyslog发送到服务端。

  1. 业务服务器已经把日志发送过来,根据rsyslog的上述配置把sshd的日志已经保存在了/var/log/remote_log/ssh.log的文件里面,使用如下命令查看文件是否已经有了内容。
    tail –f /var/remote_log/ssh.log
    image.png