考虑以下架构:
我有一台笔记本电脑通过以太网连接到服务器。
这台笔记本电脑被配置为在服务器上使用 rsyslog 发送日志事件,服务器被配置为接受这些日志并将它们存储在一个文件中,以后可以与日志利用软件一起使用。
问题是,笔记本电脑有时可能会断开连接以在远程位置工作,然后可以在几个小时后插入。但我仍然想在重新连接后将所有本地事件传输到服务器。
我目前的想法是使用omrelp
系统日志模块并将事件本地存储在磁盘队列中,但我不太确定系统日志服务器再次可用时的行为。在 relp 协议不会重新发送消息之后是否有超时/限制?或者它可能不适合我的情况。
另一种解决方案是创建自定义脚本以在重新连接后协调客户端和服务器之间的日志,但我想知道是否有更好的解决方案。
我想到的一种可能的解决方案是使用 Splunk。您在客户端(笔记本电脑)上安装 Universal Forwarder,将其配置为查看日志,在服务器 Splunk 服务器(索引器和搜索头)上安装,配置它并等待数据。如果您未连接客户端,请等待,当“看到”服务器时,它开始转发日志。稍后您可以通过图形界面对日志进行广泛的分析。
此解决方案也可以应用于其他机器(客户端)
缺点是:
Rsyslog 为所有操作提供了一种排队机制。当队列移动到磁盘时,它会保留在内存中,直到太大或关闭。您可以将它与正常的 tcp
omfwd
转发设置一起使用,而无需求助于omrelp
.阅读有关 队列的更多信息,并查看完整的 队列选项 文档,或查看第二个 RedHat 示例 “25.14。使用新语法转发到单个服务器”。
如果你有像这样的遗留语法
或 RainerScript 版本
用类似的东西代替它