• rsyslog的配置文件使用方法


    参考地址:

    http://www.rsyslog.com/doc/v8-stable/configuration/property_replacer.html

    rsyslog消息模板的定义规则

    "%msg:1:2%" :
    ==》读取从pos从1到2的数据
    "%msg:::lowercase%" :
    ==》将整个消息转换为小写
    "%msg:10:$%" :
    ==》截取pos从10到最后的消息内容
    "%msg:R:.*Sev:. (.*) [.*–end%" :
    ==》取"*Sev:."和[.*之间内的所有内容

    R,<regexp-type>,<submatch>,<nomatch>,<match-number>
    regexp-type :
    ==》"BRE" (基本的正则表达式)或"ERE" (扩展的正则表达式)
    0-9是标识submatch的,0标识所有内容,1-9标识相应序号的内容。(和shell类似,其实就是正则表达式中括号的用法)
    ==》如果相同的实例被匹配到,那么第一个匹配的是0,之后的匹配依次排列
    nomatch
    ==》标识没有匹配到的时候写什么
    实例:
    %msg:R,ERE,1,FIELD:for (vlan[0-9]*):--end%
    %msg:R,ERE,1,FIELD,1:for (vlan[0-9]*):--end%
    "F,44" :
    ==》设置分隔符(用ACSII表示),针对分隔符,在引用时,0代表没找到,匹配的实例从1开始数
    %msg:F,59:3% :
    ==》以分号为分隔符,提取第三个区域的内容
    "%msg:F,59,5:3,9%" :
    ==》以分号为分隔符,从第5个子串中,提取3-6位的字符
    "%msg:F,32+:2%" :
    ==》如果多个分隔符(比如:日志中有n个空格作为分割,那么可以添加一个+)

    配置过程中的重要步骤:

    module(load="imfile" PollingInterval="10") #needs to be done just once
    
    # File 1
    input(type="imfile"
          File="/path/to/file1"
          Tag="tag1"
          StateFile="statefile1"
          Severity="error"
          Facility="local7")
         
    action(type="omfwd" Target="192.168.0.1" Port="514" Protocol="tcp" )

    只需要配置输入的模块和输出的action即可;

    配置的重点就在于过滤器和输出的格式:

    当要截取输入日志内容的话,就需要用到过滤器,用到上面的正则表达式,例如:

    $template BiglogFormatTest,"%timestamp% %fromhost-ip% %msg:32:$%
    "
    if $programname == 'test-run' then @@192.168.15.161:514;BiglogFormatTest

    当用到数据库并且默认的格式不符合我们的要求的话,我们就需要另外定义:

    $template tpl,”insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (‘%msg%’, %syslogfacility%, ‘%HOSTNAME%’, %syslogpriority%, ‘%timereported:::date-mysql%’, ‘%timegenerated:::date-mysql%’, %iut%, ‘%syslogtag%’)”,SQL
    *.* :ommysql:localhost,Syslog,rsyslog,123456;tpl

    准备找一个可以收集日志并分析的软件,最后选定了rsyslog+LogAnalyzer;根据网上的配置说明,最后的结果类似于,先用rsyslog将日志写入mysql,然后loganalyzer搜索mysql得到结果;
    analyzer的设置就是配置一个数据库,没有可操作的余地;
    rsyslog分为输入、预处理、解析过滤、输出等几个部分,输入输出只能指定来源和去向,针对数据的操作只能在filter中寻求方法。
    其实就是定义一个正则表达式,将过滤后的内容,根据配置的原则放到指定的输出端。传统的配置文件不能定义变量,意味着rsyslog只能用于截取日志和选择出口。
    当然为了适应花样百出的需求,新版的rsyslog都支持它自己定义的RainerScript,可能会更加灵活。

    相关的推荐(日志的运维与优化):http://network.51cto.com/art/201610/520295.htm

  • 相关阅读:
    植物大战僵尸英文原版
    2020-5-13递归练习 六人参加竞赛
    2020-5-1递归练习
    java当脚本用。QQ表白轰炸机
    面向实战---VUE项目的文件加载顺序,或者加载流程,以及index.html,main.js,app.vue的区别
    CSS多个view随机分布,不重叠,如何实现呢?
    vite项目才踩坑日志1
    css属性之clip-path
    纯CSS3实现的阳光海鸥沙滩遮阳伞和比基尼美女风景动画效果源码
    TP5 中使用wherein 进行查询,太慢了,怎么优化?
  • 原文地址:https://www.cnblogs.com/bugutian/p/6395085.html
Copyright © 2020-2023  润新知