设置 rsyslog 从两个网络设备进行记录

设置 rsyslog 从两个网络设备进行记录

我的网络上有 2 个 VOIP 设备(ht502 和 ht704),它们都能够将其日志信息作为系统日志数据发送。接收器是 Raspbian 上的一个小树莓派。

我想配置 syslog 以接收来自两个 VOIP 设备的消息并将它们存储到各自的(不同的)日志文件中。到目前为止,我还没有做到这一点。

我启用了 syslog(通过取消注释以下几行/etc/rsyslog.conf):

$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

我创建了/etc/rsyslog.d/如下两个文件。

ht704.conf
$template NetworkLog, "/var/log/ht704.log"
:fromhost-ip, isequal, "192.168.11.160" -?NetworkLog

ht502.conf
$template NetworkLog, "/var/log/ht502.log"
:fromhost-ip, isequal, "192.168.11.162" -?NetworkLog

注意各自不同的 IP 地址。

并重新启动服务:

service rsyslog restart

但事实证明,所有输出都存在于/var/log/ht502.log文件中。

例子:

Nov  7 19:05:39 HT-502 [00: 0B:82:42:31:62]: [1.0.14.1] NAT::checkNAT: detected NAT environment for account 1
Nov  7 19:05:39 HT-502 [00: 0B:82:42:31:62]: [1.0.14.1] NAT::addPortMapping(STUN), iport = 49260
Nov  7 19:05:39 HT704 [00: 0B:82:65:DD:1C] [1.0.5.10]:System uptime: 1846
Nov  7 19:05:39 HT704 [00: 0B:82:65:DD:1C] [1.0.5.10]:System memory: 13213696/724992/0/794624
Nov  7 19:05:40 HT-502 [00: 0B:82:42:31:62]: [1.0.14.1] SIPClientTransaction::sendRequest: Request 15 is sent
Nov  7 19:05:40 HT-502 [00: 0B:82:42:31:62]: [1.0.14.1] SIPStack(0)::run: Active transactions: 2

最重要的是,我实际上刚刚注意到来自 VOIP 设备的消息也意外地出现在/var/log/messages和中/var/log/syslog。我认为它们不应该出现在那里。或者应该出现吗?

知道缺少了什么吗?

答案1

总结:

您的模板互相干扰(尽管它们似乎没有被其他.conf文件继承,但它们是相冲突的 - 您的猜测和我的一样好)。

改名 NetworkLog每个文件都有一个唯一的名称。

添加 & ~作为最后ht704.conf一行ht502.conf

替代方案(清洁剂):

创建一个包含以下内容的单个.conf文件:/etc/rsyslog.d/

:fromhost-ip, isequal, "192.168.11.160" /var/log/ht704.log & ~ :fromhost-ip, isequal, "192.168.11.162" /var/log/ht502.log & ~ 使用格式化程序示例:

$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%" :fromhost-ip, isequal, "192.168.11.160" /var/log/ht704.log;RFC3164fmt :fromhost-ip, isequal, "192.168.11.162" /var/log/ht502.log;RFC3164fmt & ~

长版本:

最近,我发现自己很难理解这些文件的优先级和语法,并在谷歌搜索时发现了这个问题。我想链接到文档,但我发现它很难解析,而且似乎已经有动力在这里进行改进: https://github.com/rsyslog/rsyslog-doc 因此,大多数建议都来自经验证据(我尝试过的东西)。

图片 - rsyslog 文档帮助

今天:

FILENAME中的 s按/etc/rsyslog.d字母顺序操作[排序规则相关](即为什么默认值为50-default.conf)。例如,我试图根据相同的规则/条件(:fromhost-ip,等)获得具有不同格式的多个输出文件;答案是让第一的文件读取(按字母顺序/排序)做任何事情并排除STOP& ~同时呈现不同的输出到第二文件(按字母顺序/排序)**包括STOP& ~)。本例中第一个文件名为10-ddwrt.conf,第二个文件名为15-ddwrt.conf

希望这能有所帮助,请随意改进。我特别没有深入研究“新”语法,因为它与旧版本的 不兼容rsyslog

相关内容