WebSphere Application Server v6中的问题诊断以及日志策略
WebSphere Application Server 是一個基于 Java 的 Web 應用程序服務器,它構建在開放標準的基礎之上,能幫助您部署與管理從簡單的 Web 站點到強大的電子商務解決方案的諸多應用程序。它遵循 J2EE 并為 Java 組件、XML 和 Web 服務提供了一個可移植的 Web 部署平臺,這個平臺能夠與數據庫交互并提供動態 Web 內容。
隨著WebSphere Application Server產品在中間市場的份額不斷增加,使用WebSphere Application Server作為IT基礎產品的企業越來越多,作為我們企業的IT部門,很重要的一部分工作就是管理WebSphere Application Server。由于業務系統的復雜性,以及IT系統的龐大等多種原因,我們的系統不可避免的會出現這樣那樣的問題,要定定位和解決這些問題,WebSphere Application Server的日志將起了很關鍵作用。怎么管理以及查看這些日志呢?
本文作者所一直從事WebSphere Application Server的相關服務工作,積累了許多WebSphere Application Server的管理經驗。我們希望能夠通過一系列的文章與讀者分享這些經驗想,幫助您更好管理好你的WebSphere Application Server。
本文將從問題診斷入手,在解決一系列具體問題的過程中,介紹配置日志的策略以及具體參數的用法,為您提供診斷問題的途經以及指定日志策略的方式和方法。
問題診斷的方法
在我們基于J2EE的應用程序中,問題的出現可能在各個相關的環節出現。所以首先要明確問題是發生在哪個組建上的,我們可以通過測試單個組件,檢查他們成功或者失敗來把問題進行一個隔離。從而分析相關日志來定位問題。下圖是一些常用的測試方法以及相關日志的位置。
?
?
當我們的系統出現不能訪問現象時,我們一般按照一下步驟進行分析:
1.使用瀏覽器通過80端口訪問應用(例如:http://localhost/myWeb/)
2.使用瀏覽器通過9080(根據實際端口而定)端口訪問應用(例如:http://localhost:9080/myWeb)如果訪問正常,說明HTTP server的請求沒有正常轉發,這時候通過http://localhost來驗證HTTP 服務器是否正常啟動,如果正常說明HTTP server 運行正常,此時請檢查http_plugin.log查看插件日志,并且查看HTTP server 的配置文件httpd.conf,查找WebSpherePluginConfig 所加載的plugin-cfg.xml文件是否正確。
3.如果通過9080(根據實際端口而定)端口不能訪問應用程序,可以通過http://localhost:9080/snoop 驗證應用服務器是否存活。如存活則如圖:
?
?
一般說明應用程序存在問題,查看分析相關日志:System.Out.log 、SystemErr.log、activity.log定位應用程序引起的問題。
日志介紹
System.Out.log 、SystemErr.log 屬于JVM 日志,。WebSphere Application Server 寫格式化的消息到 System.out日志。另外,應用程序和其他代碼可以寫入這些日志,通過print() 和 println() 方法實現。有些開發工具箱(Developer Kit)內置如 Throwable 類的 printStackTrace() 方法也可以寫入這些日志。通常,System.out 日志用于監控應用程序服務器的運行是否正常。System.out 日志可用于問題確定,但建議改為使用 IBM 服務日志和日志分析器的高級能力。System.err 日志包含異常堆棧跟蹤信息,這在執行問題分析時很有用。
因為每個應用程序服務器都代表 JVM,所以每個應用程序服務器和它的所有應用程序都有一組 JVM 日志,缺省情況下該日志位于 installation_root/profiles/profile_name/logs/server_name 目錄。在 WebSphere Application Server Network Deployment 配置的情況下,也為 Deployment Manager 和每個節點管理器創建 JVM 日志,因為它們也代表 JVM。
activity.log為IBM 日志,應用程序服務器從各種 WebSphere Application Server 組件的活動創建服務或活動日志文件。服務或活動日志文件(activity.log)是二進制文件,它位于 install_root 的 logs 目錄中,我們可以使用日志分析器用于查看服務或活動日志文件。
查看 JVM 日志
JVM 日志是作為純文本文件寫的。因此,查看這些日志沒有特殊的要求。它們位于 installation_directory/profiles/profile_name/logs/server_name 目錄中,并在缺省情況下命名為 SystemOut.log 和 SystemErr.log。
有兩種技術可用于查看應用程序服務器的 JVM 日志。
l???????? 使用管理控制臺。它支持從遠程機器查看 JVM 日志。
l???????? 使用存儲日志的機器上的文本編輯器。
此任務的步驟
1.從管理控制臺查看 JVM 日志。
啟動管理控制臺。
在控制臺導航樹中單擊故障診斷 > 日志和跟蹤。要查看特定服務器的日志,單擊服務器名以選擇它,然后單擊 JVM 日志。
選擇運行時選項卡。
單擊與您要查看的日志相應的查看。
2.在服務器硬盤查看JVM 日志。
轉至存儲日志的機器。
在文本編輯器中打開文件或將文件拖放到編輯和查看程序中。
日志格式:
根據 JVM 日志配置的不同,格式化的消息可以用基本或高級格式寫入 JVM 日志。
消息格式 格式化的消息可以使用這兩種格式中的一種寫入 JVM 日志:
基本格式 這是 WebSphere Application Server 的較早版本中使用的格式。
高級格式 如果可能,則通過添加有關事件的信息來擴展基本格式。
下面是一些日志常用格式,可以幫助我們更好的查看日志,可能找到的采用這些格式的各種字段如下:
TimeStamp
時間戳記是使用其被格式化所處于的進程語言環境格式化的。它包含標準日期(例如,YYMMDD),以毫秒為精度的 24 小時時間和時區。
ThreadId
從發出消息的線程的散列代碼生成的 8 個字符的十六進制值。
ThreadName
發出消息或跟蹤事件的 Java 線程名。
ShortName
發出消息或跟蹤事件的記錄組件的縮寫名稱。這通常是 WebSphere Application Server 內部組件的類名,但也可以是一些用戶應用程序的其他標識。
LongName
發出消息或跟蹤事件的記錄組件的全名。這通常是 WebSphere Application Server 內部組件的標準類名,但也可以是一些用戶應用程序的其他標識。
EventType
表明消息或跟蹤事件類型的一個字符字段。消息類型是大寫的。可能值包括:
F
致命消息。
E
錯誤消息。
W
警告消息。
A
審計消息。
I
參考消息。
C
配置消息。
D
詳細信息消息。
O
通過用戶應用程序或內部組件直接寫入 System.out 的消息。
R
通過用戶應用程序或內部組件直接寫入 System.err 的消息。
Z
表明不可識別的類型的占位符。
類名
發出消息或跟蹤事件的類。
方法名稱
發出消息或跟蹤事件的方法。
組織
擁有發出消息或跟蹤事件的應用程序的組織。
產品
發出消息或跟蹤事件的產品。
組件
發出消息或跟蹤事件的產品內的組件。
基本格式
以基本格式顯示的消息事件使用下列格式。符號 <name> 表明將總是在基本格式消息中出現的必需字段。符號 [name] 表明將被包括的可選的或有條件的字段,如果可以確定它們的話。
?
<timestamp><threadId><shortName><eventType>[className][methodName]<message>
高級格式
以高級格式顯示的消息事件使用下列格式。表示法 <name> 用于表明將總是以消息條目的高級格式出現的必需字段。表示法 [name] 用于表明將被包括的可選的或有條件的字段(如果可以確定它們的話)。
<timestamp><threadId><eventType><UOW><source=longName>[className][methodName]<Organization><Product><Component>[thread=threadName]
<message>
?
配置 JVM 日志
使用管理控制臺配置應用程序服務器的 JVM 日志。直到下一次重新啟動應用程序服務器,才應用為了運行應用程序服務器而對 JVM 日志進行的配置更改。
此任務的步驟
啟動管理控制臺
單擊故障診斷 > 記錄和跟蹤,然后單擊服務器 > JVM 日志。
選擇“配置”選項卡。
滾動通過面板以顯示要配置的日志的屬性。
更改相應的配置屬性并單擊應用。
保存您的配置更改。
Java 虛擬機(JVM)日志設置
使用此頁面查看和修改 Java 虛擬機(JVM)System.out 和 System.err 日志的設置。
要查看此管理控制臺頁面,單擊故障診斷 > 日志和跟蹤 > server name > JVM 日志。
查看和修改此受管進程的 Java 虛擬機(JVM)System.out 和 System.err 日志的設置。通過將 JVM 的 System.out 和 System.err 流重定向到獨立日志文件來創建 JVM 日志。System.out 日志用于監控運行應用程序服務器的運行狀況。System.err 日志包含執行問題分析時有用的異常堆棧跟蹤信息。每個應用程序服務器及其所有應用程序有一組 JVM 日志。還為 Deployment Manager 和每個節點管理器創建 JVM 日志。“配置”面板上的更改將在重新啟動服務器時應用。“運行時”面板上的更改將立即應用。
“配置”選項卡
文件名
指定此頁面中描述的某個日志文件的名稱。
第一個文件名字段指定 System.out 日志的名稱。第二個文件名字段指定 System.err 文件的名稱。
按下“運行時”選項卡上的查看按鈕查看所選日志文件的內容。
為 System.out 日志或 System.err 日志指定的文件名必須具有以下某個值:
文件名
文件系統中的文件的名稱。建議您使用標準文件名。如果該文件名不是標準文件名,則認為它相對于服務器的當前工作目錄。每個日志必須配置一個專用文件。例如,我們無法將 System.out 和 System.err 重定向到同一物理文件。
如果包含文件的目錄已經存在,則正在運行的服務器所使用的用戶標識需要該目錄的讀/寫訪問權限。如果該目錄不存在,將會用適當的許可權創建它。正在運行的服務器所使用的用戶標識必須有創建該目錄的權限。
控制臺
這是用于將流重定向到關聯進程流的特殊文件名。如果為 System.out 指定了此值,則文件重定向到 stdout。如果為 System.err 指定了此值,則文件重定向到 stderr。
無
廢棄寫入流的所有數據。指定無等于將流重定向到 UNIX 系統上的 dev/null。
filename 的缺省路徑是變量 SERVER_LOG_ROOT 的值。要查看 SERVER_LOG_ROOT 變量的值:
1.在管理控制臺上,選擇環境 > WebSphere 變量
2.單擊服務器單選按鈕,然后單擊應用。在顯示的列表中出現 SERVER_LOG_ROOT 變量的值。
要更改 SERVER_LOG_ROOT 的值:
1.選擇 SERVER_LOG_ROOT
2.在值字段中輸入新的路徑
3.單擊“應用”
4.保存此配置。您必須重新啟動服務器以使更改生效。
當然我們還可以以將 ${SERVER_LOG_ROOT}/和 ${SERVER_LOG_ROOT}/SystemErr.log 文件的位置和名稱更改為任何其他絕對路徑和文件名(例如,/tmp/myLogfile.log)。
文件格式
指定用于保存 System.out 文件的格式。
日志文件滾動(保留舊的日志文件生成新的日志文件)
應用服務器有日志自管理功能,通過使用這一組配置屬性將 System.out 或 System.err 日志文件配置為自我管理。
自我管理日志文件將消息寫入文件,直到達到時間或大小條件。當達到指定時間或文件達到指定大小時,日志文件將滾動(包括關閉文件并重命名保存的文件),同時記錄將臨時掛起。新保存的文件名是原始文件名加上表明文件重命名時間的時間戳記限定符。一旦完成重命名,則重新打開具有原始名稱的新的空日志文件,并恢復記錄。雖然日志文件滾動后一條消息可能會分割在保存的文件和當前文件中,但全部消息都將保留。
如果關聯流重定向到文件,則僅可以將一個日志配置為自我管理。
文件大小
單擊日志文件的此屬性以讓它根據其文件大小管理它自己。當文件達到最大大小字段中指定的大小時,發生自動滾動。
最大大小
指定文件的最大大小(以兆字節為單位)。當文件達到此大小時,它就滾動。
此屬性僅當您單擊“文件大小”后才有效。
?
時間
單擊日志文件的此屬性以讓它根據一天中的時間管理它自己。文件在啟動時間字段中指定的時間滾動。
啟動時間
指定應用程序服務器重新啟動后第一次啟動周期滾動算法的時間,即,一天中的幾點(從 1 到 24)。算法在應用程序服務器啟動時裝入。一旦滾動算法在啟動時間字段指定的鐘點啟動后,它將每隔一定的時間(重復時間字段指定的小時數)滾動文件。此滾動模式將繼續使用不作調整,直到應用程序服務器停止。
注:滾動總是在一天中指定鐘點開始時發生。一天的第一個小一天的第一個小時(自 00:00:00(午夜)起)是 1 點,而一天的最后一個小時(自 23:00:00 起)是 24 點。因此,如果您希望日志文件在午夜滾動,則將啟動時間設置為 1。
重復時間
指定隔多少小時(從 1 到 24)發生周期滾動。
重復時間
指定每隔多少小時日志文件滾動一次。有效值范圍是從 1 到 24。
配置日志文件按時間、按大小或按時間和大小滾動。單擊文件大小和時間以在首次匹配條件時滾動文件。例如,如果重復時間字段是 5 小時,而最大文件大小是 2 MB,則文件將每 5 小時滾動一次,除非時間間隔未到而文件大小已達 2 MB。按文件大小滾動后,文件將繼續按時間間隔滾動。
歷史日志文件的最大大小
指定要保存的歷史(已滾動)文件數。流將寫入當前文件,直到它滾動。滾動時,關閉當前文件,并以當前名稱加上滾動時間戳記組成的新名稱保存該文件。然后流將以原始名稱重新打開一個新文件以繼續寫入。歷史文件數從零增長到最大歷史文件數字段的值。下一次滾動刪除最舊的歷史文件。
已安裝應用程序的輸出
指定是否記錄和格式化應用程序代碼發出的 System.out 或 System.err 打印語句。
顯示應用程序打印語句
單擊此字段以顯示應用程序使用 print 和 println 流方法寫入流的消息。總是出現 WebSphere Application Server 系統消息。
格式化打印語句
單擊此字段以格式化應用程序打印語句(如 WebSphere Application Server 系統消息)。
“運行時”選項卡
?
文件名
指定此頁面中描述的某個日志文件的名稱。
?
第一個文件名字段指定 System.out 日志的名稱。第二個文件名字段指定 System.err 文件的名稱。
?
按下“運行時”選項卡上的查看按鈕查看所選日志文件的內容。
?
為 System.out 日志或 System.err 日志指定的文件名必須具有以下某個值:
文件名
文件系統中的文件的名稱。建議您使用標準文件名。如果該文件名不是標準文件名,則認為它相對于服務器的當前工作目錄。每個流必須配置一個專用文件。例如,您無法將 System.out 和 System.err 重定向到同一物理文件。
如果包含文件的目錄已經存在,則正在運行的服務器所使用的用戶標識需要該目錄的讀/寫訪問權限。如果該目錄不存在,將會用適當的許可權創建它。正在運行的服務器所使用的用戶標識必須有創建該目錄的權限。
?
控制臺
這是用于將流重定向到關聯進程流的特殊文件名。如果為 System.out 指定了此值,則文件重定向到 stdout。如果為 System.err 指定了此值,則文件重定向到 stderr。
無
廢棄寫入流的所有數據。指定無等于將流重定向到 UNIX 系統上的 dev/null。
filename 的缺省路徑是變量 SERVER_LOG_ROOT 的值。要查看 SERVER_LOG_ROOT 變量的值:
1.在管理控制臺上,選擇環境 > WebSphere 變量
2.單擊服務器單選按鈕,然后單擊應用。在顯示的列表中出現 SERVER_LOG_ROOT 變量的值。
要更改 SERVER_LOG_ROOT 的值:
1.選擇 SERVER_LOG_ROOT
2.在值字段中輸入新的路徑
3.單擊“應用”
保存此配置。您必須重新啟動服務器以使更改生效。當然我們還可以以將${SERVER_LOG_ROOT}/SystemOut.log 和 ${SERVER_LOG_ROOT}/SystemErr.log 文件的位置和名稱更改為任何其他絕對路徑和文件名(例如,/tmp/myLogfile.log)。
結束語
JVM 日志對我們對問題的的分析和跟蹤是非常重要的。WebSphere Application Server 強大的日志自管理功能,使我們的日常工作更方便更簡單,學習和掌握這些功能對我們管理人員來說受益非淺。
參考資料
l???????? IBM 產品信息中信http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp
l???????? WebSphere Application Server V6 System Management and Configuration Handbook 產品紅皮書
l???????? WebSphere Application Server V6 Scalability and Performance Handbook 產品紅皮書
?
關于作者
Benson?技術顧問,負責ibm軟件培訓、技術支持、顧問工作。撰寫過java和j2ee開發方面的書籍。
轉載于:https://www.cnblogs.com/xuxu7325/archive/2007/10/31/943817.html
總結
以上是生活随笔為你收集整理的WebSphere Application Server v6中的问题诊断以及日志策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Missing you is a kin
- 下一篇: ScottGu之博客翻译-LINQ to