我有几个远程站点(测试设置),每个站点都有多个 Linux 设备,它们远程将日志上传到该远程站点的 Raspberry Pi。我正尝试通过 AutoSSH 将这些日志转发到我的办公室,那里有一台中央日志服务器。从远程站点到办公室的连接是通过蜂窝数据进行的,而且不太可靠,需要多次重新连接。
最简单的解决方案是仅建立从 Raspberry 的日志端口 19532 到办公室的日志收集器的端口转发。这可以正常工作,除非 AutoSSH 管道断开连接。这会导致每个设备失去其日志上传连接,并且需要重新启动其 systemd-journal-remote 服务。这会自动发生,没有问题。但这会导致几秒钟的日志数据丢失。
是否有任何远程日志代理系统,可以接收日志事件并通过 AutoSSH 隧道可靠地将其转发到另一台主机?
我正在使用 Zabbix 来监控这些远程站点和设备。Zabbix 有非常聪明的 zabbix-proxy,它在远程站点 Raspberry 上运行,并且能够很好地处理 AutoSSH 重新连接,不会丢失任何数据。日志记录的类似功能将是理想的选择。
答案取决于您的“办公室”是否处于“主动”模式并从远程“拉取”数据,或者远程是否将数据“推送”到“被动”模式办公室服务。
在第一种情况下,您可能能够使用
Range: <cursor>
重新连接请求中的 http 标头来执行某些操作journalctl --show-cursor --lines=1
获取迄今为止接收的文件上的最后一个光标。在第二种情况下,您只需
--save-state
向journal-remote-upload
命令添加选项即可保存最后一个光标。从手册页中不清楚重新启动时此选项是否会使程序读取保存的光标并从那里继续。如果没有,那么您可以使用--after-cursor=....
写入默认文件的值/var/lib/systemd/journal-upload/state
。