在rsyslog上执行kill -HUP时UDP数据是否丢失?

在rsyslog上执行kill -HUP时UDP数据是否丢失?

我对 rsyslog 非常陌生,我正在浏览文档并查看其他人对其配置所做的示例,当提出日志轮换主题时,我想到了一个问题。目前在我的服务器中,有配置将某些消息过滤到非默认日志文件,并且该日志文件有一个 logrotate 配置文件,但看到有一个 syslog 的 logrotate 配置文件,它对 rsyslog 的进程 ID 执行kill -HUP 。

我知道在文件被重命名、修改等后需要重新启动保存文件描述符的应用程序,但这对接收 UDP 消息的系统日志服务器有何影响?如果 rsyslog 需要重新启动,则在一段时间内 UDP 端口不再绑定到进程,因此远程发送到服务器的任何消息都会丢失。时间窗口是否如此之短,这不是我应该担心的事情,还是有不同的方法来解决这种可能性? (由于内部/我无法控制的原因,不可能使用 TCP。)

目前正在运行带有 rsyslog 8.2004 的 RHEL 6.10。

答案1

kill -HUP向进程发送 HANGUP 信号。这确实不是必然杀死该进程。检查手册页指出

此外,在 v3 中,将进行完全重启以读取更改的配置文件。请注意,这意味着 rsyslogd 已完全重新启动。除其他外,这会导致 TCP 和其他连接被中断。

所以这意味着你的 TCP 旁注也无济于事。由于 UDP 是无连接的,因此您可能会丢失一些。但如果在这么短的时间内有数据包进来,你可能获得 ICMP 响应,表明端口未侦听,具体取决于服务器/防火墙的配置方式。如何发送应用程序将认为 ICMP 响应是您还需要考虑的事情。

相关内容