人人IT網

人人IT網

當前位置: 主頁 > 服務器軟件 > Websphere >

WebSphere Application Server V8.5 中的系統管理,第 3 部分: 高性能可擴展日志記錄 (HPEL)

時間:2012-11-20 00:02來源:Internet 作者:Internet 點擊:
免費下載:IBM® WebSphere® Application Server 試用版下載更多的 IBM 軟件試用版,並加入 IBM 軟件下載與技術交流群組,参與在線交流。
免費下載:IBM® WebSphere® Application Server 試用版
下載更多的 IBM 軟件試用版,並加入 IBM 軟件下載與技術交流群組,参與在線交流。

簡介

IBM WebSphere Application Server V8.5 增強了 V8.0 版本中引入的高性能可擴展日志記錄 (HPEL) 特性。顧名思義,創建 HPEL 就是为了極大地改進現有應用服務器的日志記錄和跟蹤機制,它提供了一種利用額外的字段來擴展日志和跟蹤條目的強大方式。此外,HPEL 還提供了大量易於使用的改進來處理日志和跟蹤內容。启用 HPEL 快速而又便捷,無需對您的應用程序進行任何代碼更改。

本文为考慮試用 HPEL 的管理員提供了入門指導。

在本文中,“HPEL” 是指 WebSphere Application Server V8.5 中新的日志和跟蹤系統,而 “Basic” 指的是以前的日志和跟蹤系統。


HPEL 簡介

HPEL 是面向 WebSphere Application Server 的一種新的日志、跟蹤內容存儲和訪問系統。HPEL 存儲由現有日志和跟蹤 API(尤其是 java.util.logging API)生成的日志和跟蹤內容。

HPEL 可以滿足一些常見需求:

  • 記錄和跟蹤性能

    如果您曾與 IBM 支持團隊共事過,他們可能要求您對某些組件启用跟蹤功能。這在您的生產系統上可能會引發問題,因为启用跟蹤功能會對您的應用程序的性能產生很大的影響。HPEL 日志和跟蹤功能要比 Basic 日志和跟蹤快得多,因此對應用程序的性能的影響也要小得多。在使用相同的 DayTrader 基准和 EJBContainer=fine 跟蹤規範的情況下,與 Basic 日志和跟蹤功能相比,HPEL 可以使整體的基准性能提升 33%(使用 WebSphere Application Server V8.0 測量)。

  • 日志和跟蹤條目的可擴展性

    能夠擴展日志和跟蹤記錄將是一項非常有用的功能。例如,您也許希望向每個日志和跟蹤記錄添加一個 userID 自動,以便以後按照特定 userID 值來搜索您的日志或跟蹤記錄。Basic 日志和跟蹤系統沒有提供這類機制。

  • 自動化日志/跟蹤分析

    作为一名 WebSphere Application Server 管理員,您可能需要對重要事件自動執行 SystemOut.log 和 SystemErr.log 掃描。這對於 Basic 日志和跟蹤系統來說並非易事,因为日志和跟蹤條目可能跨日志/跟蹤文件中的多個行。SystemOut.log 和 SystemErr.log 文件還會進入循環處理(這意味着,當文件達到特定大小時,會重命名它們,並將它們的長度縮短为 0),這進一步增加了自動化的复雜性。

  • 應用程序分離

    为了簡化問題診斷,您可能需要將每個應用程序的日志和跟蹤分離到單獨的文件。Basic 日志和跟蹤系統沒有提供輕松實現此操作的機制。如果您为每個應用程序創建了自己的日志文件(可能使用 Log4J),您可能會發現,將日志文件的內容與 WebSphere Application Server 日志文件關聯起來,或在查找模式時在應用程序之間關聯日志和跟蹤內容,這些將會非常繁瑣。

  • 請求跟蹤

    您可能希望將日志和跟蹤記錄集中起來組成一個單獨的服務器請求,這個請求由多個應用程序服務器線程或不同的應用程序服務器 JVM(比如用於 Web 服務請求)處理。Basic 日志和跟蹤系統沒有提供這種功能,而 HPEL 在結合使用 Cross Component Trace (XCT) 時提供了這種功能。

  • 遠程訪問日志/跟蹤

    Basic 日志和跟蹤系統提供了在管理控制台 (WebSphere Integrated Solutions Console) 中查看 SystemOut.log、SystemErr.log 或 trace.log 的各個部分的能力。HPEL 提供了一個顯著改進的用戶界面,能夠更輕松地過滤和瀏覽內容。HPEL 還提供了無需訪問操作系統即可從管理控制台導出日志和跟蹤內容的能力。HPEL 日志和跟蹤內容還可以通過一個 JMX MBean 界面或 HPEL API 進行遠程訪問。

  • 訪問 z/OS® 日志/跟蹤

    如果在 z/OS 平台上運行您的應用程序,那麼在出現問題時,應用程序開發人員就會在查看日志和跟蹤內容時感到很困難,因为他們通常對 Windows® 或 Linux® 環境更加得心應手。HPEL 使 z/OS 和其他操作系統團隊能夠通過一致的方式處理日志和跟蹤內容。

如果您曾使用過 WebSphere Application Server 的早期版本,那麼很可能比較熟悉主要的運行時日志和跟蹤文件。在分布式系統上,日志文件包括 SystemOut.log、SystemErr.log、trace.log 和 activity.log。HPEL 使用一個日志庫、一個跟蹤庫和一個可選的文本日志替換了所有這些文件。

Basic 日志和跟蹤系統在多個位置存儲日志,包括 SystemOut.log、服務日志 (activity.log) 和 trace.log(启用跟蹤功能時)。System.err 內容單獨存儲在 SystemErr.log 中,所以難以與 SystemOut.log 中存儲的內容進行關聯。跟蹤內容存儲在 trace.log 中,因此,在進行問題診斷時,在启用跟蹤後會主要查看 trace.log 日志,而未启用跟蹤時則會主要查看 SystemOut.log 日志。

與此相反,HPEL 在日志數據庫中存儲日志、System.out 和 System.err 內容,在一個跟蹤數據庫中保存跟蹤內容(参見圖 1)。

要從日志數據庫和跟蹤數據庫中查看內容,可以使用 logViewer 命令行工具。logViewer 命令提供了對庫中所有內容的訪問。它還支持實時監控(類似於運行 tail -f SystemOut.log)並支持過滤功能,因此您可以對輸出內容進行限制。

HPEL 還提供了一個文本日志(可選內容,但是默認情況下設置为启用)。該文本日志對日志數據庫的內容執行鏡像操作,但是以純文本的形式進行該操作,具有與 SystemOut.log 相同的格式。您可以單獨启用文本日志來反映跟蹤數據庫中的內容,但是出於性能方面的考慮,您應該避免對生產系統執行此操作。不管您出於什麼原因需要使用純文本日志,文本日志功能都將非常方便。


圖 1. 比較 Basic 和 HPEL 模式中存儲的內容
圖 1. 比較 Basic 和 HPEL 模式中存儲的內容

配置

從 Basic 模式切換到 HPEL 模式需要對每個服務器進行逐一操作。主要的 Troubleshooting > Logs and Trace > serverName 面板提供了一個按鈕,可以使用該按鈕將每個服務器切換到 HPEL。從 HPEL 切換回 Basic 也非常簡單,但需通過同一面板中的 Change 日志和跟蹤模式鏈接來完成。無論哪一種情況,都需要重启修改了日志和跟蹤模式的服務器,使修改生效。

管理員控制台還提供了針對日志數據庫、跟蹤數據庫和文本日志的 HPEL 配置選項,因此您可以分別为這三者指定數據保留和緩沖選項。

需要注意的是,還可以對 HPEL 進行配置,以便在您的部署管理器和節點代理流程上使用它。在節點代理流程上启用 HPEL 是一個好方法,因为它將使您能夠在部署管理器 GUI 中使用 Log Viewer 來訪問該節點上任何服務器的日志,即使這些服務器已經停止運行。


WebSphere Application Server V8.5 中的新特性

HPEL 首次出現在 WebSphere Application Server V8.0 中。初始設計包括能夠在日志和跟蹤數據庫中包含可擴展記錄,但是該功能並沒有提供给應用程序開發人員或管理員。

在 WebSphere Application Server V8.5 中,應用服務器使用這一擴展將應用程序名稱保存在日志和跟蹤記錄中,後者是在請求 Java™ EE 應用程序的過程中創建的。它還使用該功能將 Cross Component Trace requestID(在启用 Cross Component Trace 後創建)保存在日志和跟蹤記錄中。最後,V8.5 提供了一個 API 來幫助您將自己的擴展添加到日志和跟蹤記錄中。

要利用這些擴展字段來擴展 logViewer 命令行工具,使其包含 -includeExtensions 選項,從而能夠根據擴展字段的內容過滤日志和跟蹤記錄。

WebSphere Application Server V8.5 可以跟蹤 appNamerequestID 擴展,但是您可以使用 com.ibm.websphere.logging.hpel.LogRecordContext API 隨意將自己的擴展添加到日志和跟蹤條目中。

讓我們實際了解一下 HPEL 的典型應用。


使用 logViewer 命令

當您的生產應用服務器出現問題時,可能需要花很長的時間才能發現日志和跟蹤文件中最重要的內容並進行隔離。想象一下,在服務器的日志文件中,您的某個系統出現了一個錯誤。

在過去,您可以通過三種方法找到日志文件中的錯誤:

  • 手動查看每個日志,使用 grep 搜索 “E”、“W”、“Error” 或 “Exception” 等。
  • 編寫腳本執行上面的搜索。
  • 使用工具挖掘日志,找出警告、錯誤或異常。

HPEL 可以在二進制庫中有效地存儲日志和跟蹤數據,然後,您可以用 logViewer 命令行工具進行訪問、過滤和格式化。

在最簡單的情況下,您可以使用下面這個簡單的命令從 profile bin 目錄中輸出日志和跟蹤的全部內容(圖 2 中所示的輸出):

./logViewer.sh


圖 2. logViewer.sh 命令的輸出
圖 2. logViewer.sh 命令的輸出

讓我們實現一些更有趣的事情。要在日志文件中查找任何警告或錯誤消息,您可以使用下面的命令(圖 3 顯示了輸出):

./logViewer.sh -minLevel warning


圖 3. logViewer.sh 命令的輸出
圖 3. logViewer.sh 命令的輸出

請注意,在圖 3 中,服務器進行了重启,而在默認情況下,logViewer 輸出包括來自所有服務器 “實例” 的內容。重要的是,logViewer 永遠不會修改庫,它只是提供一個過滤的、格式化的視圖。

現在,讓我們進一步限制查詢,只查看上一次重启服務器後的內容。這也很容易實現,使用 -latestInstance 選項即可(圖 4 顯示了輸出):

./logViewer.sh -minLevel warning -latestInstance
圖 4. logViewer.sh 命令的輸出
圖 4. logViewer.sh 命令的輸出

您可能會在同一個 WebSphere Application Server JVM 上運行數十個應用程序,並希望查看有關 LemonadeStand 應用程序的警告和錯誤。使用 WebSphere Application Server V8.5,您就可以按照 Java EE 應用程序名稱過滤日志和跟蹤內容,並按照以下所示使用 appName 擴展(圖 5 顯示了輸出):

./logViewer.sh -minLevel warning -latestInstance -includeExtensions appName="LemonadeStand"


圖 5. logViewer.sh 命令的輸出
圖 5. logViewer.sh -minLevel warning -latestInstance -includeExtensions appName=”LemonadeStand” 命令的輸出

現在您已經在日志中找到了一個有趣的錯誤,您可能希望查看同一線程中在請求的其餘部分中發生了什麼。這一次,可以通過將 minLevel 設置为 infor 來刪除所有跟蹤記錄(圖 6 顯示了輸出):

./logViewer.sh -startDate "05/31/12 22:10:40:000 EDT" -stopDate "05/31/12 22:10:58:000 EDT" -thread 91 -minLevel info


圖 6. logViewer.sh 命令的輸出
圖 6. logViewer.sh 命令的輸出

結合使用 HPEL 和 Cross Component Trace

如果您結合使用 HPEL 和 WebSphere Application Server V8.5 中引入的 Cross Component Trace (XCT) 功能,並且您感興趣的錯誤發生在 HTTP 或 SIBus 請求期間,那麼您可以使用 requestID 來過滤日志(由 XCT 提供)。要查看 requestID,請使用 -format 高級選項重新運行前面的查詢(圖 7 顯示了輸出):

./logViewer.sh -startDate "05/31/12 22:10:40:000 EDT" -stopDate "05/31/12 22:10:58:000 EDT" -thread 91 -minLevel info -format advanced


圖 7. logViewer.sh 命令的輸出
圖 7. logViewer.sh 命令的輸出

使用高級格式顯示輸出後,您可以看到該消息的 requestID。使用高級模式查看日志也是一種從日志條目(顯示在日志/跟蹤記錄中的 ‘source’ 字段)獲得完整 logger 名稱的好方法;這在對某個特定記錄器启用更細粒度跟蹤時會派上用場。類似地,您可以在高級格式下查看記錄/跟蹤每個條目的線程的名稱。

有了發生錯誤的請求的 requestID 之後,您現在就可以查詢庫,查看同一請求中的其他日志和跟蹤條目。HPEL 將 requestID 作为擴展保存到日志和跟蹤記錄中,因此您可以使用 -includeExtensions 選項,如下所示(圖 8 顯示了輸出):

./logViewer.sh -includeExtensions requestID=AAAKLwUVkuH-AAAAAAAAAAC


圖 8. logViewer.sh 命令的輸出
圖 8. logViewer.sh 命令的輸出

共享日志和跟蹤數據

找出日志文件中的問題之後,您可能希望將 LemonadeStand 應用程序的日志發送到某個團隊成員。您可以使用 -outLog 選項將輸出以純文本形式保存到日志中:

./logViewer.sh -includeExtensions appName="LemonadeStand" -outLog /tmp/myLogs.log

或者,您可以使用 extractToNewRepository 選項將過滤後的輸出保存为一個新的 HPEL 庫,這样您的同事就可以在他們的系統上使用 logViewer 命令繼續處理數據:

./logViewer.sh -includeExtensions appName="LemonadeStand" -extractToNewRepository /mySharedDrive/myLogs

收到您的通知後,您的同事可以訪問保存在日志中的內容。为此,他們可以使用 repositoryDir 選項指定庫的位置:

./logViewer.sh -repositoryDir /mySharedDrive/myLogs


實時查看日志或跟蹤數據

在開發應用程序或進行故障排除時,實時監視日志輸出的功能通常都很有用。您可能已經察覺到問題並嘗試重現問題,或者,作为應用程序測試的一部分,您可能希望監視某個特定事件。不管是哪種情況,您都需要激活一個 shell 窗口並執行 tail -f SystemOut.log 來監視日志輸出。

HPEL 可以簡化此類任務,它使您能夠監視日志庫中的新事件,不會因为需要監視多個日志文件或擔心文件會回滾(roll over)而影響對這些文件的監視。要實現實時監視,可以使用 -monitor 選項調用 HPEL logViewer 工具:

./logViewer.sh -monitor

使用 HPEL 監視選項的一個重要優勢是它可以跨平台工作,为您監視新的日志和跟蹤事件提供一致的選項,不會受您使用的硬件或操作系統的影響。這些平台中包括 z/OS® 平台,因此可以在 z/OS 上輕松地查看或處理應用程序日志,無需具備 z/OS 系統管理員的知識或訪問日志假脫機文件。

可以結合使用監視特性和過滤選項來監視特定事件。假如您需要監視一個冗長的日志應用程序,尋找與某個特定用戶名有關的關鍵錯誤消息,用戶名包含在消息中。您可以通過下面的命令查看所有新的 severe 或 fatal 日志事件,這些事件在消息中包含了字符串 “user33”,無需執行 grep 命令或使用其他工具:

./logViewer.sh -monitor -minLevel SEVERE -message “*user33*”

您還可以結合使用多個過滤選項來進一步細化您希望顯示的日志事件。例如,您可以進一步將顯示的記錄限制为由 LemonadeStand 應用程序生成的記錄,如下所示:

./logViewer.sh -monitor -minLevel SEVERE -message “*user33*” -includeExtensions appName=”LemonadeStand”

通過結合 logViewer 工具的選項,管理員可以從 HPEL 庫直接查看所有或特定的日志記錄。LogViewer 为查看 WebSphere Application Server 日志和跟蹤數據提供了一致的、功能強大的工具,可支持任何平台。它不要求安裝任何特定的工具,也不要求管理員將日志文件复制到其工作站中。

現在您已經了解了使用 HPEL 查看實時日志數據和過滤命令行輸出有多麼簡單,接下來讓我們將了解它如何在 WebSphere Application Server 管理控制台中查看日志數據。


在管理控制台中查看或跟蹤數據

許多系統管理員經常遇到的另一個場景是需要確保對關鍵的生產應用服務器進行有限制的操作系統訪問,同時仍然允許應用程序支持團隊或開發小組訪問生產應用程序的日志。WebSphere Application Server 現在通過管理控制台提供了一個經過改善的、基於 Web 的日志查看和導出工具,可在启用 HPEL 後使用。

Basic 模式的日志和跟蹤功能僅提供了簡單的日志查看功能,而 HPEL 提供了改進的日志查看體驗。任何已授予訪問管理控制台的權限的人都可以使用 HPEL Log Viewer(不要與 logViewer 命令行工具混淆)查看 HPEL 日志和跟蹤庫數據。以 Monitor 角色訪問管理控制台的應用程序支持專家可以查看日志數據,無需對生產服務器進行 OS 級訪問或等待系統管理員为他們收集日志文件。


圖 9. 日志內容的管理控制台視圖
圖 9. 日志內容的管理控制台視圖

控制台的 Log Viewer 提供了與 logViewer 命令行工具相同的功能強大的過滤選項。要通過管理控制台查看日志和跟蹤數據,請導航到 Troubleshooting > Logs and trace 並從列表中選擇已启用 HPEL 的應用服務器,然後在 Logging and tracing 面板中選擇 View HPEL logs and trace鏈接。

如有必要,可以將完整的日志庫(甚至是過滤後的日志庫)直接從管理控制台的 Log Viewer 導出到一個 .zip 文件中,以供日後分析,只需選擇 Log Viewer 頂部的導出按鈕。您可以選擇將完整的庫或過滤後的內容導出到一個二進制 HPEL 庫中。任何與您共享該庫的人都可以使用 logViewer 命令來處理文件。您還可以通過基本或高級格式將整個庫或當前選中的內容導出到一個文本文件中。logViewer 命令行工具可以從導出的 zip 文件中讀取 HPEL 庫,無需進行解壓。


圖 10. 管理控制台導出日志對話框
圖 10. 管理控制台導出日志對話框

結束語

HPEL 利用了一種新的方法來存儲日志和跟蹤數據,以便提高性能和可擴展性。與此同時,HPEL 維持了與現有日志操作腳本的兼容性,提供了您已經熟悉的 WebSphere Application Server 日志的數據格式。新的命令行和管理控制台工具加快了日志和跟蹤數據的監視和過滤。除了提供的工具之外,工具供應商還可以利用新的 HPEL Java API,它能夠提供對 HPEL 庫的本地和遠程訪問,並以基本或高級文本格式輸出結果,甚至將它們存儲到新的 HPEL 庫中(請参閱 参考資料)。

在 WebSphere Application Server 中切換 HPEL 可在管理控制台中快速完成,並且需要重启服務器使之生效。輕松地在日志模式之間切換意味着您可以嘗試使用 HPEL,並在需要時切換回 Basic 模式。IBM 支持團隊處理 HPEL 存儲庫,不論是從管理控制台中導出,從 logViewer 命令輸出,還是僅從服務器日志目錄中壓縮生成。


頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
驗證碼:點擊我更換圖片
欄目列表
推薦內容