俗話說:「魔鬼都藏在細節裡。」這句話對系統管理而言尤為貼切,因為所有的關鍵線索都存在主機的Log資訊中,如何管理並快速分析Log檔案內的蛛絲馬跡,將是IT人員的首要工作目標。本文介紹如何利用開放原始碼套件rsyslog來建立一個中央控管式的Log儲存方案,有效地減輕管理人員的負擔,讓系統運作更順暢。
syslog是以Facility與Level來定義事件的種類及嚴重等級,其中Facility指的是那些種類的事件(如ftp、mail等類型事件)。
Linux系統將事件類型區分成許多種類,如下表所示。
事件類型與相關說明
Level則是用來描述事件嚴重的程度,可區分下列表中所示的嚴重級別(嚴重程度由低至高)。
事件嚴重級別說明
簡介rsyslog伺服器
rsyslog從2004年就開始進行開發,目的在於開發一個更強大的syslog伺服器來取代傳統的syslog伺服器,時至今日,大部分的Linux系統均已內建rsyslog來取代傳統的syslog伺服器。
與傳統的syslog伺服器相比,rsyslog具有下列的優勢。
1. 提供Multi-threading功能,處理效能比傳統的syslog伺服器更有效率。
2. 提供SSL加密功能,讓syslog資訊傳輸不再是明碼的形式,提升資料傳輸的安全性。
3. 提供資料庫輸出功能,可將syslog相關資訊儲存到資料庫伺服器上(如MySQL、PostgreSQL、Oracle等相關資料庫)。
4. 提供過濾功能,使用者可自行定義相關的過濾條件,從繁雜的記錄檔中取得符合的資訊。
rsyslog伺服器是一個模組化的架構,其架構圖如下所示。
|
▲rsyslog伺服器的模組化架構。 |
其中的INPUT Module是指定資料來源如何設定syslog的資料來源為檔案或從Socket而來,而Parse Modules提供針對所接收到的syslog資訊再設定過濾條件以取得更精確的資訊。
最後的Output Module則指定要將最後的syslog資訊儲存到那裡(如資料庫、檔案等等),簡而言之,rsyslog伺服器處理Log資訊的流程如下:
1. 選定syslog的資料來源。
2. 設定過濾條件,也可不設定。若沒有設定,即是將所有的資料都接收下來。
3. 決定syslog資料輸出儲存的地方。
在本解決方案中,為的是要將所接收到的syslog資訊傳遞至MySQL資料庫儲存,因此將只說明相關的模組。其餘的模組就請自行參閱其他文件。rsyslog提供的模組(Module)如下表所示。
rsyslog所提供的模組
安裝相關解決方案
由於rsyslog伺服器預設並未安裝支援MySQL資料庫的選項,所以要重新以原始碼編譯(記得事先移除系統預設的rsyslog套件)。
可利用wget指令至下列網址下載相關的原始碼:
首先,安裝rsyslog伺服器所需的程式庫。先安裝libestr:
接著,繼續安裝libee套件。