この章の内容は次のとおりです。
Oracle Fusion MiddlewareおよびOracle ADFには、アプリケーションの問題を監視および診断するために使用できるツールが用意されています。
ツールとその使用手順には、次のものが含まれています。
クリック履歴
ログ出力
診断フレームワーク
DMSメトリック
クリック履歴は、ボタンやタブ、スクロール・イベント、グラフの描画など、UI要素に対する物理的なクリックを継続的にレポートするFusion Middlewareの診断機能です。この機能を使用して、インシデントの原因を診断できます。
クリック履歴では、ADF Facesのコンポーネントでのユーザー・アクティビティ(たとえば、ADFコマンド・ボタンをWebブラウザからクリック)で生成されるADF Facesのイベントが取得されます。データは連続的に取得され、メモリー内の循環バッファに格納されます。バッファ・サイズは調整できます。診断インシデントが発生すると、バッファ内のデータが診断データの一部として自動的にディスクに書き込まれます。診断インシデントの詳細は、『Oracle Fusion Middlewareの管理』の「問題の診断」を参照してください。クリック履歴を構成して「クリック」イベントを取得する必要はありません。これはデフォルトで自動的に有効になります。クリック履歴データを使用して問題の診断に役立てることができます。これは、障害または問題を引き起こした最後のユーザー・アクションを判別する際に特に役に立ちます。
クリック履歴レコードは、UIコンポーネント、表示、リージョン、ユーザー、診断セッションID (DSID)およびその他の重要なアプリケーション・データに関する情報を提供します。クリック履歴は、ADF EUM (End User Monitoring)サービスを使用してデータを取得します。これには、EUMデータ専用に最適化された循環バッファがあります。データは、Javaヒープ内の単一の連続メモリー・セグメントに入れられます。Javaガベージ・コレクションへの影響は最小で、メモリー使用量は厳格に制御されます。デフォルトのバッファ・サイズの860KBで約1,500個の「クリック」イベントを保持できます。この量はインシデント分析には十分です。
クリック履歴はデフォルトのJRFテンプレートの一部として提供されます。Fusion Oracle MiddlewareまたはOracle ADFをインストールするとき、クリック履歴はFusion Middlewareフレームワークの一部としてインストールされます。
クリック履歴はADFの一部としてインストールされます。ただし、クリック履歴メッセージの実際のロギングはADFから独立した別個のスレッドによって実行されるため、クリック履歴はADFのオーバーヘッドをあまり必要としません。
クリック履歴はアプリケーション基準でアプリケーション上で有効になります。アプリケーションのweblogic.xml
構成ファイルおよびweb.xml
構成ファイルにエントリを追加することによってクリック履歴に対してアプリケーションを有効にします。手順については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のRUEIおよびクリック履歴に対するアプリケーションの有効化に関する項を参照してください。
アプリケーションでクリック履歴を有効にした後、特定の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の管理』の「ログ・ファイルと診断データの管理」を参照してください。
クリック履歴のバッファ・サイズは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
インシデントが発生すると、クリック履歴は自動的にデータをファイルにダンプします。ただし、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
次の例にサンプル・ダンプ・ファイル出力を示します。
Sample Click History Dump [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]
クリック履歴ダンプ・ファイルは、ログ・ファイルのフォーマットの通常の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番目のメッセージでのみ検索できます。
表5-1に、クリック履歴属性およびこれに対応するADF UserActivityInfoフィールドを示します。
表5-1 クリック履歴属性のマッピング
クリック履歴属性 | ADF UserActivityInfoフィールド |
---|---|
CH_CST |
|
CH_CET |
|
CH_VID |
|
CH_WID |
|
CH_CID |
|
CH_CNM |
|
CH_FAM |
|
CH_CMP |
|
CH_RVD |
|
CH_RNM |
|
CH_RTY |
|
CH_TYP |
|
CH_EID |
|
CH_PEI |
|
CH_TTT |
合計時間 = CH_CET - CH_CST |
CH_RRT |
|
CH_PRT |
|
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]
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
Oracle ADFには、システム・パフォーマンスの分析や、ADFアプリケーションのステータス監視に使用できるRESTメトリックが用意されています。RESTメトリックの表示には、DMSスパイ・サーブレットを使用します。
ADF中間層ビジネス・コンポーネントは、ADF RESTアプリケーションを作成することによりRESTエンドポイントとして公開できます。ビュー・オブジェクトからADF RESTリソースを作成する方法を参照してください。大規模にクラスタ化された環境にサービスがデプロイされている場合は、システム・パフォーマンスの分析またはシステム・ステータスの監視に役立つメトリックに開発者およびシステム管理者がアクセスする必要があります。
RESTサーブレットがRESTリクエストを処理するときは常にOracle Dynamic Monitoring Serviceがコールされて、処理中に発生したリソース使用状況が記録されます。Oracle Dynamic Monitoring Service (DMS)の詳細は、Oracle Dynamic Monitoring Serviceの使用を参照してください。
コンテナにオプションでデプロイされるDMSスパイ・サーブレットでは、DMSメトリックの状態を表示できます。DMSスパイ・サーブレットからのHTTP RESTリクエストの例は次のとおりです: http://10.242.60.105:8888/RESTMar2016-RESTWebService-context- root/rest/v0/Emp/7654
。JDeveloperまたはコマンド・ライン・ツールcURLを使用してHTTP RESTリクエストを送信する方法の詳細は、統合WebLogic Serverを使用したADF RESTリソースのテストを参照してください。
ADF REST Webサービスは構造化されたRESTレスポンスを返します。ADF RESTに対するHTTPメソッド・サポートの詳細は、ADF RESTフレームワーク・リファレンスを参照してください。
ランタイムには、メトリックがメモリーに保存され、ADF-RESTデプロイメント・ダッシュボードに記録されます。特定のHTTP RESTリクエストの発信元からADF BCリソース記述を取得する方法の詳細はADF RESTリソース記述の取得を参照してください。
例5-1 構造化されたRESTレスポンスのサンプル
{
"Empno" : 7654,
"Ename" : "MARTIN",
"Job" : "SALESMAN",
"Mgr" : 7098,
"Hiredate" : "1981-09-28T00:00:00-07:00",
"Sal" : 1250,
"Com" : 1400,
"Deptno" : 30,
"links" : [ {
"rel" : "self",
"href" : "http://10.242.60.105:8888/RESTMar2016-RESTWebService-
context- root/rest/v0/Emp/7654",
"name" : "Emp",
"kind" : "item"
}, {
"rel" : "canonical",
"href" : "http://10.242.60.105:8888/RESTMar2016-RESTWebService-
context- root/rest/v0/Emp/7654",
"name" : "Emp",
"kind" : "item"
} ]
}
REST Webサービスには、いくつかのタイプのメトリックがあります。メトリックは、開発者およびシステム管理者がシステム・パフォーマンスの分析やシステム・ステータスの監視を行うためのパフォーマンス情報を追跡するのに役立ちます。
様々なHTTP RESTリクエストがADF-RESTダッシュボードに様々なメトリックとして表示されます。
表5-2は、ADF-RESTアプリケーションに関連するメトリックを説明しています。
表5-2 DMS ADF-RESTのメトリック
メトリック | 説明 |
---|---|
Name |
RESTリソース名を指定します。 |
Host |
リクエストを処理するホスト名を指定します。 |
Process |
ノード名およびポートを指定します。 |
Execute |
実行の詳細を指定します。 |
HTTP Method |
get、put、patchなどのHTTPメソッドを指定します。 |
InputByteCount |
インバウンド・ペイロード・サイズを指定します。 |
OutputByteCount |
出力ペイロード・サイズを指定します。 |
Request Type |
HTTPリクエスト・タイプを指定します。 |
Response Type |
HTTPレスポンス・タイプを指定します。 |
resultCode |
HTTP結果コードを指定します。 |
Url |
RESTリクエストのURLを指定します。 |
Username |
ユーザーの名前を指定します。 |
Oracle Fusion Middlewareには、エラー・メッセージ、警告メッセージ、サーバー情報、HTTPリクエストなどのイベントを記録するログ・ファイルが用意されています。これらのログ・ファイルの設定を表示、ダウンロード、構成するには、Fusion Middleware ControlまたはWLSTコマンドを使用します。
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ロガーの使用に関する項を参照してください。
Oracle Fusion Middlewareには診断フレームワークがあり、問題に関する情報を収集して管理できるため、自身で解決することも、Oracleサポートに送信して解決することも可能です。
この診断フレームワークを使用すると、アプリケーションの問題を検出、診断および解決できます。クリティカル・エラーが発生すると、診断フレームワークは即座に診断データを取得し、そのデータとエラーをインシデント番号と関連付けます。この番号を使用して、自動診断リポジトリ(ADR)から分析のためのデータを取得できます。
Oracle ADFでは、INCIDENT_ERRORメッセージがログに記録されると実行されるADFConfigダンプを提供します。アプリケーションの例外ハンドラでダンプを起動するコードを追加することもできます。次の例は、ADFConfigダンプを起動するよう、例外ハンドラに追加できるサンプル・コードを示します。
IllegalArgumentException e = new IllegalArgumentException("test exception"); LoggerFactory.getFrameworkLogger().log(ODLLevel.INCIDENT_ERROR, "Test error message", e);
診断フレームワークに関する詳細は、『Oracle Fusion Middlewareの管理』の「問題の診断」を参照してください。
Oracle ADFインストールには、ターゲット・アプリケーション・サーバーでライブラリとして使用可能なADFランタイムJARが必要です。ADFランタイム・ライブラリのバージョンは、ADFアプリケーションのエラーの診断に使用します。
ADFランタイムJARバージョン番号を知ることは、アプリケーションの問題をデバッグして診断する際に重要な情報になることがあります。Oracleサポートがこの情報を要求する場合があります。
My Oracle Supportには、https://support.oracle.com
からアクセスできます。
次のいくつかの方法を使用して、ADFランタイムJARのどのバージョンを使用しているかを知ることができます。
アプリケーション起動時に生成されるCSVファイルを取得。
オフライン・モードでシェル・スクリプトを使用。
WLSTコマンドを使用。
Fusion Middleware Controlを使用します。
インシデント発生時にダンプ・ファイルを取得。
デプロイされたアプリケーションを起動するときに、ランタイム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コマンドを使用してログ出力レベルを設定してください。
オフライン・モードでは、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.2.1/adfm.jar,12.2.1.0.40.66.68, JDEVADF_12.2.1.0.0_GENERIC_130608.2330.6668,user=userY host=abc123456,2013-10-02 04:55:45 -0700,,
オフライン・モードでは、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.2.1/adfm.jar;$ORACLE_HOME$/modules/oracle.adf.view_12.2.1/adf-richclient-impl-12.jar')
Enterprise Manager Fusion Middleware Controlを使用して、ADFを使用して構築されたOracle製品を監視できます。このツールを使用してランタイムJARファイルのバージョン情報を検索することも可能です。
手順は、「ADFランタイムJARのバージョン情報の検索」を参照してください。
WebLogic Domainでアプリケーションを実行中にINCIDENT_ERRORが発生した場合、Oracle Diagnostic FrameworkはWebLogic Domainディレクトリにダンプ・ファイルを生成します。これらのファイルの場所は次のとおりです。
<DomainName>/servers/<ServerName>/adr/diag/ofm/<DomainName>/<ServerName>/incident/
生成されたダンプ・ファイルの1つにアプリケーションのJARバージョン情報が含まれています。これはadf_DiagnosticsJarsVersionDump
N
.txt
と呼ばれます。N
は数値です。
たとえば、<myDomainName>/servers/<myServerName>/adr/diag/ofm/<myDomainName>/<myServerName>/incident/adf_DiagnosticsJarsVersionDump45_i5.txt
です。
このファイルを検証してバージョン情報を表示できます。このファイルをMy Oracle Supportにアップロードしてさらに分析することも可能です。
INCIDENT_ERRORメッセージをロギングしてコードから診断ダンプをトリガできます。
Fusion Webアプリケーションを高可用性環境にデプロイできます。デプロイ後は、アプリケーション・デプロイメントの問題や、Oracle ADFのレプリケーションとフェイルオーバーの問題を監視および診断できます。
高可用性環境にデプロイされたFusion webアプリケーションをトラブルシューティングすると新たな問題が生じます。高可用性環境でのデプロイの問題の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデプロイメント後の高可用性の問題をトラブルシューティングする方法に関する項を参照してください。高可用性環境でのOracle ADFのレプリケーションの問題の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「Oracle ADFのレプリケーションおよびフェイルオーバーの問題をトラブルシューティングする方法」を参照してください。