zoukankan      html  css  js  c++  java
  • Rsyslog Properties and the Property Replacer

    rsyslog Properties

      数据项在rsyslog称为"属性",每当你想要访问数据项,你需要访问resprective属性。  


     

      Properties被用于:

        templates(模板)
        conditional statements(条件控制语句)

      Message Properties

       这些都是通过rsyslog解析器从原始消息中提取,所有消息属性从一个字母开始:

            msg:message的MSG部分
            rawmsg:从socket接收到的原始信息,一般用于debug。
            hostname:message中的主机名
            source:HOSTNAME的别名
            fromhost:接受message的系统主机名,在多级收集的模式下不一定是原始的发送者的主机名,这是DNS解析的名称。
            fromhost-ip:和fromhost一样,总是表现为一个IP地址,本地作为input的话,地址为127.0.0.1。
            syslogtag:message的TAG部分
            programname:tag的static部分,named[12345]的programname是named。
            pri:message的PRI部分,未编码的。
            pri-text:PRI的一部分,以文本的形式。
            iut:略
            syslogfacility:message的facility,以数字的形式
            syslogfacility-text:message的facility,以文本的形式
            syslogseverity:message的severity,以数字的形式
            syslogseverity-text:message的severity,以文本的形式
            syslogpriority:syslogseverity的别名
            syslogpriority-text:syslogseverity-text的别名
            timegenerated:接受到message是的timestamp,精度高
            timereported:从message里面获取timestamp,时间进度取决于message本身
            timestamp:timereported的别名
            protocol-version:draft-ietf-syslog-protcol中的PROTCOL-VERSION字段
            structured-data:draft-ietf-syslog-protocol中的STRUCTURED-DATA
            app-name:draft draft-ietf-syslog-protocol中的APP-NAME字段
            procid:draft-ietf-syslog-protocol中的PROCID字段
            msgid:draft-ietf-syslog-protocol中的MSGID字段
            inputname:生成的信息中输入模块的名字,并不是所有模块都提供这个属性。

      System Properties

      这些属性由rsyslog核心引擎提供。 它们与消息无关。 所有系统属性都以$开始。
      例如timereported就包含message的时间戳信息,由于日志在中继的过程中可能时间戳比较滞后,使用$now表示的是系统当前处理的时间

            $bom:utf-8编码的Unicode字节顺序,前提是知道是unicode字符集。
            $now:当前的时间戳,YYYY-MM-DD
            $year:当前时间的年份,4位数。
            $month:当前的月份,2位数。
            $day:当前的日,2位数。
            $hour:当前的小时,2位数,24小时制。
            $hhour:半小时制。
            $qhour:略
            $minute:当前时间的分钟数
            $myhostname:当前主机的名称

    The Property Replacer

    property replacer是字符串模块的核心组件,syslog消息有很多明确的属性,每一个属性都可以被Property Replacer访问和操纵。例如将所有字符转换成小写。

    Accessing Properties

      syslog消息的属性被用于模板的内部,通过百分号访问,属性可以由替代属性修改。示例:

        %property:fromChar:toChar:options%

      Available Properties

        参考上一节的rsyslog Properties部分

      Character Positions

        FromChar and toChar被用于建立子串,示例:

            %msg:1:2%:截取前两个字符
            %msg:::lowercase:::表示整个字符串,将全部字符串转换成小写
            %msg:10:$%:$表示结尾,第10个字符一直到结尾。

        支持正则匹配的方式:

        %msg:R:.*Sev:. (.*) [.*–end%:R表示正则匹配,–end表示结尾。

        R后面可以指定参数,格式:  

          R,<regexp-type>,<submatch>,<nomatch>,<match-number>
          regexp-type:正则表达式的类型,默认是BRE
          submatch:子匹配标识要与结果一起使用的子匹配,0标志完整匹配,可以使用0-9.
          match-number:表示匹配的模数,引用前面的匹配对象
          nomatch:指定在找不到匹配的情况下应该使用的内容。
          示例:

                    %msg:R,ERE,1,FIELD:for (vlan[0-9]*):--end%
                    %msg:R,ERE,1,FIELD,1:for (vlan[0-9]*):--end%

          提取也可以基于字段来完成,放入一个F之后,再定义分隔符,分隔符使用字符的ascii码字符来表示
            %msg:F,59:3% #59为分号
          基于子串来做字段提取工作(6.3.9版本以后)
            %msg:F,59,5:3,9% #F表示提取模式,59表示分隔符,5表示起始,3表示字段3,9表示提取的字符串位置
          需要使用多个分隔符可以用+号,示例:

                int n, m;
                ...
                syslog(LOG_ERR, "%d test %6d", n, m);    #使用空格作为分隔符,在遇到多个空格的情况下容易出现不唯一的情况
                "%msg:F,32:2%" to "%msg:F,32+:2%"        #使用+号来添加一个或多个相同分隔符的效果,来源与perl的风格

      Property Options

       属性选项是不区分大小写的。目前,定义以下选项:

            uppercase:将属性转换成小写
            lowercase:将属性文本转换成大写
            csv:生成的格式
            drop-last-lf:删除消息后面的换行符
            date-mysql:mysql的时间格式
            date-rfc3164:rfc3164的时间格式
            date-rfc3164-buggyday:类似于date-rfc3164
            date-rfc3339:rfc3339的时间格式
            date-subseconds:时间戳的秒数
            escape-cc:替换控制字符
            space-cc:用空格替换控制字符
            drop-cc:删除控制字符
            sp-if-no-1st-sp:略
            secpath-drop:去掉斜杠,e.g. "a/b" becomes "ab"
            secpath-replace:将斜杠替换,e.g. "a/b" becomes "a_b"

       

  • 相关阅读:
    树莓派使用记录 修改国内软件源《二》
    树莓派使用记录 安装系统《一》
    C# 委托 Action 实现代码执行时间日志记录
    微软 Visual Studio 离线下载
    项目框架搭建工具
    WebApi 重写 DefaultHttpControllerSelector 实现路由重定向
    开发相关网页收藏
    造SQL语句
    报错:Every derived table must have its own alias
    html
  • 原文地址:https://www.cnblogs.com/solitarywares/p/7993871.html
Copyright © 2011-2022 走看看