zoukankan      html  css  js  c++  java
  • Rsyslog 基本结构

    基本结构

    简介:

      rsyslog是一个高度可定制化的日志和事件处理工具集。

      信息在输入模块的处理下进入rsyslog,然后被传递到规则集,当成功被规则匹配值之后,信息将进行下一个环节,写入数据库或文件或远程主机那里。


    message处理的原则:

    (1)输入的message被提交到设置的规则部分,如果没有设置特别的规则,将应用默认的规则。
    (2)默认的规则是RSYSLOG_DefaultRuleset
    (3)额外的规则可以由用户进行定义
    (4)每一个规则都必须包含零个或多个规则,但是零个规则的规则集显然毫无意义。
    (5)一个规则由一个过滤器和一个执行action列表组成
    (6)filter提供yes/no的能力和控制流的能力
    (7)如果匹配成功规则之后将执行相应的action列表,如果匹配失败则不作任何action
    (8)按顺序执行所有规则
    (9)无论是否有一个过滤器匹配,所有规则都必须被充分考虑到,如果匹配到filter之后的action是discard那么就没有必要继续进行匹配。
    (10)一个action列表可以包含一个或多个列表
    (11)在一个action列表里面不会再进行filter动作
    (12)如果一个action列表里面包含多个action,&字符必须放置在过滤器的位置,紧随着先前的action(此处强调的是一个书写格式)
    (13)action由调用的action组成,所有的action都必须被定义,示例(e.g. ":omusrmsg:", $Action... directives)
    (14)如果legacy格式被使用,$Action指定必须在指定的action中配置
    (15)一些配置指令自动引用之前的值被应用后,而其他的则有可能不(不理解这句话的意思,进一步往下看吧)
    (16)目前rsyslog5是严重过时的版本,强烈建议至少使用7以上的版本,这样的配置会变得更容易些。


    配置文件:

      rsyslog默认读rsyslog.conf文件,这个文件能包含其他的配置文件,通常rsyslogd可以通过-f <file>制定配置文件启动。

    声明类型:

    rsyslog能够兼容3种不通的配置声明类型
    sysklogd:
      这是最普通的格式,对于简单的用例仍然非常有用。注意:一些很少的features不再支持,因为一些新功能对它是不兼容的。
    legacy rsyslog:
      这些格式的语句是以$开头的,它是唯一pre-v6支持的版本,同时也支持6以上的版本,在一些插件和新功能中可能仍然需要
      使用这种格式书写(因为插件需要影响升级到使用新样式的格式,这并没有发生在所有插件)
    RainerScript:
      这是一种新的风格的格式,能够在复杂的情况下精确的表达配置的含义,
    rsyslog.conf文件由statements组成,对于旧格式(sysklogd & legacy rsyslog),lines是重要的,但是新格式却不在乎这些。


    推荐使用的Statement Types

    一般情况下,推荐使用RainerScript Statement Types,简洁且易读,很容易看出哪些参数是活跃的。
    在一些简单的事情上,sysklogd格式的配置方式会显得特别方便,示例:
      mail.info /var/log/mail.log
      mail.err @server.example.net
    作为经验法则,在如下的情况下请使用RainerScript格式配置:
      配置需要参数的时候
      复杂的控制流,例如在多个操作需要在相同条件下嵌套
    通常是不推荐使用legacy格式,但是在一些特殊的情况下可能不得不用,因为并不是所有的配置各模块全部转换成了RainerScript格式


    Comments(注解)

      1、已#号开头的注释方法
      2、c语言的注释方法,/* */


    Processing Order(处理的顺序)

      rsyslog.conf配置的顺序是从上至下的,顺序是很重要的,如果message被停止处理之后,后面的配置将不起作用。


    Flow Control Statements(控制流的格式)

      if expr then ... else ... - 条件执行
      stop - 停止处理当前的信息
      call - 调用一个规则集处理
      continue - 经常用于放置在if内部
      流控制部分可以参考链接:http://www.rsyslog.com/doc/v7-stable/configuration/filters.html


    Data Manipulation Statements(数据处理声明)

      set - 设置一个用户变量
      unset - 删除一个之前设置的用户变量


    Inputs

      每个输入都需要一个输入模块加载和定义一个listener,input是通过input()对象来定义的。
      rsyslog modules参考http://www.rsyslog.com/doc/v7-stable/configuration/rsyslog_conf_modules.html


    Outputs

      Outputs被称为actions,action调用action(type="type" ...),类型是强制性的(强制的)和必须包含插件的名称。


    Rulesets and Rules

      规则集和规则形式是rsyslog处理的基础。简而言之,一个规则是一种rsyslog应当如何处理一个特定的信息。
      通常,有一个类型的过滤(if语句)的规则。复杂的嵌套规则就像在一个编程语言。
      规则集是规则的容器。单一规则集可以包含许多规则。在编程语言的比喻(类比),规则集的一个可能认为像一个程序。
      一个规则集可以"约束"(分配)到一个特定的输入。在类比,这意味着当一个消息通过输入进来,"程序"(规则集)绑定到它将被执行(而不是其他)。
      一个简单的relus如下:

    ruleset(name="rulesetname") {
    action(type="omfile" file="/path/to/file")
    action(type="..." ...)
    /* and so on... */
    }

      关于rsyslog的rules文档信息如下:http://www.rsyslog.com/doc/v7-stable/concepts/multi_ruleset.html


  • 相关阅读:
    AcWing 900. 整数划分
    AcWing 913. 排队打水
    AcWing 897. 最长公共子序列
    AcWing 895. 最长上升子序列
    AcWing 902. 最短编辑距离
    AcWing 338. 计数问题
    AcWing 896. 最长上升子序列 II
    AcWing 779. 最长公共字符串后缀
    AcWing 282. 石子合并
    ASP.NET里常用的JS (转贴)
  • 原文地址:https://www.cnblogs.com/solitarywares/p/7993550.html
Copyright © 2011-2022 走看看