プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle ADFアプリケーションの管理
12c (12.1.3)
E57585-02
  目次へ移動
目次

前
 
次
 

6 診断ツール

この章では、Fusion Webアプリケーションの開発およびこのアプリケーションの問題を診断する際に使用できる診断ツールと監視ツールについて説明します。

この章の内容は次のとおりです。

6.1 監視ツールと診断ツールの概要

Oracle Fusion MiddlewareおよびADFには、アプリケーションの問題を監視および診断するために使用できるツールが用意されています。

ツールとその使用手順には、次のものが含まれています。

  • クリック履歴

  • ログ出力

  • 診断フレームワーク。

6.2 クリック履歴

クリック履歴は、ADF Facesのコンポーネントでのユーザー・アクティビティ(たとえば、ADFコマンド・ボタンをWebブラウザからクリック)で生成されるADF Facesのイベントを取得するFusion Middleware診断機能です。データは連続的に取得され、メモリー内の循環バッファに格納されます。バッファ・サイズは調整できます。診断インシデントが発生すると、バッファ内のデータが診断データの一部として自動的にディスクに書き込まれます。診断インシデントの詳細は、『Oracle Fusion Middlewareの管理』の問題の診断に関する項を参照してください。クリック履歴を構成して「クリック」イベントを取得する必要はありません。これはデフォルトで自動的に有効になります。クリック履歴データを使用して問題の診断に役立てることができます。これは、障害または問題を引き起こした最後のユーザー・アクションを判別する際に特に役に立ちます。

クリック履歴レコードは、UIコンポーネント、表示、リージョン、ユーザー、診断セッションID (DSID)およびその他の重要なアプリケーション・データに関する情報を提供します。クリック履歴は、ADF EUM (End User Monitoring)サービスを使用してデータを取得します。これには、EUMデータ専用に最適化された循環バッファがあります。データは、Javaヒープ内の単一の連続メモリー・セグメントに入れられます。Javaガベージ・コレクションへの影響は最小で、メモリー使用量は厳格に制御されます。デフォルトのバッファ・サイズの860KBで約1,500個の「クリック」イベントを保持できます。この量はインシデント分析には十分です。

6.2.1 クリック履歴の取得方法

クリック履歴はデフォルトのJRFテンプレートの一部として提供されます。Fusion Oracle MiddlewareまたはOracle ADFをインストールするとき、クリック履歴はFusion Middlewareフレームワークの一部としてインストールされます。

6.2.2 アプリケーションでクリック履歴を有効にする方法

クリック履歴はADFの一部としてインストールされます。ただし、クリック履歴メッセージの実際のロギングはADFから独立した別個のスレッドによって実行されるため、クリック履歴はADFのオーバーヘッドをあまり必要としません。

クリック履歴はアプリケーション基準でアプリケーション上で有効になります。アプリケーションのweblogic.xml構成ファイルおよびweb.xml構成ファイルにエントリを追加することによってクリック履歴に対してアプリケーションを有効にします。手順については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のRUEIおよびクリック履歴に対するアプリケーションの有効化に関する項を参照してください。

6.2.3 WebLogic Serverでクリック履歴を有効または無効にする方法

アプリケーションでクリック履歴を有効にした後、特定のWebLogicサーバー・インスタンスに対してこれを有効にできます。そのためには、oracle.clickhistory.EUMログ出力をNOTIFICATIONレベルに設定します。

WLST setLogLevelコマンドまたはEnterprise Manager Cloud Controlのサポート・ワークベンチによりロギング・レベルを設定できます。

これを有効にするためにサーバーを再起動する必要はありません。

WLSTを使用してクリック履歴を有効にするには、次のコマンドを実行します。

setLogLevel(logger='oracle.clickhistory.EUM', target='server_name', level='INFO', persist='1')

WLSTを使用してクリック履歴を無効にするには、次のコマンドを実行します。

setLogLevel(logger='oracle.clickhistory.EUM', target='server_name', level='OFF', persist='1')

Fusion Middleware Cloud Controlのサポート・ワークベンチを使用してログ・レベルを設定してクリック履歴を有効にする方法の詳細は、『Oracle Fusion Middlewareの管理』のログ・ファイルと診断データの管理に関する項を参照してください。

6.2.4 クリック履歴の容量の調整方法

クリック履歴のバッファ・サイズはlogging.xmlファイルで定義されています。デフォルト値は860KBまたは880640バイトです。WLSTのconfigureLogHandlerコマンドを使用して、バッファ・サイズを構成できます(バイト単位)。この変更を有効にするにはサーバーを再起動する必要があります。

次に例を示します。

configureLogHandler(name="apps-clickhistory-handler", propertyName="bufferSize", propertyValue="100000000", target="your_server_name")

WLSTのlistLogHandlersコマンドを使用して、既存のバッファ・サイズを検索できます。

次に例を示します。

listLogHandlers(name="apps-clickhistory-handler")

このコマンドは、バイト単位のbufferSizeなどの情報のリストを返します。

次に例を示します。

bufferSize=880640

6.2.5 クリック履歴データを明示的にダンプする方法

インシデントが発生すると、クリック履歴は自動的にデータをファイルにダンプします。ただし、WLSTのexecuteDumpコマンドを使用して、いつでもクリック履歴データにアクセスできます。

クリック履歴データを明示的にダンプするには:

executeDump(name="odl.quicktrace", args={"handlerName" : "apps-clickhistory-handler"}, server="CRMCommonServer_1")

クリック履歴の出力ファイルはQuickTraceダンプ・ファイルです。これはODLログ・ファイルと同じフォーマットです。このフォーマットは、ODL LogQuery APIおよびEnterprise Manager Cloud Controlのサポート・ワークベンチのログ問合せ機能を使用して解析できます。

クリック履歴ダンプ・ファイルのフォーマット規則は次のとおりです。

odl_quicktrace<unique ID>_i<incident ID>.app-clickhistory-handler.dmp

接尾辞は、サーバーのlogging.xmlで定義されたQuickTraceハンドラ名です。

次に例を示します。

odl_quicktrace502_i273.apps-clickhistory-handler.dmp

ダンプ・ファイルの出力例を例6-1に示します。

例6-1 クリック履歴のダンプ例

[2013-10-08T14:56:12.664-07:00] [AdminServer] [NOTIFICATION] [SOC] 
[oracle.clickhistory.EUM] [tid: 34] [userId: CASH_MANAGER] 
[ecid:a3da34f168f6c0de:-7bd21c26:14199e687e9:-8000-00000000000033d3,0]
[CH_RTY: oracle.adf.rich.Combobox ListOfValues]
[CH_CST: 1381269371002] [DSID: 0000K6PzLBrFS8G5Iz9Dif1IL7HS00000A]
[CH_CID: pt1:USma:0:MAnt2:1:pt1:Manua1:0:mrpanel1:mrbankAccountNameId]
[CH_VID: /ManualReconPage] [APP: PayablesApp]
[CH_CMP: oracle.adf.RichInputComboboxListOfValues]
[CH_CNM: Bank Account]
[CH_TYP: lovInternal
[CH_WID: 114iztpu6s_6]
[CH_RVD: /ManualReconLocalAreaFlow/ManualReconLocalAreaPF]
[CH_EID: a3da34f168f6c0de:-7bd21c26:14199e687e9:-8000-00000000000033d3]
[CH_FAM: org.apache.myfaces.trinidad.Input]

[2013-10-08T14:56:12.664-07:00] [AdminServer] [NOTIFICATION] [EOC]
[oracle.clickhistory.EUM] [tid: 34] [userId: CASH_MANAGER] 
[ecid: a3da34f168f6c0de:-7bd21c26:14199e687e9:-8000-000000000000339c,0]
[CH_CET: 1381269364245] 
[CH_CST: 1381269363617] 
[APP: PayablesApp] 
[DSID: 0000K6PzLBrFS8G5Iz9Dif1IL7HS00000A] 
[CH_TTT: 628] 
[CH_EID: a3da34f168f6c0de:-7bd21c26:14199e687e9:-8000-000000000000339c]

6.2.6 クリック履歴レコードの解釈方法

クリック履歴ダンプ・ファイルは、ログ・ファイルのフォーマットの通常のASCIIファイルです。任意のASCIIビューアを使用してその内容を表示できますが、ログ・ファイル表示ツールを使用して、これが提供する検索機能およびフォーマット機能を活用することをお薦めします。ログ・ファイルに書き込まれたクリック履歴メッセージは、ADFから独立した別個のスレッドによって記録されます。

ログ・ファイルは次の場所にあります。

${domain.home}/servers/${weblogic.Name}/logs/${weblogic.Name}-clickhistory.log

クリック履歴のログ・ファイルは、診断インシデントの一部として自動的に取得されます。クリック履歴データを含むインシデントがある場合、インシデントのreadme.txtファイルを使用して、インシデントのECID (ExecutionContext ID)、DSID (Diagnostics Session ID)、ユーザーIDおよびスレッドIDを検索できます。また、これらの診断フラグに基づいてクリック履歴レコードを問合せできます。

次の情報が記録されます。

  • リージョン/ビューID

  • コンポーネントID

  • サーバー時間

  • ネットワーク時間

  • ブラウザ・レンダリング時間

デフォルトでは、メッセージのペアはクリックごとに記録されます。最初のメッセージのメッセージIDはSOC (Start of Click)です。2番目のメッセージEOC (End of Click)は後続のクリックが発生するまで記録されません。TTT (合計時間)などの時間の詳細は2番目のメッセージでのみ検索できます。

表6-1に、クリック履歴属性およびこれに対応するADF UserActivityInfoフィールドを示します。

表6-1 クリック履歴属性のマッピング

クリック履歴属性 ADF UserActivityInfoフィールド

CH_CST

userActivityInfo.getClientStartTime()

CH_CET

userActivityInfo.getClientEndTime()

CH_VID

userActivityInfo.getViewId()

CH_WID

userActivityInfo.getWindowId()

CH_CID

eventInfo.getComponentClientId()

CH_CNM

eventInfo.getComponentDisplayName()

CH_FAM

eventInfo.getComponentFamily()

CH_CMP

eventInfo.getComponentType()

CH_RVD

eventInfo.getRegionViewId()

CH_RNM

eventInfo.getRegionViewName()

CH_RTY

eventInfo.getRendererType()

CH_TYP

eventInfo.getType()

CH_EID

userActivityInfo.getContextId()

CH_PEI

userActivityInfo.getParentContextId()

CH_TTT

合計時間 = CH_CET - CH_CST

CH_RRT

userActivityInfo.getResponseReceivedTime()

CH_PRT

userActivityInfo.getParentResponseReceivedTime()

CH_RNT

レンダリング時間 = CH_CET - CH_RRT


ログ・ファイルの内容を表示するために使用できる表示ツールの一部を次に示します。

  • Enterprise Manager Cloud Controlのサポート・ワークベンチ

    Enterprise Manager Cloud Controlのサポート・ワークベンチを使用してログ情報の表示および並替えを実行できます。

  • WLSTコマンド

    WLSTコマンドのdisplayLogを使用してレコードを表示することも可能です。

  • viなどのテキスト・エディタ。

たとえば、HTTPセッションの最近の「クリック」イベントのリストを返すためには、DSIDが一致するクリック履歴レコードをすべて検索します。

次に例を示します。

[2013-01-21T20:50:16.403-08:00] [ProcurementServer_1] [NOTIFICATION] []
[oracle.clickhistory.EUM] [tid: 44] [userId: FUSION]
[ecid: 004ox_GMXwy6aMGpIws1yf00018d000gvb,0:2:8:2:2]
[CLICK_COMPTYPE: oracle.adf.RichCommandButton] [APP: ProcurementApp#V2.0]
[DSID: 0000JlW_fz5Fw0HpIsO5yf1GzEoI000Dh3]
[CLICK_VIEWID: /adfp-portlet-bridge-container/container-view]
[CLICK_REGIONVIEWID: [/BrowseCategoryFlow/BrowseCategory,
 /BrowseCategoryMainAreaFlow/BrowseCategoryMainArea,
 /FSGenericTaskFlow/DynamicRegionContainer]] 
[CLICK_STARTTIME: 1358830216656]
[CLICK_RENDERTYPE: oracle.adf.rich.Button]
[CLICK_TYPE: action]
[CLICK_COMPCLIENTID:_jpfcpncuivr__ns1588903364_j_id__
 ctru0:fragmentRegionStatic:0:dynamicRegion1:0:pt1:Brows1:0:
 ManageCategoryHierarchyPanel:ATT1:deleteWarningYES]
[CLICK_WINDOWID: k4coiwdvi_1]
[CLICK_REGIONVIEWNAME: [jpfcpncuivr_ns1588903364_j_id
 _ctru0:fragmentRegionStatic:0:dynamicRegion1:0:pt1:Brows1, _jpfcpncuivr
 _ns1588903364_j_id_ctru0:fragmentRegionStatic:0:dynamicRegion1, _jpfcpncuivr
 _ns1588903364_j_id__ctru0:fragmentRegionStatic]]
[CLICK_COMPDISPLAYNAME: Yes]

6.2.7 クリック履歴のDMSメトリックの取得方法

DMSメトリックを検査することによって、クリック履歴のバッファ使用率および容量を確認できます。WLSTコマンドを実行してメトリックを表示できます。複数のQuickTraceハンドラが構成されている場合、apps-clickhistory-handlerという名前のハンドラを探します。

次に例を示します。

wls:/base_domain/serverConfig>  displayMetricTables('QuickTraceInfo',
 servers=['your_server'])

QuickTraceInfo

Host:   xyz.com
Name:   apps-clickhistory-handler
Parent: /oracle/odl/quicktrace
Process:        your_server:7009
ServerName:     your_server
bufferElapsed.value:    134719    seconds
bufferRecordCount.value:        1579     records
bufferUsedPercentage.value:     100       percent
oldestTimestamp.value:  2012-06-26T18:38:48.261-0700    time 

6.3 ADFログ

Oracle Fusion Middlewareには、エラー・メッセージ、警告メッセージ、サーバー情報、HTTPリクエストなどのイベントを記録するログ・ファイルが用意されています。Fusion Middlewareログ・ファイルのほとんどはOracle Diagnostic Logging (ODL)フォーマットです。Fusion Middleware ControlまたはWLSTコマンドを使用して、ログ・ファイルを検索、表示およびダウンロードできます。これらのツールを使用して、設定の構成、ファイルの場所の変更、ログ・レベルの設定、ファイル・フォーマットの設定、トレースの構成などロギングに関する様々なタスクを実行することも可能です。

Fusion Middlewareのログ・ファイルの詳細は、『Oracle Fusion Middlewareの管理』のログ・ファイルと診断データの管理に関する項を参照してください。

JDeveloperにも監視および診断の目的で使用できるADFログ出力およびLog Analyzerが用意されています。JDeveloperは、Fusion Middlewareで使用されるOracle Diagnostic Logging (ODL)形式でログ・ファイルを生成します。JDeveloperでは、Oracle Diagnostic Logging Configurationエディタを使用してログ・レベルなどの構成パラメータを設定します。構成情報はlogging.xmlファイルに格納されます。

ログ・ファイルを作成すると、Oracle Diagnostic Log AnalyzerをJDeveloper内で使用してログ・エントリを表示できます。ログ・レベル、期間、メッセージの内容などのパラメータに基づいてログ・エントリを検索および絞込みできます。

ADFログ出力の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFログ出力の使用に関する項を参照してください。

6.4 診断フレームワークを使用した問題の診断

Oracle Fusion Middlewareは、アプリケーションの問題の検出、診断および解決を支援する診断フレームワークを提供します。クリティカル・エラーが発生すると、診断フレームワークは即座に診断データを取得し、そのデータとエラーをインシデント番号と関連付けます。この番号を使用して、自動診断リポジトリ(ADR)から分析のためのデータを取得できます。

Oracle ADFでは、INCIDENT_ERRORメッセージがログに記録されると実行されるADFConfigダンプを提供します。アプリケーションの例外ハンドラでダンプを起動するコードを追加することもできます。例6-2に、ADFConfigダンプを起動するよう、例外ハンドラに追加できるサンプル・コードを示します。

例6-2 例外ハンドラでADFConfig診断ダンプを起動するサンプル・コード

IllegalArgumentException e = new IllegalArgumentException("test exception");
LoggerFactory.getFrameworkLogger().log(ODLLevel.INCIDENT_ERROR,
 "Test error message", e);

診断フレームワークの詳細は、『Oracle Fusion Middlewareの管理』を参照してください。

IBM WebSphere Application Serverで診断フレームワークを使用している場合は、追加タスクを実行する必要があります。詳細は、Oracle Fusion Middlewareサード・パーティ・アプリケーション・サーバー・ガイドを参照してください。

6.5 ADFランタイムのバージョン情報の検索

ADFランタイムJARバージョン番号を知ることは、アプリケーションの問題をデバッグして診断する際に重要な情報になることがあります。Oracleサポートがこの情報を要求する場合があります。

My Oracle Supportにはhttps://support.oracle.comからアクセスできます。

次のいくつかの方法を使用して、ADFランタイムJARのどのバージョンを使用しているかを知ることができます。

  • アプリケーション起動時に生成されるCSVファイルを取得。

  • オフライン・モードでシェル・スクリプトを使用。

  • WLSTコマンドの使用。

  • Fusion Middleware Controlを使用します。

  • インシデント発生時にダンプ・ファイルを取得。

6.5.1 アプリケーションの起動によるバージョン情報の検索方法

デプロイされたアプリケーションを起動するときに、ランタイムJARのバージョン情報が次の場所にあるCSVファイルにダンプされます。

<DomainName>/servers/<ServerName>/logs/<MyApp>-Versions.csv

次の点に注意してください。

  • oracle.adf.share.diagnostics.versionsログ出力は、アプリケーション起動時にランタイムJARバージョンの生成を制御します。JARバージョンはログ出力がlevel="FINEST"に設定されたときに生成されます。

  • 新しいWebLogicドメインでは、oracle.adf.share.diagnostics.versionsログ出力がlogging.xmlに記録されます。

  • 既存のドメインでは、oracle.adf.share.diagnostics.versionsログ出力がlogging.xmlに記録されません。Enterprise Manager Fusion Middleware ControlまたはWLSTコマンドを使用してログ出力レベルを設定してください。

6.5.2 オフライン・モードでシェル・スクリプトを使用することによるバージョン情報の検索方法

オフライン・モードでは、printJarVersions.shシェル・スクリプトを使用して、バージョン情報を出力するかまたはその情報をファイルにリダイレクトできます。

%MW_HOME%/oracle_common/common/binディレクトリで次のスクリプトを実行します。

bin$./printJarVersions.sh

出力を次のファイルにリダイレクトできます。

bin$./printJarVersions.sh  > /home/trdsouza/export-JarVersions.csv

バージョン情報は次のようなフォーマットです(トリム済)。

Jar Path,Oracle-Version,Oracle-Label,Oracle-Builder,Oracle-BuildTimestamp,
Specification-Version,Implementation-Version/ade/userYada/oracle/oracle_
common/modules/oracle.adf.model_12.1.3/adfm.jar,12.1.3.0.40.66.68,
JDEVADF_12.1.2.0.0_GENERIC_130608.2330.6668,user=userY
host=abc123456,2013-10-02 04:55:45 -0700,,

6.5.3 WLSTスクリプト・コンソールを使用してバージョン情報を検索する方法

オフライン・モードでは、WLSTのexportJarVersionsコマンドを使用してバージョン情報を検索できます。

exportJarVersions('/home/userY/export-JarVersions.csv')

オフライン・モードでは、WLSTのexportApplicationJarVersionsコマンドを使用してバージョン情報を検索できます。

exportApplicationJarVersions('MyApp','/home/userY/export-EarCrmCommon-Versions.csv')

特定のJARバージョンを検索する場合、WLSTのexportApplicationSelectedJarVersionsコマンドを使用できます。

exportApplicationSelectedJarVersions('MyApp','/home/userY/export-EarCrmCommon-Versions.csv', $ORACLE_HOME$/modules/oracle.adf.model_12.1.3/adfm.jar;$ORACLE_HOME$/modules/oracle.adf.view_12.1.3/adf-richclient-impl-12.jar')

6.5.4 Fusion Middleware Controlを使用したバージョン情報の検索方法

Enterprise Manager Fusion Middleware Controlを使用して、ADFを使用して構築されたOracle製品を監視できます。このツールを使用してランタイムJARファイルのバージョン情報を検索することも可能です。

その手順は、第3.2.2項「ADFランタイムJARのバージョン情報の検索」を参照してください。

6.5.5 診断ダンプ・ファイルを検査してバージョン情報を検索する方法

WebLogic Domainでアプリケーションを実行中にINCIDENT_ERRORが発生した場合、Oracle Diagnostic FrameworkはWebLogic Domainディレクトリにダンプ・ファイルを生成します。これらのファイルの場所は次のとおりです。

<DomainName>/servers/<ServerName>/adr/diag/ofm/<DomainName>/<ServerName>/incident/

生成されたダンプ・ファイルの1つにアプリケーションのJARバージョン情報が含まれています。これはadf_DiagnosticsJarsVersionDumpN.txtと呼ばれます。Nは数値です。

たとえば、<myDomainName>/servers/<myServerName>/adr/diag/ofm/<myDomainName>/<myServerName>/incident/adf_DiagnosticsJarsVersionDump45_i5.txtです。

このファイルを検証してバージョン情報を表示できます。このファイルをMy Oracle Supportにアップロードしてさらに分析することも可能です。

INCIDENT_ERRORメッセージをロギングしてコードから診断ダンプをトリガできます。

6.6 Oracle ADFの高可用性のトラブルシューティング

高可用性環境にデプロイされたFusion webアプリケーションをトラブルシューティングすると新たな問題が生じます。高可用性環境でのデプロイの問題の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデプロイ後の高可用性の問題のトラブルシューティングに関する項を参照してください。高可用性環境でのOracle ADFのレプリケーションの問題の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のOracle ADFのレプリケーションおよびフェイルオーバーの問題のトラブルシューティングに関する項を参照してください。