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