【问题标题】:rsyslog filtering and forwardingrsyslog 过滤和转发
【发布时间】:2016-08-30 06:54:07
【问题描述】:

我正在尝试使用 rsyslog 虚拟机实现过滤和转发。

当我使用时

*.* @@192.168.1.100:514

它将所有日志转发到该日志服务器。

我需要做的是过滤掉包含'testing'和'flow'的日志,并阻止来自本地主机的日志被发送到日志服务器。

我尝试了很多方法来实现这种组合,但都失败了。使用过滤器后,我只是没有收到任何到目的地的日志。

rsyslog.conf剩下的完整内容是

# rsyslog configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####

# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark  # provides --MARK-- message capability

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

#### GLOBAL DIRECTIVES ####

# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

# File to store the position in the journal
$IMJournalStateFile imjournal.state

#### RULES ####
if $msg contains 'testing' then @@192.168.1.100:514
#*.* @@192.168.1.100:514

我的配置不起作用。

【问题讨论】:

    标签: rsyslog


    【解决方案1】:

    首先,请注意$IncludeConfig /etc/rsyslog.d/*.conf 这一行。基本上是说所有.conf 文件都将包含在您粘贴的rsyslog.conf 文件中。因此,与其将您的规则放在该文件的底部,我建议您添加另一个文件,例如/etc/rsyslog.d/30-testing.conf 并将您的规则放在那里。这更有条理,如果您的 syslog 配置在未来增长,这将很有帮助。

    除此之外,如果它在没有过滤器的情况下工作,因此端口/防火墙不是问题,那么它确实应该工作 - 你的过滤器行看起来很好。您可能已经这样做了,但不妨试试:

    :msg, contains, "testing"         @@192.168.1.100:514
    

    另外,你是不是每次修改配置文件都要重启rsyslog服务?您可能需要这样做。您还可以发布您使用的 rsyslog 版本吗?

    【讨论】:

    • 谢谢德鲁。我发现不是 rsyslog 不起作用。我发送的测试消息不够长,无法匹配。如果您只是将“测试”作为消息发送,则规则不起作用。如果您发送“我只是在测试”,它会起作用。我认为消息部分有一些长度条件,之后它匹配..我必须在配置文件中启用调试才能解决这个问题。它现在对我有用,非常感谢您回答我的问题
    • @Harry 这真的很有趣,它对我来说很好用(但我只是登录到本地文件)。我在我的 rsyslog 配置文件中有:if $msg contains 'testing' then /var/log/mylog.log 并在运行命令 logger "testing" 后,然后在 mylog.log 中看到日志行:May 9 14:56:25 myServerHostname root: testing。它记录得很好,所以很奇怪它不适合你。我使用的是 Ubuntu 12.04(rsyslog 版本:5.8.6),如果这有什么不同的话。
    • 我正在使用 Centos 7.2,除了我没有登录到文件之外,我正在登录到另一个系统日志服务器,它本质上只是我笔记本电脑中的一个守护进程。它只是在此处附加一个文本文件。至少我通过 rsyslog 学到了一些新东西 :)
    • @Harry,我在服务器机器上有一个本地文件(这是所有客户端的组合),现在我想过滤这个文件的数据,过滤条件可能是严重性、优先级和任何硬代码文本。我是这方面的新手,如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多