zoukankan      html  css  js  c++  java
  • Advanced Logging: 伺服器記錄管理的好幫手(*微软 IIS 官方网站 )

    Advanced Logging: 伺服器記錄管理的好幫手

    http://www.microsoft.com/taiwan/technet/iis/expand/AdvancedLogging.aspx

    本文將介紹 IIS 7 上一個整合記錄檔並可以允許管理人員自訂記錄內容的擴充模組:Advanced Logging,它可以整合現有在 IIS 上的 W3C 記錄檔的內容,同時也可以允許管理人員由不同的來源的資料寫入記錄檔中,以備日後可能的問題追踪之用。

    Advanced Logging 介紹

    只要是管理IIS伺服器的網管或應用程式開發人員,應該對 W3C 的記錄檔很熟悉,W3C 記錄檔記錄了所有來自用戶端要求的相關資訊,包含要求字串、URL、回應狀態、Win32 狀態以及許多參數,並且可以由管理人員自行選定要記錄哪些欄位:

    W3C的記錄檔對大多數的管理而言已經是足夠,但對於一些大型應用程式,或是利用 IIS 做 Hosting 的廠商而言,快速解決問題是他們的工作重點,因此他們會想要在記錄檔中放更多的資訊,以利問題的診斷,像是:

    • 要求當下的 CPU 使用率與記憶體使用量。
    • 應用程式自訂的 HTTP 標頭值。
    • 來自自訂模組的某個記錄值。
    • 應用程式輸出時的 HTTP 回應標頭。
    • 某個未包含在 W3C 記錄檔中的伺服器變數。

    使用 W3C 記錄檔還有另外一種問題,就是因為它把所有的用戶端要求都記錄下來,因此只要是流量稍大或是使用者較多的網站,其 W3C 記錄檔肯定非常龐大,要在數以萬計的記錄中找出有問題的要求與回應記錄,基本上是在考驗管理人員的耐心,雖然目前已經有像 Log Parser 這樣的工具,但是對管理人員來說還是不夠方便,最好是可以直接將多餘的記錄過濾掉,不但可以減少記錄檔的儲存空間,在處理以查詢時速度與便利性都會比較高。

    Advanced Logging 模組即為 IIS 團隊給廣大的 IIS 7.0 管理員在記錄問題上的解決方案,Advanced Logging 是一個掛在 IIS 核心功能中的模組,它可以接收來自於伺服器(server)以及網站(site)中各式各樣的記錄,並且再經過由管理人員定義的過濾器(filter)篩選之後寫入到磁碟機中成為記錄檔,目前 Advanced Logging 可以支援下列三種記錄方式:

    • Client Logging:支援用戶端使用經驗的記錄,包含使用 Smooth Streaming 的串流影音觀賞,以及 Silverlight 3.0(含)以後的使用者操作經驗。
    • Realtime Logging:支援來自 IIS 模組的即時訊息記錄,這個必須要由 IIS 模組在開發時期時就設定輸出Trace訊息時才會生效。
    • Custom Logging:支援由管理者自行設定條件以及記錄資料類型的記錄,這會是 Advanced Logging 使用最多的功能。

    定義自己的記錄檔

    Advanced Logging 模組可以利用 Web Platform Installer 2.0 在 IIS 7.x 上安裝,安裝後即可在 IIS 7.x 的管理介面中看到 Advanced Logging 的圖示,但預設它並不會啟動,因此需要管理人員先到伺服器的管理區,開啟 Advanced Logging 功能,再於右邊點按『Enable Advanced Logging』的指令啟動它。

    點擊放大

    當啟用以後,Advanced Logging 模組會在 Log Directory 所指定的地方建立資料夾以及記錄檔,並且利用與 W3C 相同的方式開啟記錄。在 Advanced Logging 模組安裝完成時即預先定義了一個 %COMPUTERNAME%-Server 的記錄檔,當然我們也可以自己建立記錄檔,例如我們可以在預設網站中建立一個新的記錄檔(在 Advanced Logging 管理功能區中按右方的『Add Log Definition』):

    點擊放大

    Advanced Logging 模組的記錄檔分為伺服器(server)以及網站(site)兩種記錄檔,並且放在同一個資料夾(預設是%SYSTEMDRIVE%\Inetpub\logs\AdvancedLogs),Advanced Logging 會自動為每一個不同的網站建立子目錄,並且以檔名加上時間戳記的方式產生記錄檔,因此管理人員無須擔心檔案可能的衝突問題。

    在編輯的介面中,Base file name 代表要取的檔案字首,Advanced Logging 會將檔案名稱設定為 %BASE_FILE_NAME%_D%DATE_STR%.log 的方式儲存,其中 %BASE_FILE_NAME% 即為在 Base file name 設定的名稱,而 %DATE_STR% 會被設為年月日加上毫秒(UTC 時間)的檔案名稱。而 Publish Real-time Event 則是設定要啟用由 IIS 模組所回報的即時事件記錄;Log Rollover 則是設定產生新記錄檔的週期; Selected Fields 為要在記錄檔中儲存的欄位,在 Advanced Logging 中包含了數十種欄位,也可以由管理人員自訂欄位。

    例如我們利用下面的設定,建立一個新的記錄檔:

    點擊放大

    接著隨意瀏覽任何一個網頁,此時 Advanced Logging 會依照管理人員所設定的欄位值,將記錄寫入記錄檔中(若無法取得記錄的會用”-“來代替):

    點擊放大

    若管理人員認為目前 Advanced Logging 記錄的欄位不夠時,還可以在 Advanced Logging 中加入自己的欄位,只要按下右邊的『Edit Logging Fields』,即會出現編輯的對話盒:

    點擊放大

    接著按下『Add Field』,會出現新增欄位的對話盒:

    管理人員可以依照自己的需要,在基礎資料來源上新增自己的記錄資料來源。

    過濾記錄

    Advanced Logging 的另一個特別的功能,就是它可以在寫入記錄檔前先將記錄檔做過濾,依照管理人員所設的條件過濾後,將符合的寫入到記錄檔中。我們直接以上面所建立的記錄檔,加入過濾的功能:

    按下『Edit Filter』,系統會出現條件設定的對話盒,管理人員可以在這裡加入設定,例如我們設定只要是Status Code>=400的都記錄下來(400以上的是錯誤記錄),加入以後套用即可生效:

    接著,在預設的網站中只要製造出HTTP status >= 400的情況,Advanced Logging就會將資料記錄下來,但如果是HTTP 200或是300系列的就不會被記錄:

    點擊放大

    在本文的介紹中只有使用一個條件,但是 Advanced Logging 的條件過濾是使用運算樹(Expression Tree)的概念開發的,因此可以有多個條件,以及多個運算式等,例如管理人員可以定義只要記錄 HTTP 500,副檔名為 .aspx 的記錄,以管理 ASP.NET 應用程式錯誤發生的狀態。

    結語

    Advanced Logging 提供了讓管理人員很容易設定的記錄檔管理功能,可以有效的降低記錄檔的資料量,也可以降低在記錄檔中搜尋特定問題的負擔,更可以透過指定的記錄過濾,讓問題的發掘能更加的快速。

    若對 Advanced Logging的Client Logging 以及 Real-time Logging 有興趣,可參考下面兩篇文章:
    http://learn.iis.net/page.aspx/581/advanced-logging-for-iis-70---real-time-logging/
    http://learn.iis.net/page.aspx/582/advanced-logging-for-iis-70---client-logging/

    人生无处不PK
  • 相关阅读:
    简单的模板解析函数
    HTML通过事件传递参数到js 二 event
    HTML通过事件传递参数到js一
    通过this获取当前点击选项相关数据
    LeetCode 20. 有效的括号(Valid Parentheses)
    LeetCode 459. 重复的子字符串(Repeated Substring Pattern)
    LeetCode 14. 最长公共前缀(Longest Common Prefix)
    LeetCode 168. Excel表列名称(Excel Sheet Column Title)
    LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
    LeetCode 665. 非递减数列(Non-decreasing Array)
  • 原文地址:https://www.cnblogs.com/ivanyb/p/3021939.html
Copyright © 2011-2022 走看看