Rsyslog 是一個自由開源的紀錄檔記錄程式,在 CentOS 8 和 RHEL 8 系統上預設可用。它提供了一種從用戶端節點到單個中央伺服器的“集中紀錄檔”的簡單有效的方法。紀錄檔集中化有兩個好處。首先,它簡化了紀錄檔檢視,因為系統管理員可以在一個中心節點檢視遠端伺服器的所有紀錄檔,而無需登入每個用戶端系統來檢查紀錄檔。如果需要監視多台伺服器,這將非常有用,其次,如果遠端用戶端崩潰,你不用擔心丟失紀錄檔,因為所有紀錄檔都將儲存在中心的 Rsyslog 伺服器上。rsyslog 取代了僅支援 UDP 協定的 syslog。它以優異的功能擴充套件了基本的 syslog 協定,例如在傳輸紀錄檔時支援 UDP 和 TCP 協定,增強的過濾功能以及靈活的設定選項。讓我們來探討如何在 CentOS 8 / RHEL 8 系統中設定 Rsyslog 伺服器。
我們將搭建以下實驗環境來測試集中式紀錄檔記錄過程:
通過上面的設定,我們將演示如何設定 Rsyslog 伺服器,然後設定用戶端系統以將紀錄檔傳送到 Rsyslog 伺服器進行監視。
讓我們開始!
預設情況下,Rsyslog 已安裝在 CentOS 8 / RHEL 8 伺服器上。要驗證 Rsyslog 的狀態,請通過 SSH 登入並執行以下命令:
$ systemctl status rsyslog
範例輸出:
如果由於某種原因 Rsyslog 不存在,那麼可以使用以下命令進行安裝:
$ sudo yum install rsyslog
接下來,你需要修改 Rsyslog 組態檔中的一些設定。開啟組態檔:
$ sudo vim /etc/rsyslog.conf
捲動並取消註釋下面的行,以允許通過 UDP 協定接收紀錄檔:
module(load="imudp") # needs to be done just onceinput(type="imudp" port="514")
同樣,如果你希望啟用 TCP rsyslog 接收,請取消註釋下面的行:
module(load="imtcp") # needs to be done just onceinput(type="imtcp" port="514")
儲存並退出組態檔。
要從用戶端系統接收紀錄檔,我們需要在防火牆上開啟 Rsyslog 預設埠 514。為此,請執行:
# sudo firewall-cmd --add-port=514/tcp --zone=public --permanent
接下來,重新載入防火牆儲存更改:
# sudo firewall-cmd --reload
範例輸出:
接下來,重新啟動 Rsyslog 伺服器:
$ sudo systemctl restart rsyslog
要在啟動時執行 Rsyslog,執行以下命令:
$ sudo systemctl enable rsyslog
要確認 Rsyslog 伺服器正在監聽 514 埠,請使用 netstat
命令,如下所示:
$ sudo netstat -pnltu
範例輸出:
完美!我們已經成功設定了 Rsyslog 伺服器來從用戶端系統接收紀錄檔。
要實時檢視紀錄檔訊息,請執行以下命令:
$ tail -f /var/log/messages
現在開始設定用戶端系統。
與 Rsyslog 伺服器一樣,登入並通過以下命令檢查 rsyslog 守護行程是否正在執行:
$ sudo systemctl status rsyslog
範例輸出:
接下來,開啟 rsyslog 組態檔:
$ sudo vim /etc/rsyslog.conf
在檔案末尾,新增以下行:
*.* @10.128.0.47:514 # Use @ for UDP protocol*.* @@10.128.0.47:514 # Use @@ for TCP protocol
儲存並退出組態檔。就像 Rsyslog 伺服器一樣,開啟 514 埠,這是防火牆上的預設 Rsyslog 埠:
$ sudo firewall-cmd --add-port=514/tcp --zone=public --permanent
接下來,重新載入防火牆以儲存更改:
$ sudo firewall-cmd --reload
接下來,重新啟動 rsyslog 服務:
$ sudo systemctl restart rsyslog
要在啟動時執行 Rsyslog,請執行以下命令:
$ sudo systemctl enable rsyslog
已經成功安裝並設定 Rsyslog 伺服器和用戶端後,就該驗證你的設定是否按預期執行了。
在用戶端系統上,執行以下命令:
# logger "Hello guys! This is our first log"
現在進入 Rsyslog 伺服器並執行以下命令來實時檢視紀錄檔訊息:
# tail -f /var/log/messages
用戶端系統上命令執行的輸出顯示在了 Rsyslog 伺服器的紀錄檔中,這意味著 Rsyslog 伺服器正在接收來自用戶端系統的紀錄檔:
就是這些了!我們成功設定了 Rsyslog 伺服器來接收來自用戶端系統的紀錄檔資訊。