我想将与模式(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
都已停止。<<不好HELLO
word in 的消息/home/ubuntu/test.log
将/var/log/testlog_error.log
被转发到远程 rsyslog 服务器,<< GOODHELLO
在字/home/ubuntu/test.log
都不会/var/log/testlog_error.log
是好,但这些消息越来越转发到远程服务器rsyslog现在。<<坏我的理想情况应该是:
/var/log/syslog
HELLO
word 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 次 |
最近记录: |