首先把伺服器 (192.168.1.5) 轉換為一個功能完整的中央日誌伺服器。它的任務不只是接收,更重要的是將來自不同客戶機的日誌分類儲存,以便於管理和分析。
一、啟用遠端日誌接收
首先,我們需要告訴 rsyslog 服務開始監聽網路上的特定埠口。
編輯設定檔: 使用 sudo vi 開啟中央伺服器的 /etc/rsyslog.conf 檔案。
啟用 TCP/UDP 模組: 找到 Provides UDP syslog reception 和 Provides TCP syslog reception 區塊,並移除註解符號 #,將其啟用。
# 啟用 UDP 接收
$ModLoad imudp
$UDPServerRun 514
# 啟用 TCP 接收
$ModLoad imtcp
$InputTCPServerRun 514
儲存配置檔後,重新啟動 rsyslog。
sudo systemctl restart rsyslog
此時,中央伺服器已經可以接收來自遠端客戶機的日誌了。
二、日誌的智慧篩選與分類
如果沒有篩選,所有遠端日誌都會與本機日誌混在一起,或被寫入同一個檔案,導致分析混亂。我們需要設定樣板 (Template) 和 規則 (Rule),將日誌依據來源 IP 或主機名稱分類。
- 定義分類樣板
在設定檔的 GLOBAL DIRECTIVES 區塊中定義一個樣板,用來決定遠端日誌檔案的命名格式。我們將使用來源主機的 IP 地址來命名檔案。
# 定義一個樣板 (Template),使用來源 IP ($fromhost-ip) 作為檔案名稱
$template RemoteHost,"/var/log/remote/%$YEAR%/%$MONTH%/%fromhost-ip%.log"
RemoteHost:樣板名稱。
/var/log/remote/:日誌儲存的根目錄。
%$YEAR%/%$MONTH%:自動使用年份和月份建立子目錄,方便歸檔。
%fromhost-ip%.log:檔案名稱將使用客戶機的 IP 地址命名。
- 設置轉發規則
在 RULES 區塊加入新的規則,將所有遠端日誌轉向我們定義的新樣板。
# 將所有非本機 (non-local) 日誌,轉向使用 RemoteHost 樣板儲存
:fromhost-ip, !isequal, "127.0.0.1" -?RemoteHost
:fromhost-ip, !isequal, "127.0.0.1":這是一個過濾條件,表示 「如果日誌來源 IP 不等於 127.0.0.1 (本地主機)」。
-?RemoteHost:將這些日誌導向到定義的 RemoteHost 樣板。? 表示使用樣板,- 表示不立即同步到磁碟,以提升性能。
- 最終整理與維護
建立目錄: 在套用配置前,務必建立日誌儲存的根目錄:sudo mkdir -p /var/log/remote。
阻止重複寫入: 在成功將日誌導向遠端儲存後,建議在樣板規則之後加上 & stop,以防止這些日誌繼續往下匹配規則,避免重複寫入本地 /var/log/messages。
結論:
接收:啟用 imtcp 和 imudp 模組,監聽 514 埠。
分類:使用 樣板 (Template) 配合 來源 IP 過濾,將日誌分類到 /var/log/remote/ 下的不同檔案。
完成這些步驟後,中央日誌伺服器就能自動、有組織地接收和儲存所有客戶機的日誌了。