【发布时间】:2022-03-25 18:27:59
【问题描述】:
更新:我用了太多词,并不清楚我真正想要达到的目标。我现在编辑了文本以使我的意图更清晰 - 并提供我自己的答案(如下),因为我成功地为我解决了这个问题。
TL;DR:
归根结底,问题是:
如何配置 syslog,以便将一些消息路由到另一个处理它们的服务?
这个问题要多得多(如果你有时间;)):
我有一个集成测试场景,Raspi 将在其中编排和执行测试。 Raspi“从外部”刺激被测设备 (DUT) 并监听 DUT 的任何预期反应。因此,一个典型的集成测试场景(黑盒测试)。
+-----+ +-----+
| RPi |---| DUT |
+-----+ +-----+
要测试的功能之一是 DUT 是否会正确地向远程 rsyslog 服务器发出 syslog 消息。 所以我决定 Raspi 应该是“远程 rsyslog 服务器”(又名 syslog 接收器),因此可以测试 DUT 是否会发送它预期的所有 syslog 消息。 现在如何在 Raspi 上断言接收到的 syslog 消息?我可以简单地浏览 Raspi 上的 syslog 消息,并期望找到来自 DUT 的消息——以及来自 Raspi 本身的许多其他“标准”syslog 消息。
- 在设置测试运行时,向 rsyslog 服务器添加(动态?)另一个 rsyslog“规则”,以便消息也被中继到另一个“事物”(另一个消费 rsyslog 服务器仅用于测试断言目的)李>
- “其他事物”(rsyslog 使用者)随后将在测试期间接收所有 rsyslog 消息,并可以检查日志断言(执行测试并检查结果)
这样测试运行器就不必解析由“普通”rsyslog 服务器写入的日志文件。
测试运行后,我希望“其他东西”停止监听,“正常”的 rsyslog 配置恢复正常。
大致是这样的。您认为这是一种可行(而且不太复杂)的方法吗?
“另一件事”是 Python 脚本,因为整个测试编排都是用 Python 编写的。因此,可能是一个 Python rsyslog 服务器在一个特殊端口上侦听,并另外配置“普通”服务器 rsyslog,以便消息也转发给这个 Python 使用者。
如果可以将“普通”rsyslog 服务器配置为仅将这些消息中继到满足特定条件的“其他事物”,那就更好了。
你认为我应该坚持解析日志文件还是这似乎是个好主意?
【问题讨论】:
-
这是我第二次尝试阅读这篇文章,我发现它有点难以阅读和理解——也许不仅仅是我。您能否总结或拆分您的问题?或者只是列出您的主机/服务器以及他们正在做什么/应该做什么。