Basic Structure 基本结构:
这个章节描述rsyslog 配置基本工作,可以认为rsyslog 作为一个big logging 和事件处理工具集。
它可以认为是一个框架具有一些基本处理以固定数据流的方式,
但是是高度自定义的在消息流的细节。
在配置过程中,这个自定义是通过定义和定制rsyslog 对象实现
Quick overview of message flow and objects
消息输入模块使用input modules的帮助,然后,它们是传递到ruleset,
规则是有条件应用的。
当一个规则匹配, 消息是传递到一个action,然后做一些到消息
写它到一个文件,数据库或者转发到一个远端主机。
Processing Principles 处理原则:
1.输入提交收到的消息到规则集
如果规则集没有指定界限,默认规则被使用
2.默认的,有一个规则集(RSYSLOG_DefaultRuleset)
3. 额外的用户定义的规则集
4.每个规则集包含0个或者很多个规则
当它允许有0个rules在规则集,这显然是没有意义
5.一个规则有一个过滤器和一个action组成
6.过滤器提供yes/no 决定从容控制流程能力
7.如果 一个filter "matched"(filter say "yes"),相应的action列表被执行。
如果它不匹配,没有什么特别会发生
8.规则是顺序评估的从第一个到最后一个在给定的规则集。
9.所有的规则总是被完全评估的,无论如果一个过滤器是否匹配(因此我们不会再第一次匹配就停止)
如果消息处理要停止,"discard" action必须被执行。
如果discard 是被执行,消息处理立即停止,不需要评估任何其他规则。
10.一个action list 包含一个或者多个actions
11.在一个action list 没有更多的过滤器是可以的
12.在一个列表里有多余一个action,&字符必须防止在过滤器的位置,
这个必须立即遵循之前的action.
13.actions 有action调用本身组成(e.g. ”:omusrmsg:”)
14.如果legacy format是被使用的,$Action 指令必须指定在action之前
15.一些配置指令自动指向它们先前的值在被应用后
Configuration File 配置文件:
在启动时,rsyslog 读取它的配置从rsyslog.conf 文件默认。
这个文件可能包含引用到包含其他的配置文件
声明类型:
Rsyslog 支持3种类型的配置语句:
sysklogd -- 这是 plain old 格式,无处不在仍旧相当有用对于简单的使用例子。
注意 一些非常少的构造是不再被支持了,因为它们是和新的功能不兼容的。
legacy rsyslog:
那些是语句以$符号开始,它们设置一些配置参数和修改例子。
这个格式被支持在rsyslog v6之前。
但是它仍旧完全被支持在V6和以上版本。
注意 一些插件和功能可以仍旧只能是可用的通过 legacy format(因为插件需要被显示地升级来使用新的style 格式)
RainerScript - 新的样式,这是最好的最请求的格式用于更加复杂的情况。
rsyslog.conf 文件有语句组成。对于老的样式(sysklogd & legacy rsyslog),
对于新的style((RainerScript) 行空间是无关紧要的。
Recommended use of Statement Types
通常 它是推荐使用RainerScript 类型语句,因为那些提供clean和容易读取控制流结构以及毫无疑问的参数是主动的。
对于非常简单的事情sysklogd 声明类型是仍然被建议的,特别如果完全配置有这样的事情组成。
经典的例子是写入到文件(或者转发)通过优先级。在sysklogd,这看起来像:
mail.info /var/log/mail.log
mail.err @server.example.net
这是很难简单的击败的,仍旧在课程中被教授,很多人知道这个语法。
作为一个经验法则, RainerScript 配置语句应该被使用:
1. 配置参数是需要的(例如 Action... type of legacy statements)
2.需要更精细的流程控制
它通常不推荐使用rsyslog legacy 配置格式(那些指令开始一个美元符号).
然而, 一些设置和模块没有被转换成RainerScript。在这些情况下,必须使用legacy语法。
处理顺序:
指令是被处理从上而下。
流程控制语句:
流程控制是通过:
Control Structures
Filter Conditions
数据操作语句:
数据操作是通过设置完成,unset 和reset 语句
Inputs:
每个input 需要一个input 模块被加载和一个侦听定义用于它。
每个输入需要一个input 模块被加载和一个侦听定义它。
Outputs:
输出是被称为"actions", 一个小的动作集是预加载的(如output 文件写,这是用于每个rsyslog.conf)
一个action 是被调用通过action(type=”type” ...) object.
Type是强制性的和必须包含插件名字呗调用(e.g. “omfile” or “ommongodb”).
其他参数可能存在, 它们的类型和使用取决于output 插件
Rulesets and Rules 规则集和规则: