2012-09-14 09:40:25nut

[Log分析器] Log Parser: 功能強大且威名遠播的記錄分析器

資料來源:微軟IIS官方網站

Log Parser: 功能強大且威名遠播的記錄分析器

本文會介紹以解析各種不同記錄檔而聞名的強大工具 Log Parser,它不但可以解析一般的文字格式記錄檔,它也能同時連結到資料庫去處理查詢的功能,而本文還會介紹兩個免費且 GUI 的 Log Parser 整合應用工具:Visual Log Parser 與 Log Parser Lizard。

MIS 人員必備的記錄分析工具- Log Parser

在機房中與各大伺服器與網路為伍的 MIS 人員,除了整天要管理伺服器以及網路的各項狀態外,對於出問題的服務或是應用程式,基本上也需要能夠做初步的故障診斷與簡易的問題排除,早期的伺服器軟體 還沒有像 Windows Server 系列 GUI 管理工具時,要能夠找出問題可能發生的原因,大概就只有去找尋記錄檔(log file)中伺服器的活動記錄,來搜尋問題可能發生的地方,狀態,錯誤碼,再綜合研判可能的因素,像是 Web 伺服器有時會出現網站無法連線或是存取被拒(401)、網頁消失(404)的情況,若應用程式本身是正常的話,就只能由伺服器來找原因了。

舉個例來說,在 IIS 記錄檔中,有一種 Win32 錯誤碼 64,會出現這個錯誤碼的情況是 IIS 行程在將執行結果回傳時,用戶端無法連線發生的,它的錯誤訊息為『指定的網路名稱無法使用』,其原因通常是被防火牆擋住了輸出(out bound)的連線,但前端只會出現『無法連線伺服器』,若只依前端的訊息會沒辦法得知真正的問題在哪裡,所以這時候 IIS 的記錄檔就變得很重要,同時網管或系統管理人員也應該要盡可能記錄伺服器活動的參數(以 IIS 7.0 來說,預設的欄位已足夠基本分析需要),以利發生問題時的追踪調查。只是,像 IIS 記錄檔這樣的文字檔案,一般來說都會有數百行甚至數十萬行(若網站流量大),單純用記事本來看的話,基本上是很難快速的查出問題在哪,唯一可用的就只有『編輯\尋找』的功能,然後一行一行判斷而已:

點擊放大

若每種伺服器記錄檔都要這樣找,豈不浪費時間又不精準?因此才有 Log Parser 這個工具的產生,Log Parser 可以解析像 IIS log 這種文字式的記錄資料,並且允許系統管理員人使用 SQL 指令來查詢,有學過資料庫的讀者應該都知道 SQL 指令適合用在資料集合的查詢處理上,像是由資料集合中篩選出指定欄位中符合條件的資料,只要利用 WHERE 指令即可;若要排序,則用 ORDER BY 就可以輕鬆做到,Log Parser 支援標準的 SQL 語法以及基本的彙總指令,像是 SUM/COUNT/AVG 等,可以用來做簡單的統計功能。

目前 Log Parser 2.2 版可支援 20 種不同的記錄檔來源,IIS 本身就有六種,而一般文字資料有七種,系統資訊類有四種,特殊資料三種(查詢來源類型由指令參數 i 設定),列表如下:

資料類型 檔案格式
IIS 記錄來源
IIS IIS 本身的基本記錄檔。
IISW3C IIS 輸出的 W3C 格式記錄檔(目前是 IIS 預設的記錄檔格式)。
BIN IIS 的集中化二進位記錄檔(Centralized Binary Logging)。
IISODBC IIS 的 ODBC 記錄檔。
HTTPERR 由 HTTP.SYS(IIS 6.0 以後的版本才有)輸出的httperr.log。
URLSCAN 由 URL scan 工具掃瞄輸出的記錄檔。
一般文字資料來源
CSV CSV(Comma Separated Values)格式文字檔。
TSV TSV(Tab Separated Values)格式文字檔。
XML XML 資料檔。
W3C W3C 格式記錄檔。
NCSA NCSA 格式記錄檔。
TEXTLINE 剖析文字並傳回行。
TEXTWORD 剖析文字並傳回單字。
系統資料來源
EVT Windows 事件檢視器。
FS 檔案系統
REG 登錄資料庫(Registry)
ADS Active Directory Service
特殊資料來源
NETMON 網路監控程式(Network Monitor)的記錄檔。
ETW Event Tracing for Windows 的記錄檔。
COM 利用 COM Plug-in 解析的自訂格式記錄檔。

剖析後的輸出,Log Parser 可以支援十一種:

輸出格式 說明 示例
W3C 輸出 W3C 格式的記錄檔。
XML 輸出 XML 格式的資料檔。
TPL 輸出由使用者定義範本格式的記錄檔。
TSV 輸出以 Tab 分隔的記錄檔。
SYSLOG 輸出由 RFC 3164 規範所定義格式的記錄檔。
NAT 輸出可讀式表格化欄位格式(readable tabulated column format)的記錄檔。
IIS 輸出 IIS 記錄檔(非 W3C)格式的記錄檔。
SQL 將記錄檔轉入資料庫中,可以用相關的參數指令設定目標伺服器,並且將資料直接輸入到目標伺服器的資料庫中,以利日後直接使用資料庫來分析。
DATAGRID 將資料以資料方格(Data Grid)方式呈現,並且直接顯示在使用者介面中。
CSV 將資料輸出到以逗號分隔格式的記錄檔中。
CHART 將資料輸出成圖表,這是 Log Parser 最令人激賞的功能,但它需要使用者安裝 OWC 元件。

而 Log Parser 的用法也很簡單,它是一個命令列(command-line)的工具,在使用時至少要給定輸入格式、輸出格式以及查詢指令,例如:

[Command-line]
C:\>LogParser -i:EVT -o:NAT "SELECT * FROM System"

表示由事件檢視器中查詢所有系統記錄的資料,並且輸出到一個 NAT 格式的記錄檔中。又例如下列的指令:

[Command-line]
C:\>LogParser -i:FS -o:NAT "SELECT Name, Size, CreationTime FROM
C:\MyDirectory\*.* ORDER BY Size, CreationTime"

可以查出目前在 C:\MyDirectory 下的檔案名稱、檔案大小與建立日期,然後以大小與建立日期排序後輸出到 NAT 格式的記錄檔中。

由上面兩個範例可看的出來,Log Parser 要活用的關鍵是在對它的 SQL 指令的操控,在不同的輸入格式,有可能SQL會有些許的變化,尤其是欄位的不同,所以在使用 Log Parser 下指令時要注意這個部份。同時,Log Parser 因為不是正統的DBMS,它的 SQL 指令雖然可以使用,但是它是以模擬(emulate)的方式解析並執行,對 SQL-92 標準的支援度上當然不能拿 DBMS 和它比,它也沒有多數 DBMS 可以利用的內建使用者函數,而且也因為解析的是文字檔的關係,速度會比較慢一些,這是文字檔讀寫的限制,就筆者測試的感覺下來,它已經算是很快了。

Log Parser 2.2 可以在這裡找到:
http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en

好用的免費 GUI 工具-Visual Log Parser

Log Parser 雖然功能強大,但是命令列工具的先天限制就是-只能在 Command Line 中使用,對於不常使用 Command Line 工作的一般使用者(或初階 MIS)來說,要在 Command Line 中打一堆指令和參數對他們而言可能是很痛苦的,尤其是打了一堆字後它回報錯誤或參數不對時,很容易出現挫折感。所以有佛心的開發人員利用了 Log Parser 開放的 COM API 撰寫了一個圖形化的使用者介面,讓大家可以利用 GUI 介面來操作 Log Parser,而且這個 GUI 工具還有語法檢查和文法標記(Syntax Highlight)的功能,讓大家能夠清楚 SQL 指令的各個部份。

Visual Log Parser 是由 jroland 與 mchouteau 兩位所發展的一個整合化的應用工具,它的介面就像是 Visual Studio 或 SQL Server Management Studio 類似的風格,是一種整合所有必要介面於一身的 GUI 工具。它是利用 SharpDevelop 這套 Open Source 的整合開發工具的核心函式庫為基礎打造出來的,不但具有與 Visual Studio 類似的視窗風格與排版,同時它也具有文法標記這個開發人員與 DBA 經常看到且用到的功能,而且預設的 Visual Log Parser 設定中,說明窗格會顯示在右邊,並會隨著所選的輸入格式有所變化:

點擊放大

圖:Visual Log Parser 使用者介面

點擊放大

圖:Visual Log Parser 輸入介面以及說明視窗

它的基本功能很類似 SQL Server Management Studio,若有操作過 SQL Server 的讀者對它應該會有很熟悉的感覺,它可以由外部檔案取得 SQL 指令(*.sql),也可以將查詢結果輸出到文字檔中,這些行為都和 SSMS 很像。

點擊放大

這個工具可以由 Visual Log Parser 在 Codeplex 上的官方網站 http://visuallogparser.codeplex.com/ 中下載,它的安裝也很簡單,它用的是 ClickOnce 的部署方式,使用者不需要介入太多動作即可安裝完成,而它需要的 Log Parser 2.2 元件也會由安裝程式自動偵測與安裝,而安裝完成時會自動開啟工具以讓使用者使用。

另一個好用的 Log Parser 視覺化工具-Log Parser Lizard

Log Parser Lizard 是由 Lizard Labs 所開發,將 Log Parser 的功能包裝成 GUI 介面的一個視覺化操作介面,與 Visual Log Parser 的基本功能大致相同,但它具有 Visual Log Parser 所沒有的功能:輸出圖表。而且它的使用者介面也是以整合環境為主,不過筆者覺得它比較像是 Outlook。

點擊放大

圖:Log Parser Lizard

這個工具可以在 Lizard Labs 的官方網站找到:http://www.lizard-labs.net/PageHtml.aspx?lng=2&PageId=18&PageListItemId=17,並且提供了一個安裝程式檔可供使用者下載安裝,此軟體為免費,且可以用在商業或非商業行為,而它也提供了付費支援的選項,在第一次執行 Log Parser Lizard 時,會出現下列畫面,若要使用免費版本,則按 OK 略過即可:

點擊放大

若讀者有購買授權的話,可以在這個畫面中輸入註冊碼以啟用關閉的功能。付費版本的 Log Parser Lizard 可以支援 PDF/XPS 查詢結果匯出以及視窗外觀的變化等等,但筆者認為免費版本的功能就已經十分充足(圖表功能在免費版本就有了)。

它的操作方式也十分簡單,它和 Visual Log Parser 的不同點之一,就是它有提供一些查詢的 SQL 指令範本,在窗格的左邊列舉適用不同資料來源的查詢指令範例,對於不熟悉 Log Parser 的 SQL 指令的使用者來說很容易的上手:

點擊放大

另一個與 Visual Log Parser 不同的地方是,它的查詢結果方格(Grid)具有樞紐查詢的能力,只要在功能表 View 中,將 Advanced Grid 啟用即可,操作方式就像在 Excel 中的樞紐分析表,只要將指定的欄位拖放到要做樞紐分析的欄位區,它就可以自動幫使用者依所選的欄位進行樞紐分析。

點擊放大

雖然 Log Parser Lizard 的功能比 Visual Log Parser 還要強一些,但它卻有個有點煩人的小問題,就是當使用者的 SQL 中有錯誤時,它都會先彈出 Visual C++ Debug Library Error 的對話盒:

此時請務必按『略過』,才會出現正確的訊息:

若按了中止或是重試時,就算會出現對話盒,程式還是會變得沒有回應,要強制由工作管理員將行程終止才可以。

結語

Log Parser 不但是一個強而有力的記錄檔分析工具,它也是 MIS 在處理伺服器或應用程式不正常時的診斷好幫手,是每一位擔任 MIS 的人必須要學習的工具,而隨著 GUI 工具的出現讓記錄檔的解析變得更方便,因此 MIS 更要學會利用 Log Parser,這樣不但可以有效的處理系統問題,也可以利用它來產出不同的系統報表(例如網站流量分析),作為系統效率的評估之用。

"><> 2020-08-19 16:30:34

%7F%0d%0a

hi 2020-08-19 16:29:23

"><test>