6 診断イメージの構成とキャプチャ

WebLogic診断フレームワーク(WLDF)の診断イメージ・キャプチャ・コンポーネントを使用すると、キャプチャ時のサーバー内部の実行時状態について診断スナップショット(またはダンプ)を作成できます。キャプチャされた情報は、サーバー障害の原因の分析に役立ちます。WebLogic ServerにOracle HotSpotが構成され、Javaフライト・レコーダが有効化されている場合、診断イメージのキャプチャには、Java Mission Controlで表示できるWebLogic Server診断データが含まれます。「Oracle HotSpotと連携したJavaフライト・レコーダの使用」を参照してください。

イメージ・キャプチャの開始方法

診断イメージ・キャプチャ・コンポーネントは、問題の診断に使用する主要なサーバーの状態についての一般的なソースを収集し、その状態を単一のファイルまたは診断イメージにパッケージします。WebLogic管理コンソールまたはWLSTコマンドを使用して、サーバーのイメージ・キャプチャを開始できます。

診断イメージ・キャプチャは、以下のいずれかによって開始されます。

  • 構成されたポリシー。「アクションの構成」を参照してください。

  • WebLogic Server管理コンソールでユーザーが開始したリクエスト(および、サードパーティの診断ツールから開始されたリクエスト)。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプ診断イメージの構成とキャプチャに関する項を参照してください。

  • JMXによるAPIの直接呼出し。例6-1を参照してください。

  • WLSTコマンド

診断イメージ・キャプチャの構成

診断イメージのキャプチャを開始する際に、イメージのキャプチャ先の場所、WLDFの診断ボリューム、障害発生中にイメージをキャプチャする頻度など、キャプチャの詳細を構成できます。

診断イメージ・キャプチャは、主に障害発生後の解析ツールとして利用するものなので、どのような情報をキャプチャするかについては限られた権限しか与えられていません。診断イメージ・キャプチャで指定可能な構成オプションは次のとおりです。

  • イメージの宛先

  • デフォルトの宛先とは別の宛先(指定したキャプチャの場合)

  • 障害発生から回復までにイメージがキャプチャされる頻度を設定するロックアウト(タイムアウト)期間。

  • Javaフライト・レコーダ・ファイルでキャプチャされるWebLogic Serverイベント情報のボリュームを決定するWLDF診断ボリューム。

他のWLDFコンポーネントと同様に、診断イメージ・キャプチャは、WebLogic Server管理コンソール(Oracle WebLogic Server管理コンソール・オンライン・ヘルプ診断イメージの構成とキャプチャに関する項を参照)やWebLogic Scripting Tool (WLST)を使用して、またはプログラムで構成できます。

次の例に示す簡単なポリシー式は、JVMRuntimeMBeanHeapFreePercent属性の値が20未満のときにtrueを返します。

wls.runtime.serverRuntime.JVMRuntime.heapFreePercent < 20

「スケジュール済ポリシーの構成」および「イメージ・アクションの構成」を参照してください。また、Oracle WebLogic Server管理コンソール・オンライン・ヘルプポリシーとアクションの構成に関する項を参照してください。

WLDF診断ボリュームの構成

WebLogic ServerにOracle HotSpotが構成され、Javaフライト・レコーダが有効化されている場合、診断イメージのキャプチャでJavaフライト・レコーダ・データも自動的にキャプチャされます。このデータは、診断イメージのキャプチャから抽出され、Java Mission Controlで表示できます。Javaフライト・レコーダが有効化されていない場合、またはWebLogic Serverに別のJVMが構成されている場合、診断イメージのキャプチャでJavaフライト・レコーダ・データは抽出されません。

ノート:

WebLogic ServerにHotSpotが構成されている場合、デフォルトでは、Javaフライト・レコーダは無効です。有効化方法の詳細は、「Oracle HotSpotでのJavaフライト・レコーダの使用」を参照してください。

キャプチャされるJavaフライト・レコーダ・データのボリュームは、WebLogic Server管理コンソールから構成できます。次の設定を指定できます。

ボリューム設定 説明

Off

Javaフライト・レコーダ診断イメージでのデータの収集を無効化します。

Low

デフォルトで有効です。収集されるデータの詳細は、「Lowボリューム設定」を参照してください

Medium

中程度の量のデータをキャプチャします。「Mediumボリューム設定」を参照してください。

High

詳細なデータをキャプチャします。「Highボリューム設定」を参照してください。

ノート:

診断ボリューム設定を使用して収集される診断データの対象となる特定イベント・セットは、WebLogic Serverの今後のリリースの変更に準拠します。

診断ボリュームの設定方法の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプWLDF診断ボリュームの構成に関する項を参照してください。WLSTを使用した例は、「例: WLDF診断ボリュームの設定」を参照してください。

Lowボリューム設定

デフォルトでは、Low診断ボリューム設定が有効化されています。この設定では、基本情報が生成およびキャプチャされ、「緊急」、「アラート」または「クリティカル」レベルのログ・メッセージが記録されます。

WebLogic Serverの現在のリリースのLow設定では、次のイベントがキャプチャされます。

ThrottleInformation
WLDF Logging Snapshot
WLDF LogRecord Snapshot
WLDF WLLogRecord Snapshot
Connector Activate Endpoint
Connector Deactivate Endpoint
Connector Inbound Transaction Rollback
Connector Outbound Connection Closed
Connector Outbound Connection Error
Connector Outbound Destroy Connection
Connector Outbound Register Resource
Connector Outbound Release Connection
Connector Outbound Reserve Connection
Connector Outbound Transaction Rollback
Connector Outbound Unregister Resource
Deployment Complete 
Deployment Do Cancel
Deployment Do Prepare
Deployment Operation
EJB Business Method Invoke
EJB Business Method Post Invoke
EJB Business Method Pre Invoke
JDBC Connection Rollback
JDBC Statement Execute
JDBC Statement Execute Begin
JDBC Transaction Rollback
Servlet Invocation
Servlet Request Run
Servlet Request Run Begin
Web Application Load
Web Application Unload
Webservices JAXRPC Client Request
Webservices JAXRPC Client Response
Webservices JAXRPC Dispatch
Webservices JAXRPC Request
Webservices JAXRPC Response
Webservices JAXWS Endpoint
Webservices JAXWS Request
Webservices JAXWS Resource
Mediumボリューム設定

Medium診断ボリューム設定では、追加情報がキャプチャされ、「エラー」レベル以上のメッセージが記録されます。たとえば、MediumおよびHighボリューム設定では、ユーザーIDがキャプチャされます(これらがキャプチャされると、Low設定では発生しないパフォーマンスのオーバーヘッドが発生します)。

WebLogic Serverの現在のリリースのMedium設定では、Low設定でキャプチャされるイベントに加えて、次のイベントがキャプチャされます。

Connector Inbound Transaction Commit
Connector Inbound Transaction Start
Connector Outbound Transaction Commit
Connector Outbound Transaction Start
EJB Home Create
EJB Home Remove
EJB PoolManager Create
EJB Pool Manager Post Invoke
EJB Pool Manager Pre Invoke
JDBC Connection Close
JDBC Connection Commit
JDBC Connection Create Statement
JDBC Connection Get Vendor Connection
JDBC Connection Prepare
JDBC Connection Release
JDBC Connection Reserve
JDBC Data Source Get Connection
JDBC Driver Connect
JDBC Statement Creation
Servlet Execute
Servlet Request Dispatch
Servlet Request
Servlet Filter
Servlet Async Action
Servlet Context Execute
Servlet Response Write Headers
Servlet Response Send
Servlet Stale Resource
Servlet Check Access
JMS BE Consumer Log
Highボリューム設定

High診断ボリューム設定では、詳細情報がキャプチャされ、「エラー」レベル以上のメッセージが記録されます。High設定ではスタック・トレースもキャプチャされますが、スタック・トレースにより値が追加されるイベントについてのみです(たとえば、アプリケーション・コードを通常表示できるスタック・トレースは生成されますが、内部コードのみ表示するスタック・トレースおよびまったく変化しないスタック・トレースは生成されません)。

WebLogic Serverの現在のリリースのHigh設定では、Medium設定でキャプチャされるイベントに加えて、次のイベントがキャプチャされます。

EJB Database Access
EJB Business Method Post Invoke Cleanup
EJB Pool Manager Remove
EJB Replicated Session Manager
EJB Timer Manager
JDBC Transaction Commit
JDBC Transaction End
JDBC Transaction Get XA Resource
JDBC Transaction Is Same RM
JDBC Transaction Prepare
JDBC Transaction Start
JTA Transaction Commit
JTA Transaction End
JTA Transaction Prepared
JTA Transaction Prepare
JTA Transaction Start
Servlet Request Overload
Servlet Request Cancel
Servlet Context Handle Throwable

イメージ・キャプチャ生成用のWLSTコマンド

例6-1に、イメージ・キャプチャを生成するためのWLSTコマンドの例を示します。

例6-1 診断イメージを生成するためのWLSTコマンドのサンプル

url='t3://localhost:7001'
username='system'
password='password'
server='myserver'
timeout=120
connect(username, password, url)
serverRuntime()
cd('WLDFRuntime/WLDFRuntime/WLDFImageRuntime/Image')
argTypes = jarray.array(['java.lang.Integer'],java.lang.String)
argValues = jarray.array([timeout],java.lang.Object)
invoke('captureImage', argValues, argTypes)

サーバーの構成における診断イメージ・キャプチャの永続化

診断イメージ・キャプチャの構成は、ドメインのconfig.xmlファイルに保持されます。

例6-2に示すように、config.xmlファイル内では、イメージ・キャプチャはサーバーの<server>要素の<server-diagnostic-config>下位要素の配下に記述されます。

例6-2 診断イメージ・キャプチャの構成のサンプル

<domain>
  <!-- Other domain configuration elements -->
  <server>
    <name>myserver</name>
    <server-diagnostic-config>
      <image-dir>logs\diagnostic_images</image-dir>
      <image-timeout>2</image-timeout>
    </server-diagnostic-config>
    <!-- Other configuration details for this server -->
  </server>
  <!-- Other server configurations in this domain-->
</domain>

ノート:

config.xmlファイルは直接編集しないことをお薦めします。

キャプチャされたイメージ・ファイルの内容

診断イメージ・キャプチャ・コンポーネントは、様々なサーバー・サブシステムによって生成されたイメージをキャプチャおよび結合して、単一の.zipファイルにします。サーバー状態の最も一般的な情報をキャプチャするだけでなく、このコンポーネントは、たとえばJMS、JDBC、EJB、およびJNDIサブシステムによって生成されたイメージなど、すべてのサーバー・サブシステムからイメージをキャプチャします。

診断イメージ・キャプチャでは、以下のようなサーバーの状態の最も一般的な情報がキャプチャされます。

  • 構成

  • ログ・キャッシュの状態

  • Java仮想マシン(JVM)

  • ワーク・マネージャの状態

  • JNDIの状態

  • 最近収集されたデータ

WebLogic ServerにOracle HotSpotが構成され、Javaフライト・レコーダが有効化されている場合、診断イメージのキャプチャには、Java Mission Controlで表示できるJavaフライト・レコーダ・イメージFlightRecording.jfrが含まれます。Javaフライト・レコーダ・イメージの内容には、Javaフライト・レコーダが元の使用可能なすべてのデータが含まれています。WLDFにより生成されるデータの量は、診断ボリュームの設定によって決まります。Javaフライト・レコーダを有効にすると、JVMによりデータが常に提供されます。オプションで、WebLogic Serverが提供するデータを含めることができます。Oracle Dynamic Monitoring System (DMS)など、Oracleの追加コンポーネントが元のデータもJavaフライト・レコーダ・イメージに含めることができます。

ノート:

次に注意してください:

  • 診断イメージは、重大な障害を診断するためにサーバー・レベルの状態ダンプとして利用できる、サイズの大きなアーティファクトです。診断イメージは、構造化されたフォーマットで重要なデータを大量にキャプチャできるので、サポート部門のスタッフによる問題の解析に役立てることができます。

  • DMSなどのWebLogic Server環境内の非WebLogicイベント・プロデューサで、データを記録するようにJavaフライト・レコーダが構成されている場合、WLDF診断ボリュームの設定がOffでも、WLDF診断イメージ・キャプチャには、記録されたデータを含むJavaフライト・レコーダ・イメージ・ファイルが含まれます。

  • WebLogic ServerにHotSpotが構成されている場合、Javaフライト・レコーダはデフォルトでは有効化されていません。有効化方法の詳細は、「Oracle HotSpotでのJavaフライト・レコーダの使用」を参照してください。

診断イメージ・キャプチャ・ファイルに含まれるデータ

各イメージは、サーバー全体で1つのファイルとしてキャプチャされます。デフォルトの場所はSERVER_NAME\logs\diagnostic_imagesです。各イメージ・インスタンスには、次のように一意の名前が付けられます。

    diagnostic_image_DOMAIN_SERVER_YYYY_MM_DD_HH_MM_SS.zip

ファイルには、少なくとも以下の情報が収められています。

  • 診断イメージの作成日および作成時間

  • キャプチャリクエストのソース

  • 診断イメージに含まれる各イメージ・ソースの名前と処理にかかった時間

  • JVMおよびOS情報(取得可能な場合)

  • コマンド・ライン引数(使用可能な場合)

  • WebLogic Serverのバージョン(パッチおよびビルド番号情報を含む)

「Javaフライト・レコーダの診断イメージ・キャプチャの構成」で説明されているように、WLDFにOracle HotSpotが構成されている場合、イメージには、Javaフライト・レコーダ・ファイルのFlightRecording.jfrも含まれます。「診断イメージ・キャプチャのダウンロード用のWLSTオンライン・コマンド」で説明されているように、JFRファイルを抽出し、Java Mission Controlで表示できます。「Javaフライト・レコーダ・データの分析」を参照してください。

図6-1はイメージ・ファイルの内容を示します。この.zipファイル内のほとんどのファイルは、テキスト・エディタで開いて内容を確認できます。

図6-1 イメージ・ファイルの内容

図6-1の説明が続きます
「図6-1 イメージ・ファイルの内容」の説明

診断イメージ・キャプチャのダウンロード用のWLSTオンライン・コマンド

WLSTオンラインでは、WLSTが接続されているサーバーから診断イメージのキャプチャをダウンロードするための次のコマンドが提供されます。

表6-1 イメージ・キャプチャのダウンロード用のWLSTコマンド

コマンド サマリー
captureAndSaveDiagnosticImage

診断イメージをキャプチャし、ローカルにダウンロードします。

getAvailableCapturedImages

サーバーで構成されているイメージ保存先ディレクトリ内に作成された診断イメージのリストを返します。

saveDiagnosticImageCaptureFile

指定した診断イメージのキャプチャ・ファイルをダウンロードします。

saveDiagnosticImageCaptureEntryFile

診断イメージ・キャプチャ内の特定のエントリをダウンロードします。Java Mission Controlで表示するJavaフライト・レコーダ診断データを取得するときにこのコマンドが特に役立ちます。

これらのコマンドの詳細および使用例は、WebLogic ServerのWLSTコマンドのリファレンス診断コマンドに関する項を参照してください。診断イメージのリストを戻し、その中のJFRファイルを取得するWLSTスクリプトの例は、「WebLogic Scripting Toolのサンプル」を参照してください。