https://www.mtyun.com/library/how-to-config-rsyslog
Basic Structure
本节描述rsyslog配置基本上如何工作。 将rsyslog想象成一个大型日志记录和事件处理工具集。 它可以被认为是一个基本处理的框架,它以数据流的形式传输,并在消息流上是高度可定制的。 在配置期间,通过定义和自定义rsyslog对象完成此定制。
Quick Overview Of Message Flow and Objects
信息在输入模块的帮助下进入rsyslog,接着他们会被送入一个规则集,当规则被匹配时,消息被传送到对应的action,其可能是某个具体的文件也有可能是某个远程主机。
Processing Principles
1. 输入模块提交信息到规则集
1.1 如果规则集没有明确指定,使用默认规则集
2. 在默认情况下,只有一个规则集
3. 可以添加用户定义的规则集
4. 每个规则集包含一个或多个规则
4.1 允许0条规则的规则集,但他显然是没有意义的
5. 一条规则包含一个过滤器和一个action列表
6. 过滤器 提供yes/no的决策
7. 如果一个过滤器被匹配,相应的action会被执行。如果没有,则什么都不会发生
8. 规则将按照给定规则集中的第一个到最后一个规则的顺序进行评估。 没有来自不相关规则集的规则会被执行。
9. 无论过滤器是否匹配,所有规则总是得到充分评估(所以我们不停止第一场比赛)。 如果消息处理应停止,则必须明确执行“丢弃”操作(由代字符或停止命令表示)。 如果丢弃被执行,则消息处理立即停止,而不评估任何进一步的规则
10. 一个action列表包含一个或多个action
11. 要在列表中有多个动作,必须将和号字符放在过滤器的位置,并且这必须紧跟前一个动作
12-以下:不要使用legacy方式写配置文件
Configuration File
rsyslog默认从rsyslog.conf文件读取配置,这个文件可以包含到其他文件的链接
不同路径的配置文件可以通过-f <file> rsyslogd命令行可以指定。
Statement Types
syslog 支持三种不同类型的配置表述:
1. sysklogd 这是一种旧格式,对于基础的使用非常有用,某些格式不再兼容,因为他与新特征不兼容。这些在兼容性文档中有提到。
2. legacy rsyslog 不建议使用
3. rainerScript 这是一种新的格式,他是一种更好更精确的格式,可以用于更复杂的情况。与传统格式相同,他也不区分大小写。
rsyslog.conf文件由语句组成。 对于旧格式(sysklogd&legacy rsyslog),行确实很重要。 对于新风格(RainerScript),行间距不相关。 最重要的是,这意味着采用新风格的动作,并且所有其他对象可以按照用户的需要进行分割。
Recommended use of Statement Types
一般建议使用RainerScript类型的语句,因为它们提供简洁易读的控制流以及无疑哪些参数处于活动状态。 它们对包含文件也没有副作用,这可能是传统rsyslog语句的主要障碍。
对于非常简单的事情,仍然建议使用sysklogd语句类型,特别是如果完整配置包含这样简单的事情。 经典示例通过优先级写入文件(或转发)。 在sysklogd中,这看起来像:
这种简单性很难被打败,仍然在课程中教授,很多人都知道这种语法。 即使在新编写的配置文件中使用这些构造也是完全正确的。
根据经验,RainerScript配置语句应该在以下情况下使用:
1. 需要配置参数(例如,旧式语句(legacy)的动作...类型)
2. 需要更详细的流程控制(例如,当多个动作必须在相同条件下嵌套时)
Comments
有两种类型的注释:
1. #
2. /* content*/
Processing Order
指令从rsyslog.conf的顶部处理到底部。 订单很重要。 例如,如果您停止处理消息,显然停止语句之后的所有语句都不会被评估。
Flow Control Statements
流程控制如下:
1. Control Strictures
2. Filter Conditions
Data Manipulation Statements
数据操作由set, unset 和 reset 实现, 详细请看这里
Inputs
每个输入需要一个输入模块,它实现输入的载入和监听。完整的定义看rsyslog modules ,一旦被加载,输入就通过input()定义。
Outputs
输出也被叫做actions,少量的actions是预先加载的(如输出文件writer),其他的必须像inputs一样加载。
Rulesets and Rules
规则集和规则构成了rsyslog处理的基础。 简而言之,规则是rsyslog如何处理特定消息的一种方式。 通常,在规则前面有一种过滤器(if语句)。 规则的复杂嵌套是可能的,就像在编程语言中一样。
规则集是规则的容器。 一个规则集可以包含许多规则。 在编程语言的比喻中,人们可能会认为规则集就像是一个程序。 规则集可以“绑定”(分配)到特定的输入。 在类推中,这意味着当一个消息通过该输入进入时,绑定到它的“程序”(规则集)将被执行(但不是任何其他的!)。
没有评论:
发表评论