



David Hare, Staff Software Engineer, IBM India Software Lab Services and Solutions
Daniel Julin, WebSphere Serviceability Technical Area Lead, IBM India Software Lab
Services and Solutions
2007年4月4日, 原文はこちら(US)
トレース機能は、サーバー内部で行われた処理に関する情報を提供する IBM® WebSphere® Application Serverの一機能であり、問題の解決に役立ちます。このコラムでは、WebSphereサポートの専門家であるDavid Hareがトレース機能の動作を検討し、トレース機能を通じて実際の問題をトラブルシューティングする方法の例をいくつか示します。また、定期的に寄稿しているDaniel Julinが保守容易性の領域における最近のサポート関連の開発のニュースを提供します。
IBM WebSphere Developer Technical Journal(US)より。
各コラムのサポート情報では、WebSphere製品で使用可能な IBMテクニカル・サポートのリソース、ツール、およびその他の要素について説明します。また、IBMサポートの技術を更に強化できるテクニックや新しい概念についても説明します。
このスペースを定期的に使用してWebSphereサポート分野の新しいリソースや概念を読者にお伝えしていこうと考えていますが、今回は注目すべき新しい記事をいくつかご紹介します。
-
IBM Support Assistantに待望のフィックス・パック 3.0.2がリリースされました。このリリースにより、組み込みの更新マネージャー機能を使用して新しい製品プラグインやツールを検索/ダウンロードする速度が劇的に向上します。多数の更新が提供されていても、「更新」パネルで情報を最新表示したり、更新サイトから情報を取り出したりするのに時間がかかりません。この新しいリリースを入手するには、IBM Support Assistant自体の更新マネージャーを使用して、「使用可能なプラグインの更新(Available Plug-ins Updates)」タブでそれがないかどうかを調べます。または、メインのIBM Support Assistant Webサイト(US)から、IBM Support Assistantの完全な新規インストールをダウンロードすることもできます。
-
新しいバージョンのIBM Guided Activity Assistant(バージョン 3.0.4)もリリースされました。このバージョンには、ユーザー・インターフェースの使いやすさに関する重要な拡張機能がいくつか組み込まれています。IBM Guided Activity Assistant は、さまざまな問題を診断するのに役立つ新しいコンテンツ・トピックを引き続き提供します。詳しくは、IBM Support Assistant Forum(US)を参照してください。IBM Guided Activity Assistantおよびその他のツールの更新をIBM Support Assistantですべて入手するには、IBM Support Assistantの更新マネージャーを使用します。
-
WebSphereファミリー製品の技術情報の「特集記事(Featured Documents)」のいくつかが、最近更新されました。これらの特別な資料には、各製品のユーザーの大部分に非常に有益であるとIBMテクニカル・サポート・チームが考える情報や最近のニュースがまとめられています。念のため、これらのページに新しい情報がないかどうかを、定期的に調べることをお勧めします。各製品の「特集記事(Featured Documents)」ページは、その製品のIBM Support Webサイトの表紙からアクセスできます。例えば、WebSphere Application Serverのサポート・ページ(US)にアクセスしてください。
-
WebブラウザーでWebSphere.org(US)のブックマークを作成します。WebSphere.orgは、WebSphereユーザーのグローバル・コミュニティーのホーム・ページであり、ブログ、イベント、および新製品の情報が含まれています。また、サポートの問題を専門に扱うセクション(US)も含まれています。
この辺で、本題に戻りましょう
トレースを使用すると、実行中のイベントおよびメソッドのシーケンスをWebSphere Application Serverコード・レベルで確認できます。そのため、問題の発生箇所を容易に特定して、問題を診断および解決することが可能です。WebSphere Application Serverのトレースは、java.util.loggingパッケージに基づいています。トレースの詳細レベルは、トレース・ストリングで制御されます。トレース・ストリングでは、単一のクラス・ファイルをトレースするのか、WebSphere Application Serverコード・ライブラリー全体をトレースするのか、それともそれらの間の任意のレベルでトレースするのかを指定できます。以下に例をいくつか示します。
表1. トレース詳細レベルのサンプル
| トレース・ストリング |
詳細レベル |
com.ibm.ws.management.pidwaiter=all |
PidWaiterクラスのみをトレース |
com.ibm.ws.webcontainer.*=all |
WebContainerコンポーネント全体をトレース |
ChannelFrameworkService=all |
ChannelFrameworkServiceトレース・グループをトレース |
*=all |
すべてのコンポーネントをトレース |
トレース・ストリングの指定を簡素化するために、トレース・グループは、共通のWebSphere Application Serverコード領域を一緒にバンドルします。例えば、トレース・グループ「ChannelFrameworkService」は、チャネル・フレームワーク・コンポーネント・コードと、チャネル・フレームワークと対話するランタイム・コードの両方をトレースします。それぞれのトレース・コンポーネントとグループは、製品のバージョンに基づいて定義されます。そのため、WebSphere Application Serverバージョン5.x(US)とバージョン6.x(US)では、トレース指定ストリングが異なります。
通常、WebSphere Application Serverサポート・チームは、トレース・レベルとして=allを使用することを推奨しています。ただし、=Fine、=Entry、=Debugなど、他のオプションも用意されています。パフォーマンスのオーバーヘッドが問題になる場合は、より具体的なトレース指定(単一のクラスまたはコンポーネント)を設定するか、ログ・レベルの詳細度を低く設定して、サーバーへの影響を最小限に抑えるのがよい方法です。それぞれの環境および状況のタイプに最適なトレース設定については、WebSphereサポートの専門家に問い合わせるか、オンラインMustGather文書(US)を参照してください。それぞれの使用可能なすべてのオプションと説明は、WebSphere Application Serverインフォメーション・センター(US)のログ・レベル設定に関する文書に記載されています。
重要なことですが、一部のコンポーネントでは、デバッグ出力を得るために、トレース・ストリングの設定だけではなく、カスタム・プロパティーまたはコマンド行引数も必要です(例えば、ORBコンポーネントの場合はcom.ibm.CORBA.Debug=true、JSSE(SSL)コンポーネントの場合はjavax.net.debug=true)。情報を正しく収集するために、インフォメーション・センターまたはMustGather文書の指示に従うことをお勧めします。

WebSphere Application Serverのバージョン5.xと6.xとでは、主に以下の点でトレースが異なります。
-
=enabled
WebSphere Application Server V5.xでは、トレース・ストリングはすべて=enabledで終了します。例を以下に示します。
com.ibm.ws.webservices.*=all=enabled
一方、V6.xでは、このパラメーターは除去されています。そのため、V6.xで同じトレース指定を行うときは、以下のように簡潔になります。
com.ibm.ws.webservices.*=all
=enabledを含むトレース・ストリングをV6.xで指定した場合、そのトレース・ストリングは、自動的に新しい形式に変更されます。
-
デフォルトのトレース指定
WebSphere Application Server V5.xの場合、デフォルトのトレース・ストリングは*=all=disabledです。したがって、たとえトレースが有効であっても、コンポーネントはトレースされず、trace.logは作成されません。WebSphere Application Server V5.xで実際にトレースを行うには、=enabledを1つ以上設定する必要があります。
WebSphere Application Server V6.xの場合、デフォルトのトレース・ストリングは*=infoです。SystemOut.log ファイルのロギング・レベルは、この設定で制御できます。例えば、エラーのみをログに記録する場合は*=fatalまたは*=severeを使用しますが、できるだけ詳細な情報が必要な場合は、これを*=detailに変更します。*=fineから*=allを設定すると、トレース出力がtrace.logファイルに記録されます。
WebSphere Application Serverのトレースを有効にするには、管理コンソールから、「トラブルシューティング」=>「ログおよびトレース」=> [ServerName] =>「診断トレース・サービス」を選択します。(v6.0およびそれ以降のバージョンを使用する場合、トレース・ストリングを実際に設定する場所は、「ログ詳細レベルの変更」リンクです。)

図1 診断トレース・サービス

図2 ログ詳細レベルの変更
「構成」タブの下でトレース設定を指定した場合、トレースを有効にするには、サーバーを再始動する必要があります。一方、「ランタイム」タブの下でトレース設定を指定した場合は、それがただちに有効になります(これは、サーバーの再始動を許容できない実稼働環境などのトレース環境で非常に便利です)。ただし、これは重要なことですが、「ランタイム変更も構成に保管する」ボックスがチェックされていない場合、ランタイムの設定はサーバーを再始動すると失われます。また、ランタイム・トレースでは、現在のシステム情報のみが報告されます。サーバーですでに問題が起こってしまった後では、ランタイム・トレースを有効にしても、問題の原因は記録されず、現在のアクションが失敗した理由のみが報告されます。したがって、IBMサポートでは、サーバーの始動を検討し、問題の根本原因を特定できるようにするために、トレース設定を「構成」タブの下で行うことを推奨しています。
「診断トレース・サービス」パネル(図1)では、トレース・ストリングに加えて、その他のトレース・オプションを指定することもできます(トレース・ファイル名、最大ファイル・サイズ、ヒストリー・バックアップ・ファイルの数、トレース形式など)。「基本」トレース形式は、WebSphere Application Serverサポート・チームが優先的に使用するトレース形式であり、デフォルトのトレース形式でもあります。「最大ファイル・サイズ」と「ヒストリー・ファイルの最大数」は、収集するトレース情報が折り返されたり、失われたりしないようにするために重要です。デフォルトでは、ファイル・サイズとして20MB、バックアップ・ファイルの数として1が設定されています。つまり、trace.logファイルのサイズが20MBに達すると、新しいtrace.logが作成され、直前のtrace.logはtrace_<date>.logという名前に変更されます(<date>は、トレースの最後のエントリーの日時です)。ただし、新しいtrace.logのサイズが再び20MBに達すると、前回と同様に新しいトレース・ファイルが生成されますが、それまであったtrace_<date>.logは削除されます。したがって、複雑な問題や時間を要する問題を再現するときは、「ヒストリー・ファイルの最大数」と「最大ファイル・サイズ」を十分に大きくしておくことが重要です。ヒストリー・ファイルの数として設定できる最大値は20です。WebSphere Application Serverサポート・チームは、最大ファイル・サイズを常に50MB以下に設定しています。なぜなら、ファイル・サイズが大きくなりすぎると、トレースのロードと読み取りが大変になるからです。
「診断トレース・サービス」の各設定とその説明について詳しくは、WebSphere Application Serverインフォメーション・センター(US)を参照してください。
管理コンソールを利用できない場合は、wsadminユーティリティーでトレースを有効にすることもできます。構成のトレースを有効にするには、以下のコマンドを使用します(この例では、トレース・ストリングとしてcom.ibm.ws.*=all=enabledを設定しています)。
 |
set server [$AdminConfig getid /Cell:<mycell>/Node:<mynode>/Server:<myserver>/]
set tc [$AdminConfig list TraceService $server]
$AdminConfig modify $tc {{startupTraceSpecification com.ibm.ws.*=all=enabled}}
$AdminConfig save
|
|
繰り返しますが、この設定は、サーバーを再始動してはじめて有効になります。ランタイム・トレースをwsadminで有効にするには、以下のコマンドを使用します。
 |
set ts [$AdminControl queryNames
type=TraceService,node=<mynode>,process=<myserver>,*]
$AdminControl setAttribute $ts traceSpecification com.ibm.ws.*=all=enabled
|
|
インフォメーション・センターでは、『wsadminツールでトレースを有効にする(US)』手順がより詳しく説明されています。
管理コンソールとwsadminユーティリティーが利用できない場合は、対象のサーバーのserver.xmlファイルを直接編集することにより、トレースを有効にできます。ただし、この方法が推奨されるのは、他に選択肢がない場合に限られます。この方法では、次回サーバーを始動したときにのみ設定が有効になります(ランタイム・トレース機能は利用できません)。このファイルを不適切に編集すると、サーバーを再始動できなくなる場合があります。したがって、このファイルを編集するときは、事前にバックアップを作成しておくことを強くお勧めします。また、自動同期プロセスにより、デプロイメント・マネージャーから新しいコピーがプッシュされた場合は(ネットワーク・デプロイメント構成で稼働している場合)、このserver.xmlファイルが最終的に上書きされる可能性があることを忘れないでください。編集する必要のある特定のxmlタグを以下に示します。
 |
<services xmi:type="traceservice:TraceService" xmi:id="TraceService_1149168481635"
enable="true"
startupTraceSpecification="*=info"
traceOutputType="SPECIFIED_FILE"
traceFormat="BASIC">
<traceLog xmi:id="TraceLog_1149168481635"
fileName="${SERVER_LOG_ROOT}/trace.log"
rolloverSize="20"
maxNumberOfBackupFiles="1"/>
|
|
詳しくは、『WebSphere Application Serverトレースの設定方法(US)』の技術情報を参照してください。
トレース・ヘッダー
SystemOut.logファイルおよびtrace.logファイルの上部にあるヘッダーには、ログを生成したサーバーに関する有益な情報が含まれています。
 |
************ Start Display Current Environment ************
WebSphere Platform 6.0 [ND 6.0.2.15 cf150636.04] running with process
name carterfinleyNode02Cell\carterfinleyNode01\server1 and process id
2744
Host Operating System is Windows XP, version 5.1
Java version = J2RE 1.4.2 IBM Windows 32 build cn142ifx-20061121 (ifix
112270: SR6 + 111682 + 111872 + 110979) (JIT enabled: jitc), Java
Compiler = jitc, Java VM name = Classic VM
was.install.root = C:\WebSphere60
user.install.root = C:\WebSphere60\profiles\AppSrv01
Java Home = C:\WebSphere60\java\jre
ws.ext.dirs = C:\WebSphere60/java/lib;C:\WebSphere60\profiles\AppSrv01/classes;C:\Web
Sphere60/classes;C:\WebSphere60/lib;C:\WebSphere60/installedChannels;C:
\WebSphere60/lib/ext;C:\WebSphere60/web/help;C:\WebSphere60/deploytool/
itp/plugins/com.ibm.etools.ejbdeploy/runtime
Classpath = C:\WebSphere60\profiles\AppSrv01/properties;C:\WebSphere60/properties;C
:\WebSphere60/lib/bootstrap.jar;C:\WebSphere60/lib/j2ee.jar;C:\WebSpher
e60/lib/lmproxy.jar;C:\WebSphere60/lib/urlprotocols.jar
Java Library path = C:\WebSphere60\java\bin;.;C:\WINNT\system32;
C:\WINNT;C:\WebSphere60
\bin;C:\WebSphere60\java\bin;C:\WebSphere60\java\jre\bin;C:\WebSphere51\IBM
\WebSphere_MQ\Java\lib;C:\PROGRAM FILES\THINKPAD\UTILITIES;C:\WINNT\sys
tem32;C:\WINNT;C:\WINNT\System32\Wbem;(etc...)
Current trace specification = *=info:com.ibm.ws.security.*=all
************* End Display Current Environment *************
|
|
このヘッダーは、サーバーを始動するたびにも生成されます。このヘッダーからは、プロセスIDとともに、厳密なWebSphere Application ServerのレベルとJavaのバージョン、セル名、ノード名、サーバー名を知ることができます。
さらに、クラスパスとJava libパスの内容をはじめ、WebSphere Application Serverの変数(was.install.root および user.install.root)も知ることができます。トレースの観点から言えば、ヘッダーの最も有益な部分は、現在使用しているトレース・ストリングを示す最後の行です(下記参照)。
Current trace specification = *=info:com.ibm.ws.security.*=all
実際のトレース出力の形式は、使用可能なすべてのWebSphere Application Serverトレース・ストリングで一貫しています。この形式は、インフォメーション・センター(US)で文書化されています。基本的な形式を以下に示します。
[timestamp] <threadId> <className> <eventType> <methodName>
<textmessage>
パラメーター<methodName>および<textMessage>は、両方ともオプションです。トレース出力の例を以下に示します。
 |
[2/5/07 13:13:49:457 EST] 0000000a ConfigFile > buildFileEntry() Entry
[2/5/07 13:13:49:457 EST] 0000000a ConfigFile 3 JAAS login configuration file:
C:\WebSphere60\profiles\AppSrv01/properties/wsjaas.conf singleLogInFile: false
[2/5/07 13:13:49:497 EST] 0000000a ConfigFile 3 JAAS login configuration file:
C:\WebSphere60\profiles\AppSrv01/properties/wsjaas.conf processed
[2/5/07 13:13:49:497 EST] 0000000a ConfigFile < buildFileEntry() Exit
|
|
上記のトレースの例から、以下のことがわかります。
- 時間フレームは、2007年2月5日、13:13:49(東部標準時)である。
- トレース出力には、単一のスレッド (ID 000000a) の処理が記録されている。
- 実行中のクラス名は、「ConfigFile」である。
クラス名の文字数が13文字を超えた場合は、先頭の13文字のみが表示されます。
以下に、各トレース・エントリー行を分割して、それぞれの行からわかる情報を説明します。
[2/5/07 13:13:49:457 EST] 0000000a ConfigFile > buildFileEntry() Entry
- ここでConfigFile.buildFileEntry()メソッドが実行を開始します。
[2/5/07 13:13:49:457 EST] 0000000a ConfigFile 3 JAAS login configuration
file:
C:\WebSphere60\profiles\AppSrv01/properties/wsjaas.conf singleLogInFile:
false
- buildFileEntry()コードのデバッグ・ステートメント。
[2/5/07 13:13:49:497 EST] 0000000a ConfigFile 3 JAAS login configuration
file:
C:\WebSphere60\profiles\AppSrv01/properties/wsjaas.conf processed
- buildFileEntry()コードのデバッグ・ステートメント。
[2/5/07 13:13:49:497 EST] 0000000a ConfigFile < buildFileEntry() Exit
- ConfigFile.buildFileEntry()メソッドが実行を完了して終了します。
すべてのWebSphere Application Serverコードがメソッド・エントリー、出口点、デバッグ・メッセージを出力するわけではありません。
|