學會了如何在單一伺服器上排除故障。但在多伺服器環境中,最好的做法是將所有日誌彙集到一個中央伺服器,以便於安全、高效地審核與分析。
一、為什麼要集中化管理日誌?
安全性(Security)
如果伺服器被入侵,攻擊者通常會做的第一件事就是刪除或修改本地日誌。當日誌被即時轉發到另一台安全的伺服器上,即使本機被破壞,您仍然擁有完整的審計線索。
效率性(Efficiency)
避免網管人員必須逐一 SSH 登入數十台機器來檢查日誌。所有資訊都在一個地方,可以一次性搜尋和關聯事件。
二、集中化架構
集中化日誌通常由兩個角色組成:
日誌傳送端 (Client):負責收集本機日誌(從 journald 或 /var/log),並將其轉發出去。
日誌接收端 (Server):負責監聽特定的網路埠(通常是 UDP/TCP 514),並將接收到的所有日誌分類儲存。
三、Rsyslog 客戶端配置實務
我們將使用您熟悉的 rsyslog 來配置日誌傳送端。以下是在客戶機上設定日誌轉發的關鍵步驟。
目標: 將本機的所有日誌(所有類型、所有級別)轉發到 IP 地址為 192.168.1.5 的中央日誌伺服器。
編輯設定檔:使用 sudo vi 開啟 /etc/rsyslog.conf 或在 /etc/rsyslog.d/ 建立一個新的設定檔(例如 90-remote.conf)。
加入轉發規則:在檔案的 #### RULES #### 區塊之後(或新檔案中),加入以下規則。
程式碼片段:
(設定目標日誌伺服器,使用 TCP 協議轉發)
(. 表示所有設施 (Facility) 和所有嚴重性級別 (Severity) 的日誌)
. action(type="omfwd"
Target="192.168.1.5"
Port="514"
Protocol="tcp"
action.resumeRetryCount="10"
action.queue.filename="central_q"
action.queue.saveOnClose="on")
Target:中央日誌伺服器的 IP 地址。
Protocol="tcp":使用 TCP 協議。雖然速度略慢於 UDP,但 TCP 提供了可靠性(確保日誌不會丟失)。
action.queue:設定一個磁碟輔助佇列。這非常重要!如果網路連線中斷,日誌會先儲存在本地磁碟上,待連線恢復後再轉發,確保日誌不丟失。
重新啟動服務:儲存配置檔後,重新啟動 rsyslog 服務使其生效。
sudo systemctl restart rsyslog
完成此步驟後,您的伺服器就會開始將所有日誌傳送到中央日誌伺服器 192.168.1.5,不會因為網路瞬斷或服務重啟而丟失任何一筆紀錄。