Syslog

如何將日誌文件傳輸到另一個 linux 伺服器進行處理

  • September 26, 2017

是否有可靠的方法將日誌從一台伺服器傳輸到另一台伺服器?

目前我正在使用 cron 腳本scp每 5 分鐘將文件傳輸到另一台伺服器。

*/5 * * * * root

scp ~/my_log_file.txt user@remote_host.com:/remote/log/directory

  1. ryekayo 建議的我的首選方法是將系統日誌消息發送到本地文件和遠端主機:

/etc/rsyslog.conf:

authpriv.* /var/log/secure
authpriv.* @remote_host.com

(我認為這部分設施幾乎可以與所有 syslog 守護程序一起使用。在另一端整理東西的部分是特定於 rsyslog 的。)

然後在遠端端,您需要設置接收伺服器以將遠端消息過濾到適當的位置(通過發送帶有 %HOSTNAME% 作為文件名一部分的主機、通過設施 %syslogfacility-text%、程序名稱 %programname% 等.)

  1. 如您所說,您可以將 scp 與 cron 一起使用
  2. 或者,我認為如果您使用 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),那麼上述傳輸方法更好。

另一件需要注意的事情是,如果您覺得生成日誌的機器不可靠或不安全,最好從日誌生成機器獲取日誌儲存主機副本,而不是授予其寫入遠端機器的權限。

引用自:https://serverfault.com/questions/875431