丢弃 rsyslog 消息
使用波浪号 (~) 丢弃选定的消息。
以下规则丢弃任何新闻消息:
news.* ~
我们可以通过在新行上指定后续操作并在操作前使用与符号 (&) 来为选择器指定多个操作。
在第一个操作行上指定选择器。
以下是具有多个操作的规则示例:
kern.* oir & ^knl-prog;knl & @192.0.2.101
在前面的示例中,所有内核消息都是:
发送给用户 oir
由模板 knl 处理并传递给 knl-prog 可执行文件
使用UDP协议转发到192.0.2.101
通过网络发送 rsyslog 消息
使用以下语法将 rsyslog 消息转发到远程机器:
@[zNUMBER]HOST:[PORT]
使用单个 at 符号 (@) 将 UDP 指定为传输协议。
使用双符号 (@@) 来指定 TCP。
可选的 zNUMBER 字段启用从 1 到 9 的 zlib 压缩级别。
HOST 字段指定接收主机。
可选的 PORT 字段指定接收主机上的端口号。
例如,要使用 UDP 协议将消息转发到 192.168.10.101:
*.* @192.0.2.101
使用 TCP 协议将消息转发到“host02.example.com”上的端口 18:
*.* @@host02example.com:18
Action 指定如何处理由选择器过滤掉的消息。
以下是一些可用的操作。
向特定用户发送 rsyslog 消息
指定要将 rsyslog 消息发送到的用户名。
用逗号 (,) 分隔用户名以指定多个用户。
使用星号 (*) 向当前登录的每个用户发送消息。
以下示例将所有内核消息发送给用户 oir:
kern.* oir
将 rsyslog 消息保存到日志文件
要将 rsyslog 消息保存到日志文件,请在选择器后指定日志文件的绝对路径。
以下示例选择所有 cron 消息,操作将它们保存到 /var/log/cron.log 日志文件:
cron.* /var/log/cron.log
我们可以指定现有的 tty 或者 /dev/console 设备将 rsyslog 消息发送到标准输出。
执行程序
我们可以为选定的 rsyslog 消息执行程序。
要指定要执行的程序,请在它前面加上插入字符 (^)。
指定一个模板,用于格式化接收的消息并将其作为单行参数传递给指定的可执行文件。
以下示例通过模板 knl 处理所有内核消息,并将它们传递给 knlprog 程序。
kern.* ^knl-prog;knl
将 rsyslog 消息写入数据库
我们可以使用数据库编写器操作将选定的 rsyslog 消息直接写入数据库表。
数据库编写器使用以下语法:
:PLUGIN:DB_HOST,DB_NAME,DB_USER,DB_PASSWORD;[TEMPLATE]
PLUGIN 字段指定执行数据库写入的插件。
rsyslog 提供对 MySQL 和 PostgreSQL 数据库的支持。
MySQL 集成需要 rsyslogmysql 软件包。
PostgreSQL 需要 rsyslog-pgsql 包。
我们还需要为 MySQL 加载 ommysql 模块和为 PostgreSQL 加载 ompgsql 模块。