Rhel
在 rsyslog 上執行 kill -HUP 時 UDP 數據會失去嗎?
我對 rsyslog 非常陌生,我正在閱讀文件以及查看其他人對其配置所做的範例,並且在提出日誌輪換主題時想到了一個問題。目前在我的伺服器中,有將某些消息過濾到非預設日誌文件的配置,並且該日誌文件有一個 logrotate 配置文件,但是看到有一個 syslog 的 logrotate 配置文件,它在 rsyslog 的程序 ID 上執行 kill -HUP .
我了解在文件被重命名、修改等之後需要重新啟動持有文件描述符的應用程序,但這對接收 UDP 消息的系統日誌伺服器有何影響?如果 rsyslog 需要重新啟動,則有一段時間 UDP 埠不再綁定到程序,因此任何遠端發送到伺服器的消息都會失去。時間視窗是否如此之短,這不是我應該擔心的事情,還是有不同的方法來解決這種可能性?(由於內部/我無法控制的原因,不可能使用 TCP。)
目前執行 RHEL 6.10 和 rsyslog 8.2004。
kill -HUP
向程序發送 HANGUP 信號。這並不一定會終止程序。檢查手冊頁指出此外,在 v3 中,將完全重啟以讀取更改的配置文件。請注意,這意味著已完成完整的 rsyslogd 重新啟動。除其他外,這會導致 TCP 和其他連接被斷開。
所以這意味著你對 TCP 的旁注也無濟於事。由於 UDP 是無連接的,因此您可能會失去一些。但是,如果一個數據包在那個微小的時間視窗內進入,您可能會收到一個 ICMP 響應,說明該埠未在偵聽,具體取決於伺服器/防火牆的配置方式。您還需要考慮發送應用程序將如何處理 ICMP 響應。