Rsyslog强化了 Syslog的各种概念,使之各自独立出来。从实际流程来说,Rsyslog与标准 Syslog流程一样,具体见图 3-1所示。
|
图 3-1
不过由于 Parser和 Output模块都可以重复调用,所以它们不再单单用于解析 RFC定义的格式和保存成文件,还可以用来做复杂的数据修改和格式转化,甚至可以通过 DBI等接口保存到 MySQL、HDFS、ElasticSearch等各种地方。
所以我们从用途的角度,可以把 Rsyslog的模块分为以下几种。
Input Modules
IM模块是改动最少的,基本上只有 File、TCP、UDP、UNIX Socket以及在 TCP基础上的 TLS和 GSSAPI等更安全的协议。
Output Modules 狭义的 OM模块,除了最基本的 File以外,还有用于中转的 FWD,Pipe,Snmptrap,
用于存储的 MySQL、PgSQL、Libdbi、HDFS、MongoDB等。此外,社区还有 Redis、ZeroMQ、 ElasticSearch和 Solr的 OM模块补丁。
Parser Modules 这个模块是在 5.3.4版本之后新加入的。在之前的 Rsyslog中,对 Syslog协议格式的
解析工作是直接在核心代码中完成,不可变更的。不过到目前为止,狭义概念的 PM模块不多,除了 RFC解析的以外,只有一个 pmlastmsg模块,专门用来解析 Syslog中常见的那句“last messages repated n times”。
Message Modification Modules
MM模块其实就是在广义的 PM或者 OM上实现的。目前和 Rsyslog代码一起分发的 MM模块有:Anon模块,用来转换具体的 IP地址到 A类地址;Normalize模块,用来将 Syslog格式的 content转换成为 CEE/Lumberjack的格式,这个模块是在 OM上实现的,所以必须在 action动作后才能调用;Jsonparse模块,目的也和 normalize模块一样,不过因为 Lumberjack格式其实就是 JSON,所以这个直接就解析成 JSON了;Snmptrapd模块,在 im的基础上,提供对严重性位数据的替换修改功能。
String Generator Modules
SM模块的作用是为 Rsyslog的 file和 forward提供 template功能。我们可以通过 template定义自己想要的内容样式。注意这不会影响到 Syslog本身的协议信息。