我想将与模式(HELLO在本例中)匹配的消息从自定义日志文件 ( /home/ubuntu/test.log) 转发到远程 rsyslog 服务器。
这是配置:
# cat /etc/rsyslog.d/05-forwarding.conf
*.* @@rsyslogserver.mycompany.com:10514
# cat /etc/rsyslog.d/10-custom.conf
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /home/ubuntu/test.log
$InputFileTag testlogs:
$InputFileStateFile testlogs
$InputRunFileMonitor
:msg, contains, "HELLO" /var/log/testlog_error.log
& stop
:msg, !contains, "HELLO" stop
Run Code Online (Sandbox Code Playgroud)
问题:
/var/log/syslog 都已停止。<<不好HELLOword in 的消息/home/ubuntu/test.log将/var/log/testlog_error.log被转发到远程 rsyslog 服务器,<< GOODHELLO在字/home/ubuntu/test.log都不会/var/log/testlog_error.log是好,但这些消息越来越转发到远程服务器rsyslog现在。<<坏我的理想情况应该是:
/var/log/syslogHELLOword in 的消息/home/ubuntu/test.log应该完全被丢弃。不要写入本地文件,也不要将此类消息转发到远程服务器。需要帮助我解决上面的第 1 点和第 3 点。
实际上,您的文件/etc/rsyslog.d/05-forwarding.conf正在转发所有经过思想的消息,而不仅仅是来自您的自定义文件/home/ubuntu/test.log 的消息。因此,您可以删除它,正如您所说,您只想转发自定义文件中的消息。
您的文件/etc/rsyslog.d/10-custom.conf必须如下所示:
$ModLoad imfile
$InputFilePollInterval 1
$InputFileName /home/ubuntu/test.log
$InputFileTag testlogs:
$InputFileStateFile testlogs
$InputFileFacility local0
$InputRunFileMonitor
:syslogtag, isequal, "testlogs:" {
:msg, contains, "HELLO" {
local0.* /var/log/testlog_error.log
local0.* @@rsyslogserver.mycompany.com:10514
}
stop
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我添加了以下内容:
$InputFileFacility local0
现在您的自定义文件将被监视,并且它的消息将写入 local0 工具中。来自 local0 的消息将具有您与之关联的标签。
:syslogtag, isequal, "testlogs:"
此规则将仅匹配包含标签 testlogs: 的消息,这正是您想要的消息。因此,所有其他消息将跳过它,并记录在 /var/log/syslog 和 50-default.conf 中的所有其他内容中。
:msg, 包含, "你好"
现在,包含 HELLO 的文件中的所有消息都将记录在 /var/log/testlog_error.log 中并转发到 @@rsyslogserver.mycompany.com:10514。
然后,“停止”将丢弃文件中写入 local0 的所有消息。
| 归档时间: |
|
| 查看次数: |
10388 次 |
| 最近记录: |