Basic Structure  基本结构:

这个章节介绍了如何配置rsyslog 基本工作, 认为rsyslog 作为一个大的日志记录和事件处理工具集。


它可以认为是一个框架使用一些基本的处理,固定的以数据流的方式,

但是是高度自定义的在消息流的细节。在配置过程中,

但是高度自定义在消息流的细节,在配置过程中,这个自定义是通过定义和定制rsyslog 对象实现。


消息流和对象概述:

消息输入到rsyslog 使用input 模块。然后,它们是被传递到ruleset,

规则是有条件的应用。

当一个规则匹配, 消息是被传递到一个action,然后对消息做一些操作。

例如 写到一个文件,数据库或者转达到一个远程主机。


处理原则:



input 提交收到的消息到规则集:

1.如果规则集没有明确指定,默认的规则被使用:


默认情况下,有一个规则(RSYSLOG_DefaultRuleset)


2.额外的规则可以用户定义:

3.每个规则集包含0个或者多个规则

当它允许有0个规则在一个规则集, 这显然没有意义

一个规则有一个过滤器和一个action清单

4.过滤器提供yes/no 决定来控制流的能力

5.一个过滤器"matches"(filter says "yes"),响应的action 列表被执行。

如果它不匹配,没有什么特别发生。

6.规则集是从第一个到最后一个按顺序评估 在给定的规则集。


7.所有的规则总是被完全评估,不管如果一个过滤器是否匹配(因为我们不在第一次匹配后结束).




如果消息处理应停止, “discard” action()

"discard" action (有~曲线字符或者stop命令为代表)必须明确的被执行。


如果discard 是被执行,消息处理立即停止,没有任何进一步的评估。

8.一个action 包含一个或者多个actions:

9.在一个action列表没有过滤器是可用的

10.有多于一个action在一个列表,字符必须放在过滤器的位置,这个必须按照之前的action.

11.actions 有action调用本身组成(e.g. ”:omusrmsg:”)

12.如果legacy 格式是被使用 $Action 指令必须指定在action前面

13.一些配置指令自动指向它们先前的值在被应用后

14.legacy 配置语句(以$开始)不影响 RainerScript 对象

配置文件:

在启动时,rsyslog 读取它的配置文件从rsyslog.conf 文件默认的。

这个文件可能包含引用来包含其他配置文件。

Statement Types 语句类型:

Rsyslog 支持3种不同类型的配置语法:

1.sysklogd - 这是plain 老的格式,无处不在,仍旧相当有用的对于简单的使用例子。

注意 有些很少的组成是不在被支持了,因为它们是和新的功能不兼容的。


2.legacy rsyslog 那些语句是以$符号开始。

它们设置一些配置参数和修改例子。

这是唯一的格式被支持在rsyslog v6之前。

它是仍旧支持在v6和以上版本。

注意 一些插件和功能仍旧只能通过legacy 格式。




RainerScript - 新的格式。这是最好的和最精确的格式用于很多复杂的例子。

rsyslog.conf 文件有语句组成,对于老的样式((sysklogd & legacy rsyslog),

对于新的样式(RainerScript)行间距是无关紧要的。

最重要的是,这意味着新的style actions和所有其他对象可以分成多行

推荐使用的语句类型:

通常建议使用RainerScript type statements,因为那些提供干净的容易堵的流控制

它们没有副作用

对于非常简单的事情 sysklogd 语句类型是仍旧被推荐的,尤其是如果完整的配置有这些简单的事情组成。

mail.info /var/log/mail.log
mail.err @server.example.net

这是很难被避免在一些简单的,仍旧在课程中被教授,很多人支持这个语法。

1.配置参数是需要的(例如e.g. the Action... type of legacy statements)

它是通常不推荐使用rsyslog legacy 配置格式(这些以$符号开始的)


订单处理:

指令是从上到下处理的,订单事件。

比如,如果你停止处理消息,

Inputs

每个输入需要一个input 模块被加载和定义一个侦听器。


Outputs 输出:

Outputs 也被称为"actions".一个小的actions是被预加载(如输出文件写,

是用于几乎每个rsyslog.conf),其他必须是被加载的像inputs:

一个action 是被调用通过action(type=”type” ...) object.


Type 是强制性的必须包含被调用插件的名字(e.g. “omfile” or “ommongodb”).


Rulesets and Rules 规则集合规则:

规则集合规则从rsyslog 处理的基础,总之,一个规则 是一个rsyslog 如何处理特定的消息。

通常,有一个filter的type(if-语句) 在rule前面。

规则集是规则的容器,一个单独的ruleset 可以包含很多规则。

在编程语言类似, 可以认为一个规则集就像一个程序。

一个ruleset 可以是分配到一个特定的input.类比,

这个意味当一个消息通过input 进入,程序(ruleset)会被执行

For quick reference, rulesets are defined as follows:

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