概述

<pre name="code" class="html">欢迎来到rsyslog

Rsyslog 是一个日志处理的快速系统,它提供高性能的,大的安全功能和模块化的设计。


当它开始一个普通的syslogd,rsyslog 已经演变成了一个瑞士军刀的日志系统,可以用于:


1.接收来自各种各样来源的输入

2.改造它们

3.并将结果输出到不同的目的地


Rsyslog 有一个强大的企业关注,但是也可以缩小到小的系统。它支持,包括,MySQL,PostgreSQL,


failover log destinations, ElasticSearch, syslog/tcp transport, 细颗粒度输出控制,


高精度的时间戳,队列操作和有能力过滤消息部分。

Configuration 配置:

Rsyslogd 是配置通过rsyslog.conf 文件,通常发现在/etc下。


默认,rsyslogd 读取/etc/rsyslog.conf. 这个可以通过命令行选项改变:


注意: 配置可以内部创建交互式的通过在线rsyslog 配置创建工具:


基本结构;


这个章节描述rsyslog 配置基本工作,想象rsyslog 作为一个大的日志记录和事件处理工具。


它可以认为是一个框架,一些基本的处理,以固定的数据流的方式,但是是可以高度定制的。


在配置过程中,这个自定义是通过定义和定制在rsyslog objects.



快速预览消息流和对象:


Message 输入到rsyslog 使用input modules模块。然后,它们是被传递到规则集,


规则条件是有条件的被应用。  当一个规则匹配时,消息是传入到一个action,


然后对消息做处理,例子,写到一个文件,数据库或者转发给远程主机。


处理原则:

 输入提交接收消息到规则集,如果 规则集没有没有明确的限制,默认规则集被使用:


默认的, 这里有一个规则集(RSYSLOG_DefaultRuleset)

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

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

  虽然它允许有0个规则在规则集内,但是这显然是没有意义的

  一个规则有一个过滤器和一个action列表组成

  过滤器提供yes/no 决定从而控制流能力

4.如果一个过滤器"matches" (过滤器says yes),相应的action 列表被执行,如果它不匹配,没有什么发生


5.规则是按顺序被评估从第一个到最后一个规则 在给定的规则集,  没有规则从相关的规则集是被执行


6.所有的规则总是被完全评估的,无论一个过滤器匹配或不匹配(因此我们不在第一个匹配后就停止).


如果消息处理应该停止,那么"discard" action (通过 tilde character 或者stop command为代表)

必须明确的被执行。如果 discard被执行,消息处理立即停止,不会进一步的评估。


7.一个action 列表包含0个或者多个actions.

8.在一个action列表没有进一步的过滤器是可能的

9. 多余一个action 在一个列表,&字符必须防止在过滤器的位置,这个必须理解遵循之前的动作。

10. actions 包含action 请求本身(例如  ”:omusrmsg:”) 以及action定义配置语句($Action... directives)


11.如果  legacy format被使用,$Action... 指示必须被定义在action前面

12.一些配置指令自动的指向到它们先前的值在被应用后,而其他的不是。

查看相应的文档获取细节, 警告 当前的不总是正确记录的。


13.总的来说, rsyslog v5 是过时的,它的配置语言是痛苦的

rsyslog 项目强烈推荐使用至少version 7,在那里那些版本是解决和配置是更加简单的

legacy  配置语句不影响RainerScript  对象


Configuration File:

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

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


一个不同的"root" 配置文件可以通过-f选项指定


Statement Types


Rsyslog 支持3种不同类型的配置声明:

sysklogd  这是简单的旧格式, 仍旧相当有用对于一些简单的情况。


注意一些非常少的结构是不在被支持  因为它们是不兼容新的功能


legacy rsyslog

这些是语句开始一个dollar 符号, 它们设置相同配置参数和修改例子actions操作的例子。

这是唯一的格式被吃在V6版本之前。

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

它是仍旧被支持在V6和以上版本。注意 一些插件和功能仍旧是可用的通过 legacy format


RainerScript: 新的样式,这是最好的和最精确的格式用于更复杂的情况。 本页的其余部分假设RainerScript 基于rsyslog.conf.



rsyslog.conf 文件有声明组成,对于老的格式(sysklogd & legacy rsyslog), 


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


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

Recommended use of Statement Types  推荐使用的声明类型:


通常 它是推荐使用RainerScript 类型声明, 因为它们提供干净的和简单的读取流控制以及毫无因为的 关于 那个参数是活动的。

它们也没有副作用和包含文件, 可以是一个主要的障碍在 legacy rsyslog statements


对于很简单的事情 sysklogd statement types仍旧是推荐的,尤其是如果完全配置有简单的组成。


经典的例子是写到文件里(或者代理)通过优先级,In sysklogd, this looks like:


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



这是一个很难被击败的简单性,很多人知道这种语法,它是相当完美的使用那些结果即使在新写的配置文件。


作为一个经验法则,RainerScript  配置语句应该被使用当:

1.配置参数是需要的(例如,Action legacy statements的类型)


2.更精细的流程控制是需要的(例如,当多个actions 必须嵌套在相同的条件下)


3.它通常不推荐使用rsyslog legacy 配置格式(那些指令以$符号开始)

然而,一些设置和模块没有被转换成RainerScript。在那些情况下,  legacy syntax必须被使用。


处理顺序:

指令是被处理从rsyslog.conf的顶部到底部,订购事宜。例如,你停止处理一个消息,显然所有的语句在停止语句是不会被评估了。


Flow Control Statements 流程控制声明

数据处理声明:

数据操作是通过set,unset和reset语句完成

Inputs:

每个输入需要一个input 模式被加载,一个侦听器定义它。完整的details 可以被找到在rsyslog 模块文档。

一旦加载,inputs 是定义通过input()对象。


Outputs


Outpus 也被称为"actions"  一些小的actions的集合被提前加载(像output file writer,


可以用于机遇每个rsyslog.conf文件), 其他必须被加载像inputs.


一个action 被调用通过action(type=”type” ...)对象。

Typel 是强制的和必须包含插件的名字

Rulesets and Rules


Rulesets and rules 从rsyslog处理的基础,总之,一个规则是rsyslog应该处理一个特定消息的方式。



通常,会有一个过滤器的类型(if语句)在规则前面,复杂的嵌套的规则是可能的, 很像一个编程语言



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


和编程语言相似,人们可能认为规则集就像一个编程。


一个规则集可以认为“bound” 分配给一个特定的input.


类比,这个意味着 当一个消息来自通过input,程序规则集会被执行


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




   

原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199440.html