linux日志转储及脚本操作

来源:互联网 发布:淘宝联盟余额提现时间 编辑:程序博客网 时间:2024/05/16 13:40

日志转储

假设目前有两台主机:

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/bashif [ -f /tmp/test.txt ]thenecho 'file exist' >>/tmp/test.txtsed '/root/w /tmp/test.txt' /var/log/messageselsetouch /tmp/test.txtfi##脚本的作用是如果产生了一个local3类型的日志就判断是否存在文件test.txt,如果不存在则创建,如果存在则过滤出日志中含有root关键字的行保存到 /tmp/test.txt中

运行结果

1.当我们产生普通日志时只显示日志信息,脚本并没有执行;

当我生成一个local3.info日志时脚本执行,创建了一个名为test.txt的文件,接下来我们监控文件内容变化
这里写图片描述

2.监控生成的文件内容被脚本改变

tail -f test.txt

这里写图片描述

从上边的结果我们可以看到当脚本创建了文件之后如果继续产生local3.info日志,日志信息就会被过滤写入test.txt中去