網管人雜誌
本文刊載於 網管人雜誌第 75 期 - 2012 年 4 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。文章目錄
1、前言2、LogAnalyzer 初始化安裝
主要設定檔權限確認
分析頁面基礎設定值
建立第一筆分析記錄
初始化設定完成
3、LogAnalyzer 進階設定
關閉分析頁面中贊助資訊 (Donate)
更換分析頁面首頁圖示 (Logo)
關閉分析頁面中視窗彈出功能 (Detail Popups)
調整分析頁面筆數及字數截斷功能 (Character Limit)
調整分析日誌欄位(Select View)
新增設備時擴充分析來源(Select Source)
分析頁面中文化(Select Language)
4、結語
1、前言
新版個人資料保護法,日前(10 月 27 日)法務部已經在官方網站上,公告了個資法施行細則草案(詳細內容請參考 http://0rz.tw/XIlGs),並且新版個資法施行細則修正草案條文中「第五條」(詳細內容請參考 http://0rz.tw/uPuRh),增加了對「軌跡資料」的保護,也就是企業營運環境中,只要與個人資料有牽扯到關系所產生的「日誌檔案 (Log Files)」,那麼就必須要妥善保存備份以供日後查察(企業須負舉證責任),這項修改後的新法規對於所有企業來說都是項嚴峻的挑戰,因為新版個人資料保護法中明定,不論該企業規模大小只要該企業擁有民眾相關「個人資料(簡稱 個資)」,那麼就必須要遵守新版個資法的保護規範。
2、LogAnalyzer 初始化安裝
在上一篇文章中,我們已經針對不同的作業系統平台 FreeBSD 以及 CentOS,設定作業系統擔任日誌伺服器的任務,以收集企業營運環境中相關設備所傳送的 Syslog或其它格式日誌,並且將 LogAnalyzer 的初始化前置作業設定調整完畢,接下來便可以開始對 LogAnalyzer 進行初始化環境安裝設定,請記得必須建立 「config.php」 設定空檔(稍後的環境設定將會寫入此檔中),並且要確定「網頁服務(例如 此實作中的 Apache)」,具有可以寫入此檔案的權限,否則當您直接連接 LogAnalyzer 首頁檔案 index.php 時,系統會偵測到沒有主要設定檔案 config.php 而顯示錯誤(如圖1所示)。
圖1、未建立 config.php 空檔或偵測不到主要設定檔內容而顯示錯誤
所有條件完備後,那麼就可以著手進行 LogAnalyzer 初始化設定,請輸入主機網址並配合 LogAnalyzer 安裝檔 install.php 進行連結即可(例如 http://www.weithenn.org/install.php),下列初始化環境設定將以安裝於 CentOS 平台上, 最新穩定版本 LogAnalyzer v3.2.3 進行說明。
如圖2所示,當順利開啟 LogAnalyzer 初始化安裝頁面後,您可以看到目前 LogAnalyzer 初始化的第一個步驟,為安裝前環境檢查,請按下【Next】鍵後繼續下一個初始化設定。
圖2、LogAnalyzer安裝前環境檢查
主要設定檔權限確認
接著步驟二,為確定 LogAnalyzer 初始化程序(也就是網頁服務),是否對主要設定檔 config.php 具有寫入的權限,如圖3所示設定檔案欄位顯示為 綠色「Writeable」,表示 LogAnalyzer 初始化程序,可以順利將稍後的環境設定寫入此檔案中,若無法寫入則欄位將顯示為 紅色「NOT Writeable」,並且也無法按下 Next 鍵(該鍵文字將變為 ReCheck),確認無誤後請按下【Next】鍵繼續下一個初始化設定。
圖3、主要設定檔 config.php 權限檢查
分析頁面基礎設定值
此步驟為屆時 LogAnalyzer 的基礎設定,例如 屆時分析頁面中每頁顯示幾筆日誌訊息...等,此頁面設定值日後若需要調整也可進行修改,將於稍後的進階設定中進行詳細說明,以下為此頁面中每項欄位功能說明:
- Number of syslog messages pre page: 設定每頁顯示幾筆日誌資訊。
- Message character limit for the main view: 設定主頁面訊息顯示字數。
- Character display limit for all string type fields: 設定每種日誌欄位的顯示字數。
- Show message details popup: 滑鼠移動到日誌資訊時,是否自動跳出詳細內容視窗。
- Automatically resolved IP Address (inline): 是否自動將日誌內容中的 FQDN,自動反解析為 IP 位址。
- Enable User Database: 是否啟用使用者資料庫機制,若選擇 Yes 將顯示下列連接至資料庫資訊相關欄位。
- Database Host: 輸入資料庫主機名稱或 IP 位址,例如 localhost。
- Database Port: 輸入資料庫主機的服務 Port 號,例如 3306。
- Database Name: 輸入 LogAnalyzer 使用的資料庫名稱,例如 loganalyzer。
- Table prefix: 輸入 LogAnalyzer 的表格名稱,例如 logcon_。
- Database User: 輸入可管理 LogAnalyzer 資料庫的使用者帳號名稱,例如 weithenn。
- Database Password: 輸入可管理 LogAnalyzer 資料庫的使用者密碼,例如 123456。
由於此次實作內容,是以中小企業角度來看所以希望架設環境儘量簡單易用,並且能快速建置 LogAnalyzer 日誌分析網頁查詢系統,因此是以讀取設備 Syslog 檔案的型式,同時不需要整合使用者帳號功能進行實作,因此在此步驟中並未啟用整合資料庫相關功能,確認無誤後請按下【Next】後繼續設定。
圖4、設定屆時 LogAnalyzer 分析頁面基礎設定值
建立第一筆分析記錄
由於未進行資料庫設定,因此設定初始化流程直接跳到步驟七,也就是建立屆時 LogAnalyzer 分析頁面中「第一筆來源記錄」,若屆時要收集多台設備的日誌資訊時該如何擴充? 後續進階設定時會一併說明如何擴充分析設備的數量,以下為此頁面中每項欄位功能說明:
- Name of the Source: 填入屆時顯示於 Select Source 項目的文字,請輸入容易識別管理的文字,例如 Juniper SSG20 Syslog。
- Source Type: 設定讀取日誌檔案的來源,例如 Diskfile 便是設定,分析日誌資訊其來源為系統檔案。
- Select View: 設定顯示此日誌檔案時應該套用哪種欄位,例如 採用 Syslog 格式欄位。
- Logline type: 設定讀取日誌檔案的類型,例如 傳入的日誌資訊為 Syslog 格式。
- Syslog file: 設定讀取日誌檔案的路徑,例如 前一篇文章所設定的 /home/log/ssg20.log 檔案路徑。
同樣的機制,請確保 LogAnalyzer 程序,可以讀取設定的 /home/log/ssg20.log 檔案(也就是網頁服務可讀取此檔案),否則當您按下 Next 鍵時將會出現錯誤訊息,系統表示無法讀取分析檔案而失敗並且無法繼續,確認無誤後請按下【Next】後準備完成基礎環境設定。
圖5、建立第一筆分析記錄
初始化設定完成
至此,LogAnalyzer 初始化環境設定已經完成,請按下【Finish】鍵,進入 LogAnalyzer 分析頁面的首頁(index.php)。
圖6、完成 LogAnalyzer 初始化環境設定
圖7、LogAnalyzer 日誌分析預設主頁面
3、LogAnalyzer 進階設定
完成初始化 LogAnalyzer 環境設定後,首先建議您「刪除」初始化安裝檔 install.php,或者設定該檔案權限為「唯讀」(請依個人喜好擇一即可),以免有人再次連結到初始化安裝檔進行設定,破壞了原本的環境設定,接著就進行 LogAnalyzer 進階客製化設定,以使 LogAnalyzer 更為符合您的需求像是為貴企業所打造。
# rm /home/web/ install.php //刪除初始化設定檔 (方式一)
# chmod 400 /home/web/install.php //設定初始化設定檔為唯讀 (方式二)
關閉分析頁面中贊助資訊 (Donate)
首先在 LogAnalyzer 分析頁面中,基本上不管切換到哪一頁,您都會看到在分析頁面置頂處,有個贊助 LogAnalyzer 計畫的捐獻(Donate)按鈕,若您覺得這個贊助資訊有點礙眼,您可以透過修改 LogAnalyzer 函數設定檔(functions_common.php),來關閉這個贊助資訊。當然若您覺得 LogAnalyzer 日誌分析軟體套件對您有些許幫助,不妨考慮贊助 LogAnalyzer 計畫,以使此軟體套件的開發者更有心力繼續下去,使 LogAnalyzer 運作的更好。
如下操作中,將 LogAnalyzer 函數設定檔 functions_common.php 內容中,SHOW_DONATEBUTTON 的參數值由「true 修改為 false」,即可關閉在分析頁面中贊助 LogAnalyzer 計畫捐獻資訊。
# vi /home/web/include/functions_common.php //修改函數設定檔
$content['SHOW_DONATEBUTTON'] = true; //預設值
$content['SHOW_DONATEBUTTON'] = false; //修改後
圖8、修改前,分析頁面置頂處總有贊助 LogAnalyzer 計畫捐獻資訊
圖9、修改後,贊助 LogAnalyzer 計畫捐獻資訊消失了
更換分析頁面首頁圖示 (Logo)
您也可以在 LogAnalyzer 分析頁面中,將預設的 LogAnalyzer Logo 更換為您公司的 Logo,請將貴公司或個人的 Logo 存放至 images/main 路徑中(例如 本文實作中的 /home/web/images/main 路徑下),接著透過修改 LogAnalyzer 函數設定檔 functions_common.php 內容中 EXTRA_PHPLOGCON_LOGO 的參數值,將預設的 Logo 圖檔名稱 Header-Logo.png,更改為您的 Logo 圖檔名稱(例如 Weithenn-Logo.png),即可更換 LogAnalyzer 預設 Logo。
# vi /home/web/include/functions_common.php //修改函數設定檔
$content['EXTRA_PHPLOGCON_LOGO'] = \ //接續下一行
$content['BASEPATH'] . "images/main/Header-Logo.png"; //預設值
$content['EXTRA_PHPLOGCON_LOGO'] = \ //接續下一行
$content['BASEPATH'] . "images/main/Weithenn-Logo.png"; //修改後
圖10、修改前,為 LogAnalyzer 預設 Logo
圖11、修改後,取代為個人化的 Logo
關閉分析頁面中視窗彈出功能 (Detail Popups)
在 LogAnalyzer 初始化環境設定步驟三時,若當時 「Show message details popup」 選項選擇「Yes」,則在 LogAnalyzer 分析頁面時,只要滑鼠移動到日誌資訊(Message 欄位) 中任何一筆記錄,頁面便會立即彈出視窗顯示該日誌的詳細內容,若您覺得這樣的彈出功能造成困擾時可以關閉它。
當關閉自動彈出視窗功能後,想要查看該筆日誌資訊的詳細內容時,您只要點選該日誌資訊即可,下列操作為修改 LogAnalyzer 主要設定檔 config.php 內容,將自動彈出視窗功能ViewEnableDetailPopups 參數值,由預設的「啟用(1,Enable)」修改為「禁用(0,Disable)」。
# vi /home/web/config.php //修改主要設定檔
$CFG['ViewEnableDetailPopups'] = 1; //預設值,1 為啟用 (Enable)
$CFG['ViewEnableDetailPopups'] = 0; //修改後,0 為禁用 (Disable)
圖12、LogAnalyzer 日誌資訊自動彈出視窗功能
調整分析頁面筆數及字數截斷功能 (Character Limit)
在 LogAnalyzer 初始化環境設定步驟三時,便設定分析頁面中每頁顯示的日誌資訊筆數,以及各項欄位顯示字數,若對於當時的設定不滿意,例如 預設值設定數值太小,造成日誌資訊常常被截斷,需要一筆一筆點進去看,那麼便可以透過修改 LogAnalyzer 主要設定檔 config.php 進行調整。
下列為當時初始化環境設定選項以及主要設定檔 config.php 中,相對應的參數值及功能說明:
下列操作為將主要設定檔中,將分析頁面的筆數重新調整為每頁僅顯示「10筆」日誌記錄,而 Message 欄位中的日誌資訊只要超過「20個字」,在分析頁面中便會將後面的字截斷,必須點擊該日誌查看詳細資訊才可看到所有日誌內容,至於其它欄位其只要超過「5個字」便會截斷後面的字。
# vi /home/web/config.php //修改主要設定檔
$CFG['ViewEntriesPerPage'] = 50; //預設值,每頁顯示筆數
$CFG['ViewEntriesPerPage'] = 10; //修改後,一頁顯示 10 筆日誌記錄
$CFG['ViewMessageCharacterLimit'] = 80; //預設值,Message 欄位字數限制
$CFG['ViewMessageCharacterLimit'] = 20; //修改後,超過 20 個字便截斷
$CFG['ViewStringCharacterLimit'] = 30; //預設值,其它欄位字數限制
$CFG['ViewStringCharacterLimit'] = 5; //修改後,超過 5 個字便截斷
圖13、修改後的 LogAnalyzer 分析頁面
調整分析日誌欄位(Select View)
LogAnalyzer 在預設情況下僅支援三種類型的日誌欄位顯示,分別是 Syslog、EventLog、Webserver,若想要自行定義顯示欄位也可以進行修改,例如 建立一個名稱為 Mylog 的日誌名稱,並且只顯示 日期(Date)、主機名稱(Host)、日誌類型(Syslogtag)、日誌種類(MessageType)、日誌資訊(Message) 等 5 個欄位。
下列操作步驟為修改主要設定檔內容,將 ShowMessage 參數的開頭註解符號「//」拿掉,並且在顯示欄位參數 Columns 中定義需要的欄位值。
# vi /home/web/config.php //修改主要設定檔
//$CFG['ShowMessage'] = true; //預設值
$CFG['ShowMessage'] = true; //修改後 (拿掉開頭 // 註解符號)
//$CFG['Columns'] = array ( SYSLOG_DATE, SYSLOG_FACILITY, SYSLOG_SEVERITY, \ //接續下一行
SYSLOG_HOST, SYSLOG_SYSLOGTAG, SYSLOG_MESSAGETYPE, SYSLOG_MESSAGE ); //預設值
$CFG['Columns'] = array ( SYSLOG_DATE, SYSLOG_HOST, SYSLOG_SYSLOGTAG, \ //接續下一行
SYSLOG_MESSAGETYPE, SYSLOG_MESSAGE ); //修改後
修改顯示欄位後在 Select View 下拉式選單中,其預設顯示的文字為 「Legacy columns configuration」,可以透過修改函數設定檔內容修改為本例中所要顯示的名稱「Mylog」。
# vi /home/web/include/functions_config.php //修改函數設定檔
function AppendLegacyColumns() { //位於 AppendLegacyColumns 函數內
'DisplayName' =>"Legacy Columns Configuration", //預設值
'DisplayName' =>"Mylog", //修改後
圖14、自訂日誌顯示欄位
新增設備時擴充分析來源(Select Source)
如本文實作所述,架設的 FreeBSD 及 CentOS 作業系統平台,已經成功啟動並擔任日誌伺服器的角色,負責收集所有設備的日誌檔案,而目前卻只有顯示一台設備 SSG20 的日誌內容。那麼應該如何為收集後的每個設備日誌檔案,建立一個專屬的日誌頁面?
首先請確定該設備已啟動 Log Client 的 Syslog 功能,並且 FreeBSD 及 CentOS 平台也可以順利接收日誌,並寫入至相對應的檔案中,接著修改 LogAnalyzer 主要設定檔,於設定檔的最底部便是擴充日誌項目的設定,每個日誌項目共有六項欄位說明如下:
- ID: 分析日誌的 ID 此數值不可重複,例如 Source2。
- Name: 屆時 Select Source 下拉選單中所顯示的設備名稱,例如 Core-Switch。
- ViewID: 分析此日誌所使用的日誌類型,例如 SYSLOG。
- SourceType: 分析日誌檔案的來源為何,例如 SOURCE_DISK 從硬碟中讀取。
- LogLineType: 採用指定的日誌欄位進行資訊顯示,例如 syslog。
- DiskFile: 指定日誌檔案的存放路徑,例如 /home/log/core-switch.log。
下列操作為,修改 LogAnalyzer 主要設定檔內容,加入三筆網路交換器日誌資訊項目,分別是
Core-Switch、Edge-Switch01、Edge-Switch02,相關修改內容資訊如下:
# vi /home/web/config.php //修改 LogAnalyzer 主要設定檔
$CFG['DefaultSourceID'] = 'Source1'; //分析頁面預設顯示哪個日誌檔
$CFG['Sources']['Source1']['ID'] = 'Source1'; //日誌檔 ID
$CFG['Sources']['Source1']['Name'] = 'Juniper SSG20 Syslog '; //分析頁面中顯示文字
$CFG['Sources']['Source1']['ViewID'] = 'SYSLOG'; //日誌類型
$CFG['Sources']['Source1']['SourceType'] = SOURCE_DISK; //讀取日誌由硬碟
$CFG['Sources']['Source1']['LogLineType'] = 'syslog'; //日誌欄位
$CFG['Sources']['Source1']['DiskFile'] = '/home/log/ssg20.log'; //讀取的日誌檔案路徑
$CFG['Sources']['Source2']['ID'] = 'Source2';
$CFG['Sources']['Source2']['Name'] = 'Core-Switch';
$CFG['Sources']['Source2']['ViewID'] = 'SYSLOG';
$CFG['Sources']['Source2']['SourceType'] = SOURCE_DISK;
$CFG['Sources']['Source2']['LogLineType'] = 'syslog';
$CFG['Sources']['Source2']['DiskFile'] = '/home/log/core-switch.log';
新加入第三、四筆分析資訊 Edge-Switch01、Edge-Switch02
$CFG['Sources']['Source3']['ID'] = 'Source3'; //日誌檔 ID
$CFG['Sources']['Source3']['Name'] = 'Edge-Switch01'; //分析頁面中顯示文字
$CFG['Sources']['Source3']['ViewID'] = 'SYSLOG'; //日誌類型
$CFG['Sources']['Source3']['SourceType'] = SOURCE_DISK; //讀取日誌由硬碟
$CFG['Sources']['Source3']['LogLineType'] = 'syslog'; //日誌欄位
$CFG['Sources']['Source3']['DiskFile'] = '/home/log/edge-switch01.log'; //讀取的日誌檔案路徑
$CFG['Sources']['Source4']['ID'] = 'Source4';
$CFG['Sources']['Source4']['Name'] = 'Edge-Switch02';
$CFG['Sources']['Source4']['ViewID'] = 'SYSLOG';
$CFG['Sources']['Source4']['SourceType'] = SOURCE_DISK;
$CFG['Sources']['Source4']['LogLineType'] = 'syslog';
$CFG['Sources']['Source4']['DiskFile'] = '/home/log/edge-switch02.log';
圖15、增加三筆網路交換器的日誌分析資訊
分析頁面中文化(Select Language)
目前 LogAnalyzer 分析頁面的語系,預設僅支援四國語系分別是 德語(Deutsch)、英語(English)、義大利語(Italiano)、葡萄牙語(Português),若想要將 LogAnalyzer 頁面自行進行「正體中文(Traditional_Chinese)」翻譯,也是沒有問題的 !! 只要注意下列相關事項及設定即可達成。
- 修改主要設定檔 config.php 中 ViewDefaultLanguage 參數內容,指定成您自訂的語系即可(例如 tw)。
- 修改主要設定檔 config.php 中 InjectHtmlHeader參數內容,指定網頁預設採用「UTF-8」 萬國語言編碼方式,否則屆時顯示的正體中文將為亂碼(因為預設網頁編碼方式為 ISO-8859-1)。
- 將原本英文語系檔案進行複製後,即可進行介面中文化翻譯內容的修改動作(admin.php、main.php)。
- 修改語系檔案中 info.txt 內容,例如 由 English 修改為 Traditional_Chinese,則屆時 Select Language 下拉選擇便顯示該文字。
# vi /home/web/config.php //修改 LogAnalyzer 主要設定檔
$CFG['ViewDefaultLanguage'] = "en"; //預設值
$CFG['ViewDefaultLanguage'] = "tw"; //修改後 (HTML 語法)
$CFG['InjectHtmlHeader'] = ""; //預設值
$CFG['InjectHtmlHeader'] = "<meta http-equiv=Content-Type \ //修改後,接下一行
content=text/html; charset=utf-8>"; //指定網頁採用 UTF-8 編碼(HTML 語法)
# cp –rp /home/web/lang/en /home/web/lang/tw //複製英文翻譯檔案
# echo ‘Traditional_Chinese’ > /home/web/lang/tw/info.txt //修改語系下拉選單顯示文字
圖16、LogAnalyzer 分析頁面語系本地化(正體中文)
4、結語
新版個資法案施行在即,因此對於 IT 預算本來就不高的中小企業來說,無疑是項挑戰,此時不妨可以嘗試架設一台 日誌伺服器(Log Server),並且配合 LogAnalyzer 這套網頁呈現方式的 Log 分析軟體,以便達成平時進行日誌檔案收集並保存備份之外,進而日後需要查詢時也提供其方便性,如此低成本建置費用及該有的功能性,以及可自行客製化的彈性,不失為中小企業的解決方案之一。