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... */
}