日志转储
假设目前有两台主机:
server发送日志
client(lockey)接受日志并对日志进行处理
1.发送方的日志系统配置
vim /etc/rsyslog.conf
在文件中包含 RULES 关键字的部分或者文件尾部添加以下内容*.* @172.25.254.236 *.*表示所有类型的所有级别的日志 @172.25.254.236表示将日志通过UDP协议转储到主机172.25.254.236中
重新启动日志系统服务
systemctl restart rsyslog
2.接受方的日志系统配置
vim /etc/rsyslog.conf
#Provides UDP syslog reception, $ModLoad imudp #表示开启日志接受的插件 $UDPServerRun 514 表示日志接受的UDP端口
关闭系统的防火墙设置或者让日志转发服务能够通过
systemctl stop firewalld #关闭防火墙
重新启动日志系统服务
systemctl restart rsyslog #关闭之后确认一下防火墙的状态
3.在发送方产生日志,监控接收方的接收情况,可以看到当发送方产生一条日志的时候,接收方就会显示出来
日志监控的命令:
tail -f /var/log/message
配置针对不同类型日志要运行的脚本程序
本示例脚本运行在接收端,即转储的日志也可以触发脚本事件,当然本机日志也是可以的
基本配置
*.* ^脚本的路径 #格式
示例配置
##表示对于产生的local3类型的所有级别的日志运行/tmp/log.sh脚本
local3.* ^/tmp/log.sh # ^号后跟可执行脚本或程序的绝对路径
# 日志内容可以作为脚本的第一个参数.
# 可用来触发报警
#!/bin/bash
if [ -f /tmp/test.txt ]
then
echo 'file exist' >>/tmp/test.txt
sed '/root/w /tmp/test.txt' /var/log/messages
else
touch /tmp/test.txt
fi
##脚本的作用是如果产生了一个local3类型的日志就判断是否存在文件test.txt,如果不存在则创建,如果存在则过滤出日志中含有root关键字的行保存到 /tmp/test.txt中
运行结果
1.当我们产生普通日志时只显示日志信息,脚本并没有执行;
当我生成一个local3.info日志时脚本执行,创建了一个名为test.txt的文件,接下来我们监控文件内容变化
2.监控生成的文件内容被脚本改变
tail -f test.txt
从上边的结果我们可以看到当脚本创建了文件之后如果继续产生local3.info日志,日志信息就会被过滤写入test.txt中去