原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/wls_mt_diagnostics_overview
このエントリでは、各パーティションにデプロイされたアプリケーションやリソースに対しテナントが利用可能な診断・監視機能の概要を紹介します。
これらの機能はWebLogic Server Diagnostic Framework(WebLogic Server診断フレームワーク、WLDF)コンポーネントが提供します。
以下のトピックについて各セクションで説明します。
以下の共有ログと診断データへは、パーティション管理者がアクセスできます。
以下のパーティションスコープのログや診断データあはパーティション管理者からアクセスできます。
この機能の詳細情報を知りたい方は、WLDFデータアクセッサのドキュメントをご覧ください。
下表は異なるパーティション対象のログに対する論理名のパターンをまとめたものです。
この機能はWebLogic Serverシステム管理者が、
WebLogic Serverを上述のようにカスタムログマネージャを使って起動すると、パーティション管理者は以下のようにロガーを構成できます。
パーティション固有のサーバデバッグを有効化する方法については、WebLogic Server MultitenancyドキュメントにあるWLSTサンプルスクリプトを参照してください。
以下のXMLは、診断システムリソースXMLディスクリプタに永続化されたハーベスタの構成例です。
WLDFハーベスタに関する詳細情報は、以下のドキュメントをご覧ください。
以下のタイプのルールベースのポリシーを定義することができます。
WebLogic Serverシステム管理者がサーバレベルのインストゥルメンテ-ションを有効化している場合にのみ、この機能は利用可能です。また、パーティションにわたってクラスローダを共有するアプリケーションに対しては利用できません。
以下はWLDFインストゥルメンテ-ションディスクリプタファイルの例です。
診断イメージは以下の方法で取得できます。
パーティションイメージには以下のような様々なソースからの診断データが含まれています。
PartitionRuntimeMBeanの子であるPartitionResourceMetricsRuntimeMBeanは監視目的で役立つメトリックを提供します。
PartitionMBean.RCMHistoricalDataBufferLimit属性がヒープやCPUのデータ配列のサイズを制限するということにご注意ください。
https://blogs.oracle.com/WebLogicServer/entry/wls_mt_diagnostics_overview
Introduction
WebLogic Server 12.2.1ではMultitenancyをサポートしており、これにより複数のテナントが一つのWebLogicドメインを共有することができます。Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)テナントは、別々のWebLogicドメインの設定やランタイムインフラストラクチャのスライスを提供するドメインパーティションにアクセスします。
About WebLogic Server MT
http://docs.oracle.com/middleware/1221/wls/WLSMT/concepts.htm#WLSMT718
このエントリでは、各パーティションにデプロイされたアプリケーションやリソースに対しテナントが利用可能な診断・監視機能の概要を紹介します。
これらの機能はWebLogic Server Diagnostic Framework(WebLogic Server診断フレームワーク、WLDF)コンポーネントが提供します。
以下のトピックについて各セクションで説明します。
- Log and Diagnostic Data
- WLDF Accessor
- Logging Configuration
- Server Debug
- WLDF System Resource for Partitions
- Instrumentation for Partition Applications
- Diagnostic Image
- RCM Runtime Metrics
- Java Flight Recorder
- Conclusion
Log and Diagnostic Data
様々なソースからのログと診断データはパーティション管理者が利用できます。これらのログや診断データは以下のように大別できます。- 共有データ - ログと診断データはパーティション管理者が直接生の永続化された形で利用することはできず、WLDFアクセッサコンポーネントを使ってのみ利用できる。
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
Accessing Diagnostic Data With the Data Accessor
http://docs.oracle.com/middleware/1221/wls/WLDFC/access_diag_data.htm#WLDFC272 - パーティションスコープのデータ - これらのログは、パーティションファイルシステムのディレクトリ配下でRaw形式でパーティション管理者が利用可能
以下の共有ログと診断データへは、パーティション管理者がアクセスできます。
ログの種類 | 内容 |
---|---|
Server | Server.logファイルに記録された、パーティションに関連する、サーバやアプリケーションコンポーネントからのログイベント |
Domain | パーティションに関連するWebLogicドメインのすべてのサーバインスタンスから収集されたログイベント。単一のログファイル。 |
DataSource | パーティションに関連するDataSourceログイベント |
HarvestedData Archive | WLDF Harvesterがパーティションに関連するMBeanから収集したメトリックデータ |
Instrumentation Events Archive | パーティションにデプロイされたアプリケーションが生成するWLDFインストルメンテ-ションイベント |
以下のパーティションスコープのログや診断データあはパーティション管理者からアクセスできます。
ログの種類 | 内容 |
---|---|
HTPP access.log | パーティションの仮想ターゲットのWebサーバからのHTTPアクセスログ |
JMSServer | パーティションを対象にしたリソースグループやリソースグループテンプレート内で定義されたJMSサーバリソースの、JMSサーバメッセージライフサイクルイベント |
SAF Agent | パーティションを対象にしたリソースグループやリソースグループテンプレート内で定義されたSAFエージェントリソースの、SAFエージェントメッセージライフサイクルイベント |
Connector | パーティション内のリソースグループやリソースグループテンプレートにデプロイされたJava EEリソースアダプタモジュールが生成したログデータ |
Servlet Context | パーティション内のリソースグループやリソースグループテンプレートにデプロイされたJava EE Webアプリケーションモジュールが生成する、サーブレットコンテキストログデータ |
WLDF Accessor
WLDFアクセッサは診断データをJMX経由で取得するためのRuntimeBeanインターフェースを提供します。データのサブセットのみ取得するためのクエリ機能も提供しています。この機能の詳細情報を知りたい方は、WLDFデータアクセッサのドキュメントをご覧ください。
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)WLDFPartitionRuntimeMBeanはPartitionRuntimeMBeanの子であり、WLDFランタイムMBeanのルートです。このMBeanは、パーティションを対象にしたWLDFアクセッサ機能のためのエントリポイントである、WLDFPartitionAccessRuntimeMBeanインターフェースのgetterを提供します。パーティションで利用可能な、各ログインスタンスに対するWLDFDataAccessRuntimeMBeanのインスタンスがあります。
Accessing Diagnostic Data With the Data Accessor
http://docs.oracle.com/middleware/1221/wls/WLDFC/access_diag_data.htm#WLDFC272
WebLogic Server MBean Reference事前定義された命名方式に従い、論理名によって異なるログが参照されます。
WLDFPartitionRuntimeMBean
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/WLDFPartitionRuntimeMBean.html
PartitionRuntimeMBean
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/PartitionRuntimeMBean.html
WLDFPartitionAccessRuntimeMBean
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/WLDFPartitionAccessRuntimeMBean.html
WLDFDataAccessRuntimeMBean
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/WLDFDataAccessRuntimeMBean.html
下表は異なるパーティション対象のログに対する論理名のパターンをまとめたものです。
Shared Logs
ログの種類 | 論理名 |
---|---|
Server Log | ServerLog |
Domain Log | DomainLog |
JDBC Log | DataSourceLog |
Harvested Metrics | HarvestedDataArchive |
Instrumentation Events | EventsDataArchive |
Partition Scoped Logs
ログの種類 | 論理名 |
---|---|
HTTP Access Log | HTTPAccessLog/<Webサーバ名> |
JMS Server Log | JMSMessageLog/<JMSサーバ名> |
SAF Agent Log | JMSSAFMessageLog/<SAFエージェント名> |
Servlet Context Log | WebAppLog/<Webサーバ名>/context-path |
Connector Log | ConnectorLog/connection-Factory-jndiName$<パーティション名> |
Logging Configuration
WebLogic Server Multitenancyはパーティション内で実行するアプリケーションコンポーネントが利用するjava.util.logging.Loggers内のレベルの構成をサポートしています。これにより、java.util.loggingを使うJava EEアプリケーションは、システムレベルのjava.util.loggingの設定機構にアクセスできなくても、それぞれのログレベルを設定することができるようになります。パーティション間で使われる、共通ライブラリが利用する共有ロガーインスタンスの場合、特定のパーティションに変わって設定しているのであれば、そのレベル構成もまたLoggerインスタンスに適用されます。この機能はWebLogic Serverシステム管理者が、
というコマンドライン・システムプロパティを付けて起動した場合に有効になります。-Djava.util.logging.manager=weblogic.logging.WLLogManager
WebLogic Serverを上述のようにカスタムログマネージャを使って起動すると、パーティション管理者は以下のようにロガーを構成できます。
- PartitionLogMBean.PlatformLoggerLevels 属性にKey-Valueのペアとしてログレベルを定義する
[例]com.myapp.MyLogger=WARNINGWebLogic Server MBean Reference
PartitionLogMBean.PlatformLoggerLevels
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/PartitionLogMBean.html#PlatformLoggerLevels
Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)PartitionLogMBean.PlatformLoggerLevels属性で指定したレベルの設定は所有するパーティションに対してのみ有効です。同名のロガーインスタンスを別のパーティションで利用することができ、各ロガーの実行時の有効レベルは、それぞれのパーティションでのPartitionLogMBean.PlatformLoggerLevelsの設定によって定義されます。
Configuring Partition Scope Debugging
http://docs.oracle.com/middleware/1221/wls/WLSMT/monitoring.htm#WLSMT1337
Server Debug
あるトラブルシューティングのシナリオでは、パーティション固有のWebLogic Serverのサブシステムからのデバッグ出力を有効化する必要がある場合があります。サーバデバッグ出力はパーティションに代わって内部サーバコードのデバッグをする際に役に立ちますが、WebLogic Serverシステム管理者やOracle Supportと協同して注意しながら実施する必要があります。WebLogic Serverシステム管理者はまず ServerDebugMBean.PartitionDebugLoggingEnabled 属性を有効化する必要があります。その上で、特定のデバッグフラグを有効化するよう指示があります。これらのフラグはBoolean型の属性で、ServerDebugMBean構成インターフェースで定義されています。パーティションに対して有効化すべき特定のデバッグフラグをPartitionLogMBean.EnabledServerDebugAttributes属性を使って構成します。WebLogic Server MBean Referenceパーティションに対して有効化するための特定のデバッグ出力の名前の配列(String型)を含んでいます。デバッグ出力をサーバログに記録します。この出力はWLDFアクセッサを使って取り出すことができ、Oracle Supportにより詳細の分析をするために提供することができます。サーバデバッグを有効化するとパフォーマンスのオーバーヘッドが発生するため、トラブルシューティングが終われば、デバッグフラグを無効化する必要があることにご注意ください。
PartitionLogMBean.EnabledServerDebugAttributes
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/PartitionLogMBean.html#EnabledServerDebugAttributes
パーティション固有のサーバデバッグを有効化する方法については、WebLogic Server MultitenancyドキュメントにあるWLSTサンプルスクリプトを参照してください。
Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
Configuring Partition Scope Debugging
http://docs.oracle.com/middleware/1221/wls/WLSMT/monitoring.htm#WLSMT1337
Diagnostic System Module for Partitions
Diagnostic System Module(DSM、診断システムモジュール)は、ハーベスタ、ポリシー、パーティションにデプロイされたリソースグループやリソースグループテンプレートで定義可能なActionコンポーネントを提供します。Harvester
WLDFハーベスタはMBeanメトリック値を定期的にポーリングし、後の診断や分析用に収集したデータをアーカイブする機能を提供します。PartitionRuntimeMBeanとその子MBeanだけでなく、パーティションにデプロイされたアプリケーションが作成したMBeanも含め、パーティションから見えるすべてのWebLogic ServerランタイムMBeanを収集することができます。WebLogic Server MBean Referenceハーベスタ構成では、サンプリング間隔、MBeanの主対、インスタンスの仕様、収集し永続化する必要のあるそれぞれのMBean属性を定義します。アーカイブされた収集済みメトリックデータは、前述の通りWLDFアクセッサコンポーネントから利用可能であることにご注意ください。
PartitionRuntimeMBean
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/PartitionRuntimeMBean.html
以下のXMLは、診断システムリソースXMLディスクリプタに永続化されたハーベスタの構成例です。
<harvester>
<enabled>true</enabled>
<sample-period>2000</sample-period>
<harvested-type>
<name>weblogic.management.runtime.ServletRuntimeMBean</name>
<harvested-attribute>ExecutionTimeAverage</harvested-attribute>
<namespace>ServerRuntime</namespace>
</harvested-type>
<harvested-type>
<name>sandbox.mbean.SandboxCustomMBeanImpl</name>
<namespace>ServerRuntime</namespace>
</harvested-type>
</harvester>
WLDFハーベスタに関する詳細情報は、以下のドキュメントをご覧ください。
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
Configuring the Harvester for Metric Collection
http://docs.oracle.com/middleware/1221/wls/WLDFC/config_harvester.htm#WLDFC172
Policies and Actions
ポリシーとは、監視対象の条件をJavaの式言語(EL)で定義したルールです。WLDFでは、ルール条件を満足した場合に動き出すポリシーに添付することができるアクションを豊富に提供しています。以下のタイプのルールベースのポリシーを定義することができます。
- ハーベスタ:WebLogicランタイムMBeanのメトリックもしくはアプリケーションが有するカスタムMBeanのメトリックに基づく
- ログイベント:サーバログやドメインログのログメッセージに基づく
- インストゥルメンテ-ションイベント:WLDFインストゥルメンテ-ションを使うJava EEアプリケーションの測定コードから生成されたイベント
以下の種類のアクションをパーティションでサポートしています。<watch>
<name>Session-Count-Watch</name>
<enabled>true</enabled>
<rule-type>Harvester</rule-type>
<rule-expression>wls.partition.query("com.bea:Type=WebAppComponentRuntime,*", "OpenSessionsCurrentCount").stream().anyMatch(x -> x >= 1)
</rule-expression>
<schedule>
<minute>*</minute>
<second>*/2</second>
</schedule>
<notification>jmx-notif1</notification>
</watch>
<watch>
<name>Partition-Error-Log-Watch</name>
<rule-type>Log</rule-type>
<rule-expression>log.severityString == 'Error'</rule-expression>
<notification>jmx-notif1,r1,r2</notification>
</watch>
<watch>
<name>Inst-Trace-Event-Watch</name>
<rule-type>EventData</rule-type>
<rule-expression>instrumentationEvent.eventType == 'TraceAction'</rule-expression>
<notification>jmx-notif1</notification>
</watch>
- JMS
- SMTP
- JMX
- REST
- Diagnostic Image
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
Configuring Policies and Actions
http://docs.oracle.com/middleware/1221/wls/WLDFC/config_watch_notif.htm#WLDFC188
Instrumentation for Partition Applications
WLDFは、パーティション・スコープにデプロイされたJava EEアプリケーションのためのバイトコード・インストゥルメンテ-ション・メカニズムを提供しています。アプリケーション用インストゥルメンテ-ションの構成は、META-INF/weblogic-diagnositcs.xml ディスクリプタファイルで指定します。WebLogic Serverシステム管理者がサーバレベルのインストゥルメンテ-ションを有効化している場合にのみ、この機能は利用可能です。また、パーティションにわたってクラスローダを共有するアプリケーションに対しては利用できません。
以下はWLDFインストゥルメンテ-ションディスクリプタファイルの例です。
For further details refer to the WLDF Instrumentation documentation.<wldf-resource xmlns="http://xmlns.oracle.com/weblogic/weblogic-diagnostics/1.0/weblogic-diagnostics.xsd">
<instrumentation><enabled>true</enabled>
<wldf-instrumentation-monitor>
<name>Servlet_Before_Service</name>
<enabled>true</enabled>
<action>TraceAction</action>
</wldf-instrumentation-monitor>
<wldf-instrumentation-monitor>
<name>MyCustomMonitor</name>
<enabled>true</enabled>
<action>TraceAction</action>
<location-type>before</location-type>
<pointcut>execution( * example.util.MyUtil * (...))</pointcut>
</wldf-instrumentation-monitor>
</instrumentation>
Diagnostic Image
診断イメージは単一のZipファイル中に様々なWebLogic Serverのサブシステムの状態をキャプチャするコアダンプに似ています。WLDFはパーティション固有の診断イメージのキャプチャをサポートしています。診断イメージは以下の方法で取得できます。
- WLSTから(パーティション管理者)
- WLDFポリシーに対する構成済みアクションとして
- WLDFPartitionImageRuntimeBeanのcaptureImage()オペレーションを呼び出す
WebLogic Server MBean Reference
WLDFPartitionImageRuntimeMBean
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/WLDFPartitionImageRuntimeMBean.html
パーティションイメージには以下のような様々なソースからの診断データが含まれています。
- Connector
- Instrumentation
- JDBC
- JNDI
- JVM
- Logging
- RCM
- Work Manager
- JTA
Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
Configuring and Capturing Diagnostic Images
http://docs.oracle.com/middleware/1221/wls/WLDFC/config_diag_images.htm#WLDFC150
RCM Runtime Metrics
WebLogic server 12.2.1ではリソース消費管理(Resource Consumption Management, RCM)機能が導入されました。この機能はOracle JDK 8u40以後でのみ利用可能です。Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)RCMを有効にするには、以下のコマンドラインスイッチをサーバー起動時のスクリプトに追加する必要があります。
Configuring Resource Consumption Management
http://docs.oracle.com/middleware/1221/wls/WLSMT/config_rcm.htm#WLSMT630
RCMは起動スクリプトではデフォルトで有効化されていないことにご注意ください。-XX:+UnlockCommercialFeatures -XX:+ResourceManagement -XX:+UseG1GC
PartitionRuntimeMBeanの子であるPartitionResourceMetricsRuntimeMBeanは監視目的で役立つメトリックを提供します。
WebLogic Server MBean Reference
PartitionResourceMetricsRuntimeMBean
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/PartitionResourceMetricsRuntimeMBean.html
PartitionRuntimeMBean
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/PartitionRuntimeMBean.html
属性のGetter | 説明 |
---|---|
isRCMMetricsDataAvailable() | Checks whether RCMメトリックデータがこのパーティションで利用可能かどうかを確認する。 |
getCpuTimeNanos() | パーティションに関わる総CPU利用時間(nsec) |
getAllocatedMemory() | パーティションに割り当てられたメモリの総量(byte)。このメトリック値は時間がたつにつれて単調増加する。 |
getThreadCount() | 現在パーティションに割り当てられているスレッドの個数 |
getTotalOpenedSocketCount() getCurrentOpenSocketCount() | (上)パーティションに関わるオープンしているソケットの総数 (下)現在オープンしているソケットの個数 |
getNetworkBytesRead() getNetworkBytesWritten() | (上)パーティションで開いているソケットから読み込んだ総バイト数 (下)パーティションで開いているソケットに書き込んだ総バイト数 |
getTotalOpenedFileCount() getCurrentOpenFileCount() | (上)パーティションで開いているファイルの総数 (下)パーティションで現在開いているファイルの個数 |
getFileBytesRead() getFileBytesWritten() | (上)パーティションで開いているファイルから読み込んだ総バイト数 (下)パーティションで開いているファイルに書き込んだ総バイト数 |
getTotalOpenedFileDescriptorCount() getCurrentOpenFileDescriptorCount() | (上)パーティションで開いているファイル識別子の総数 (下)パーティションで現在開いているファイル識別子の個数 |
getRetainedHeapHistoricalData() | パーティションに保持されるヒープメモリ使用量の履歴データのスナップショットを返す。データはパーティションで保持されたヒープの利用状況の時系列データのため、2次元配列として返す。配列内の各項目は、[timestamp (long), retainedHeap (long) ]の値の組み合わせ。 |
getCpuUtilizationHistoricalData() | パーティションのCPU使用率の履歴データのスナップショットを返す。CPU使用率は、WebLogic Serverで’使用可能なCPUに対する、パーティションが利用したCPUの割合を示す。 パーティションのCPU利用率は時系列データなので、2次元配列として返す。配列内の各項目は、[timestamp (long), cpuUsage(long)]の値の組み合わせ。 |
WebLogic Server MBean Reference
PartitionMBean.RCMHistoricalDataBufferLimit
http://docs.oracle.com/middleware/1221/wls/WLMBR/mbeans/PartitionMBean.html#RCMHistoricalDataBufferLimit
Java Flight Recorder
WLDFはJava Flight Recorderと統合し、WebLogic ServerのイベントをJVM記録に含めることができるようになっています。Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)パーティションの変わりに実行されたワークのコンテキストで生成されたWebLogic ServerイベントにはパーティションIDとパーティション名がタグ付けされています。これらのイベントとFlight RecordingデータはWebLogic Serverシステム管理者だけが利用できます。
Using WLDF with Java Flight Recorder
http://docs.oracle.com/middleware/1221/wls/WLDFC/using_flightrecorder.htm#WLDFC423
Conclusion
WLDFは、トラブルシューティングや診断タスクで非常に役に立つ様々なタイプの監視データを収集、アクセスするための豊富なツール群を提供します。このブログエントリでは、パーティション管理者のためのWLDFの入門情報をご紹介しました。深掘りしてこれらの機能を確認し、本番環境で活用されることをお勧めします。その他の詳細情報は、以下のドキュメントをご覧ください。Oracle® Fusion Middleware Configuring and Using the Diagnostics Framework for Oracle WebLogic Server 12c (12.2.1)
http://docs.oracle.com/middleware/1221/wls/WLDFC/
Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
Monitoring and Debugging Partitions
http://docs.oracle.com/middleware/1221/wls/WLSMT/monitoring.htm#WLSMT639