Syslog
如何將日誌文件傳輸到另一個 linux 伺服器進行處理
是否有可靠的方法將日誌從一台伺服器傳輸到另一台伺服器?
目前我正在使用 cron 腳本
scp
每 5 分鐘將文件傳輸到另一台伺服器。
*/5 * * * * root
scp ~/my_log_file.txt user@remote_host.com:/remote/log/directory
- ryekayo 建議的我的首選方法是將系統日誌消息發送到本地文件和遠端主機:
/etc/rsyslog.conf:
authpriv.* /var/log/secure authpriv.* @remote_host.com
(我認為這部分設施幾乎可以與所有 syslog 守護程序一起使用。在另一端整理東西的部分是特定於 rsyslog 的。)
然後在遠端端,您需要設置接收伺服器以將遠端消息過濾到適當的位置(通過發送帶有 %HOSTNAME% 作為文件名一部分的主機、通過設施 %syslogfacility-text%、程序名稱 %programname% 等.)
- 如您所說,您可以將 scp 與 cron 一起使用
- 或者,我認為如果您使用 rsync
rsync ~/my_log_file.txt user@remote_host.com:/remote/log/directory
使用 cron 您可以保存重新複製日誌文件的第一部分(我表示不確定,因為您肯定會保存 COPYING 已傳輸的部分,但您仍然在每一側進行比較以找到已傳輸的部分以跳過。這應該更溫和SSD 並避免弄髒核心 IO 緩衝區,但仍然會產生 IO 操作來掃描兩端的開頭。)。 4. NFS(或 Ceph/GlusterFS/SMBFS)將一台機器的目錄掛載到另一台機器上,並在另一台機器上執行連續尾部操作。
這些是我能想到的選項。
根據您傳輸日誌的目標,如果目標是將它們長期儲存在更大的磁碟上,您可以通過將傳輸包含在 logrotate 的 post-rotate 中來提高效率。如果目標是訪問最後 5 分鐘的日誌(例如 OSSEC),那麼上述傳輸方法更好。
另一件需要注意的事情是,如果您覺得生成日誌的機器不可靠或不安全,最好從日誌生成機器獲取日誌儲存主機副本,而不是授予其寫入遠端機器的權限。