トランザクション
トランザクションとは、ユーザーのブラウザからのリクエストを処理するためのサーバーサイドのLogical Unit of Work(KUW)です。個々のウェブサービス(URL)のリクエストを処理する過程がトランザクションです。ウェブアプリケーションにおいてトランザクションは、ウェブサービス(URL)に対するHTTP Requestを受信し、Responseを返すプロセスです。
アプリケーションの性能は、これらのトランザクションの性能であると言えます。トランザクションの性能には、トランザクションの開始から終了までの時間、レスポンス時間およびリソースの使用量、トランザクション呼び出し元の属性などの情報が含まれます。
基本的には、トランザクションのレスポンス分布とトランザクション統計を使用してトランザクションの性能を分析できます。
トランザクショントレーシング
以下は、アプリケーションの各トランザクションの実行パスを詳細に追跡できるエージェントのオプションです。最小応答時間からトランザクションの実行ステップ数まで、様々な部分を調整可能です。
-
profile_basetime MiliSecond
既定値
500
トレースの詳細情報を収集する最少応答時間を設定します。設定した値以下の時間内にトランザクションが終了した場合、トレース情報を収集しません。ただし、5分単位で最初に呼び出されたURLとエラーが発生したトランザクションに関するトレース情報は収集します。
ノートprofile_basetime
オプションに関係なくエラーを収集するには、profile_concern_error_enabled
オプションをtrue
に設定してください。デフォルトをfalse
に設定すると、エラーがサンプリングされます
-
profile_step_normal_count Int
既定値
1000
トランザクショントレースの最大ステップ数を設定します。
-
profile_step_heavy_count Int
既定値
1020
Heavyなステップの場合、トレースの基本ステップ数を超えても決められた値だけ記録します。
-
profile_step_max_count Int
既定値
1024
トレースステップの最大数を設定します。収集されたトレースステップの数が設定値を超えると、その後に収集されるステップはすべて破棄されます。
profile_step_heavy_count
を最大1000に設定すると、profile_step_max_count
までアクティブスタックが収集されます。 -
profile_step_heavy_time MiliSecond
既定値
100
Heavyなステップの基準を設定します。 設定した値より実行時間が長い場合、
profile_step_normal_count
の値を超えても、profile_step_heavy_count
の設定値のみ記録します。 -
active_stack_count Int
既定値
100
トランザクション内で収集するアクティブスタックの最大数を設定します。
-
profile_method_resource_enabled Boolean
既定値
false
トレースからmethodステップを収集する場合は、そのステップで使用したCPUとメモリ使用量を追跡します。
-
profile_position_method String
設定したメソッド実行時のStackTraceを記録します。
-
profile_position_depth Int
既定値
50
position追跡のStackTraceを記録する場合、最大ライン数を設定します。
-
trace_error_callstack_depth Int
既定値
50
Error発生時に収集するStackTraceの最大ライン数を設定します。
-
trace_active_callstack_depth Int
既定値
50
アクティブスタックから収集するStackTraceの最大ライン数を設定します。
-
trace_active_transaction_yellow_time MiliSecond
既定値
3000
アクティブトランザクションのアークイコライザーで黄色で表現する基準を設定します。
-
trace_active_transaction_red_time MiliSecond
既定値
8000
アクティブトランザクションのアークイコライザーで赤色で表現する基準を設定します。
-
hook_method_patterns String
レスポンス時間を測定するメソッドを設定します。最後のピリオド(.)を区切り文字としてクラスのFullNameとメソッドに区分され、アスタリスク(*)をワイルドカードとして使用できます。対象が複数ある場合は、コンマ(,)で区切ります。
whatap.confhook_method_patterns=a.b.C1.*
ノート-
このオプションで登録したメソッドは、トレース分析またはトランザクション情報画面からMethodのステップで確認できます。
-
なるべく小さい範囲に適用してください。広い範囲に適用すると、アプリケーションの性能が低下する恐れがあります。
-
-
hook_method_supers String
特定のクラスを継承するメソッドの応答時間を測定する場合は、Super Classを設定します。 クラスFullNameを設定し、対象が複数ある場合は、コンマ(,)で区切ります。
whatap.confhook_method_supers=a.b.C1
-
hook_method_interfaces String
特定のインターフェイスを実装するメソッドの応答時間を測定する場合は、Interfaceを設定します。インターフェイスのFullNameを設定し、対象が複数ある場合は、コンマ(,)で区切ります。
-
hook_method_ignore_classes String
メソッドトレースを設定する場合は、トレースから除外するクラスをprefixに設定します。
-
hook_method_access_public_enabled Boolean
既定値
true
メソッドトレースを設定する場合、publicメソッドを個別のターゲットとしてのみ処理するかどうかを設定します。
-
hook_method_access_private_enabled Boolean
既定値
false
メソッドトレースを設定する場合、privateメソッドに限り、個別の対象として処理するかどうかを設定します。
-
hook_method_access_protected_enabled Boolean
既定値
true
メソッドトレースを設定する場合、protectedメソッドに限り、個別の対象として処理するかどうかを設定します。
-
hook_method_access_none_enabled Boolean
既定値
true
メソッドトレースを設定する際、no access indicatedメソッドに限り、別途対象として処理するかを設定します。
-
stacklog_socket_port TCP_PortNumber
既定値
0
宛先のTCPポートを設定すると、Socket.connect()は、特定の時点でStackTraceをエージェントログとして記録します。基本設定で確認されていないDB接続、HTTPC接続などを追跡する場合に使用できます。
注意設定した宛先への接続は、毎回StackTraceを記録します。これらを行うと、パフォーマンスが低下する可能性があります。デバッグ用に選択したエージェントに一時的に使用する必要があります。
DB接続状態追跡の例)
stacklog_socket_port=1521
-
trace_concern_error_enabled Boolean
既定値
true
trace_basetime
またはprofile_basetime
オプションに関係なく、エラーのある詳細なトレースの収集有無を設定します。
例外処理
以下は、アプリケーションで発生する例外を管理およびモニタリングするためのオプションです。ビジネス例外を登録し、関連する統計を収集することで、アプリケーションの安定性を確認できます。また、特定の例外を無視したりHTTPステータスコードがエラーの場合、エラーとして処理するかどうかを設定できます。例外として処理された項目は、ヒットマップまたはトレース分析画面で、正常なトランザクションとして表示されます。
Javaエージェントの、例外処理基準についての詳細は、次の文書を参照してください。
-
biz_exceptions String
Business Exceptionを登録します。
whatap.conf# example
biz_exceptions=com.home.test.exception.BizExceptionTipsエラークラス収集 / ヒットマップ表示レベル:INFO(青色) / エラー統計を含む
ノートJavaエージェントv2.2.20 以降では、登録したビジネスExceptionをエラー統計で収集します。 v2.2.20未満では、登録したビジネスExceptionをエラー統計から除外します。 ただし、トレースの詳細では表示されます。
-
biz_exceptions_status String
Java Agent v2.2.20 or later
Business Exception発生時、イベント通知を抑制するBusiness ExceptionとStatusを設定します。 このオプションで設定したBusiness Exception:Statusについては、イベントレベルがINFOに変更されます。 Business ExceptionとStatusはコロン(:)で区分し、一つのBusiness Exceptionに複数のStatusを使用する場合、アンパサンド(&)で区分します。 コンマを区切り文字として使用して複数設定できます。
whatap.conf# example
biz_exceptions_status=java.util.concurrent.TimeoutException:400&404&408,java.lang.Exception:200Tipsエラークラス収集 / ヒットマップ表示レベル:INFO(青色) / エラー統計を含む
-
ignore_exceptions String
登録したExceptionエラを無視します。
whatap.conf# example
ignore_exceptions=com.home.test.exception.BizExceptionTipsエラークラス無視 / ヒットマップ表示レベル:INFO(青色) / エラー統計を含まない
-
transaction_status_error_enable Boolean
既定値
true
正常応答ではなくHTTP401、403のようなステータスコードがリターンされた場合、エラーとして処理するかどうかを設定します。
-
status_ignore String
無視しようとするHTTPステータスコードを設定できます。 複数の値を対象とする場合は、コンマ(,)を区切り文字として使用してください。
whatap.conf# example
status_ignore=408,500TipsStatusエラー無視 / ヒットマップ表示レベル:INFO(青色) / エラー統計を含まない
-
status_ignore_set String
whatap.error.STATUS_ERROR
を無視します。 複数の値を対象とする場合は、コンマ(,)を区切り文字として使用してください。whatap.conf# example
status_ignore_set=/api/test/timeout/{time}:408,/error:500TipsStatus エラーセット無視 / ヒットマップ表示レベル:INFO(青色) / エラー統計を含まない
-
httpc_status_error_enable Boolean
既定値
true
HTTPステータスコードがエラーの場合は、収集有無を設定します。 クライアントエラーレスポンス(
400
以上)、サーバーエラーレスポンス(500
以上)が該当します。ノートHTTPステータスコードの詳細については、次のリンクを参考にしてください。
-
httpc_status_ignore String
HTTPのステータスコードがエラー(
HTTPC_ERROR
)の場合、無視します。 複数の値を対象とする場合は、コンマ(,)を区切り文字として使用してください。whatap.conf# example
httpc_status_ignore=404,500TipsHTTPステータスエラーコード無視 / エラー統計を含まない
-
httpc_status_url_ignore_set String
whatap.error.HTTPC_ERROR
を無視します。 複数の値を対象とする場合は、コンマ(,)を区切り文字として使用してください。httpc_status_url_ignore_set=/a/b/c:400,/a/ab/c:404
のように設定してください。 この場合、URLは統計/エラー分析にHTPC_URL
の値を入力します。whatap.conf# example
httpc_status_url_ignore_set=/a/b/c:404,/d/e/f:500TipsHTTPステータスエラーコード無視 / エラー統計を含まない
-
trace_sql_exception_enabled Boolean
既定値
true
JDBCドライバーでSqlException発生時に追跡可否を設定します。 オプション値を
false
に設定すると、ユーザー定義の例外処理によりbiz_exceptions
処理できます。 -
trace_exception_handler_overwrite_enabled Boolean
既定値
true
spring-boot ExceptionHandlerを通過する例外(exception)が発生すると、以前に発生した例外に置き換えできます。 トレース分析画面のレコード要約タブで例外(exception)を、spring-bootのExceptionHandlerに登録した例外で表示できます。
HTTPトランザクションの追跡
以下は、HTTPリクエストと応答に関連する様々な情報を追跡および記録するエージェントのオプションです。これにより、ユーザーはアプリケーションのHTTPトランザクションを細かくモニタリングし分析できます。トランザクション名にパラメータ値を追加または特定のURLやHTTPメソッドを除外できます。またHTTPヘッダー情報やパラメータ情報を含め、トランザクションをより詳細に記録できます。
-
trace_normalize_enabled Boolean
既定値
true
トランザクションURLをパーシングし、正規化する機能を有効にします。
ノートfalse
に値を変更すると、パスパラメータのパーシングが無効になります。この場合、統計データの意味が弱くなるため、デバッグ目的のみで使用することをお勧めします。 -
trace_auto_normalize_enabled Boolean
既定値
true
トランザクションURLを正規化すると、パターン値をアノテーションから抽出して自動的にパーシングする機能がアクティブになります。
-
trace_normalize_urls String
正規化するトランザクションURLパターンを設定します。呼び出しURLパターンをパーシングして、パスパラメータを削除します。
ノート例)
/a/{v}/b
を宣言する場合は、a/123/b
→a/{v}/b
に置き換えます。複数登録する場合は、コンマ(,)を区切り文字として使用します。置換パターンをクリーンアップした後、補足する必要があります。 -
web_static_content_extensions String
既定値
js, htm, html, gif, png, jpg, css, swf, ico
静的コンテンツであると判断する拡張子を設定します。このオプションで設定した拡張子を持つトランザクションは、トレース追跡とカウントから除外されます。
-
trace_transaction_name_header_key String
設定したHTTP header keyから抽出した値をトランザクションの名前の末尾に追加します。
-
profile_http_header_enabled Boolean
既定値
false
トレース履歴にHTTPヘッダー情報を記録するには、
true
に設定します。 -
profile_http_parameter_enabled Boolean
既定値
false
トレース履歴にHTTPパラメータ情報を記録するには、
true
に設定します。パラメータは、他のセキュリティ キーを入力して参照できます。ノート-
Javaエージェント2.2.2バージョン未満:セキュリティキーは、WASサーバー_
${WHATAP_AGENT_HOME}
/paramkey.txt_ファイル内に6桁で作成します。paramkey.txtファイルが存在しない場合は、ランダム値で自動生成します。 -
Javaエージェント2.2.2バージョン以降:セキュリティキーは、WASサーバー_
${WHATAP_AGENT_HOME}
/security.conf_ファイル内にparamkey
キー値を確認してください。security.confファイルが存在しない場合は、paramkey
キー値をWHATAPで自動生成します。 -
セキュリティキー設定ファイルの詳細については、次の文書を参照してください。
-
-
profile_http_header_url_prefix String
トレース履歴にHTTPヘッダー情報を書き込むための宛先URLのprefixを定義するために使用します。
-
profile_http_parameter_url_prefix String
トレース履歴にhttpパラメータ情報を記録する対象URLのprefixを定義するときに使用します。
-
trace_transaction_name_key String
HTTPリクエストパラメータの変数名を設定すると、その変数の値を取得してトランザクション名の最後に追加します。
例えば、HTTPパラメータで変数名
paramKey
を持った/api/test
というURLを呼び出す場合、次の例のように設定すると、トレース履歴に/api/test$paramKey={value}
の形式で表示されます。ただし、複数のパラメータを登録できません。whatap.conf# example
trace_transaction_name_key=paramKey -
recursive_max Int
既定値
1000000
トランザクションが再帰呼び出されているかどうかを検知するためのオプションです。1つのトランザクションから派生する再帰呼び出し回数をカウントすると、イベント通知を発行するための条件が設定されます。
ノートHTTP URLの再帰呼び出しを対象とします。jsp:forwardによって再呼び出しするケースもカウントに含まれます。
-
hook_httpservlet_classes String
HTTPトランザクションのEND POINTを設定します。メソッドの2つのパラメータは、
HttpServletRequest
とHttpServletResponse
を設定できます。 -
hook_jsp_patterns String
既定値
org.apache.jasper.servlet.JspServlet.serviceJspFile
JSPファイルをロードするためのメソッドを設定します。トランザクションの呼び出しの結果として戻されたJSP情報をトレースに表示します。このオプションで追加された設定に既定値が自動的に追加されます。
-
trace_ignore_url_set String
トランザクション追跡から除外するURLを設定します。2つ以上の値を設定する場合は、コンマ(,)を区切り文字として使用します。
ノートこのオプションを通じて登録したURLは、ヒットマップ, トレース分析またはトランザクション情報画面で収集が除外されます。
-
trace_ignore_url_prefix String
トランザクション追跡から除外するURL prefixを設定します。2つ以上の値を設定する場合は、コンマ(,)を区切り文字として使用します。
ノートこのオプションを通じて登録したURLは、ヒットマップ, トレース分析またはトランザクション情報画面で収集が除外されます。
-
ignore_http_method String
既定値
PATCH,OPTIONS,HEAD,TRACE
設定したHTTPメソッド(Method)で要求されたトランザクション情報は収集しません。複数設定するには、コンマ(,)を区切り文字として利用してください。
whatap.conf# e.g. http_methodがOPTIONS、HEADであるトランザクションを「追跡」
ignore_http_method=PATCH,TRACE
# e.g. http_methodがOPTIONS、HEADであるトランザクションを「無視」
ignore_http_method=OPTIONS,HEADノートこのオプションを通じて登録したHTTPメソッドは、ヒットマップ, トレース分析またはトランザクション情報画面で収集が除外されます。
-
trace_tx_name_with_method_enabled Boolean
既定値
false
統計データでURLを変更したURL+methodで収集できます。統計またはTX検索メニューでURL+methodで確認できます。
例、/api/user+GET、/api/user+POST
非HTTPトランザクションのトレース
以下は、HTTP以外のトランザクションを追跡してモニタリングするためのオプションです。このオプションにより、ユーザーはバックグラウンド作業や他のプロトコルに対するトランザクションを細かく追跡できます。
-
trace_auto_transaction_enabled Boolean
既定値
false
トレース対象メソッドがトランザクション開始点(
Javax.http.httpservlet
,hook_service_*
)内で実行されない限り、収集されません。 この場合、トレース対象メソッドをトランザクションの開始点になるように設定します。ノート主に開発環境でバックグラウンドトランザクションのEND POINTを見つめるために使用します。
-
trace_auto_transaction_backstack_enabled Boolean
既定値
true
trace_auto_transaction_enabled
オプションの値がtrue
の場合、トランザクション開始時にStackTraceを記録します。これを通じて、トランザクションの開始点を見つけることができます。 -
trace_background_socket_enabled Boolean
既定値
true
トランザクションではなく、バックグラウンドスレッドによるソケットがオープンしたときも記録します。
-
async_stack_enabled Boolean
既定値
false
バックグラウンドスレッドに対するActive Stack機能を使用するかどうかを設定します。
-
async_thread_match String
アクティブスタックをダンプするバックグラウンドスレッド名を設定します。複数を設定するには、コンマ(,)を区切り文字として使用します。 名前を設定時、「Thread-*」のようにアスタリスク(*)を使用して比較パターンを使用できます。
-
async_thread_parking_class String
既定値
sun.misc.Unsafe
スタックの上位メソッドが
async_thread_parking
に登録されたクラス/メソッドの場合、スレッドがパーキング状態にあると判断してダンプを生成しません。 -
hook_service_patterns String
NON-Httpトランザクション追跡のための開始点パターンを設定します。ワイルドカード文字は使用できません。2つ以上の値を設定するにはコンマ(,)を区切り文字として利用してください。
-
hook_serivce_ignore_methods String
hook_service_patterns
で設定した項目のうち、出発点として不要なメソッドを追加できます。 -
hook_service_supers String
NON-HTTPトランザクション追跡のための始点の共通分母が特定のクラスのメソッドを継承した場合、共通分母のメソッドを設定します。メソッド全体のパスを入力してください。ワイルドカード(
*
)が使用でき、コンマ(,)を区切り文字として利用して複数のメソッドを登録できます。whatap.confhook_service_supers=a.b.C.method,a.b.C.*
-
hook_service_interfaces String
NON-HTTPトランザクション追跡のための開始点の共通分母が特定のインターフェイスを実装している場合は、これを設定します。
-
hook_service_access_public_enabled Boolean
既定値
true
NON-HTTP Demonプロセスのプロセスのトランザクションを設定する場合は、publicメソッドに対してのみAccess権限条件をon/offで設定します。
-
hook_service_access_private_enabled Boolean
既定値
true
NON-HTTP Demonプロセスのトランザクションを設定する場合は、privateメソッドに対してのみAccess権限条件をon/offで設定します。
-
hook_service_access_protected_enabled Boolean
既定値
true
NON-HTTP Demonプロセスのトランザクションを設定する場合は、protectedメソッドに対してのみAccess権限条件をon/offで設定します。
-
service_name_mode String
既定値
full
トランザクション名には、次のオプションを使用できます。
full
: Full Class名を使用class
: サービス名をClass名として使用method
: サービス名をMethod名として使用string
: サービス名を文字列の最初のパラメータとして使用します。arg
: パラメータで、service_name_index
オプションで設定されたインデックスにパラメータをサービス名として使用します。
マルチトランザクショントレース
以下は、アプリケーション間の呼び出しを追跡しモニタリングするためのオプションです。このオプションにより、ユーザーは複数のアプリケーション間の相互作用を理解できます。提供する様々なオプションにより、マルチトランザクションの追跡に対する詳細な動作を調整できます。
-
mtrace_enabled Boolean
既定値
true
マルチトランザクション追跡機能(Multi Transaction ID、以下MTID) の使用有無を設定します。MTIDを追跡することで、登録したすべてのアプリケーション間の呼び出しを確認できます。
-
mtrace_rate Percentage
既定値
10
最初のトランザクションが発生したときに発行されるMTIDの発行比率を設定するオプションです。
-
mtrace_caller_key String
既定値
x-wtap-mst
MTID追跡に使用するCaller Key Nameを設定します。
-
mtrace_callee_key String
既定値
x-wtap-tx
MTID追跡に使用するCallee Key Nameを定義します。
-
mtrace_send_url_length Int
既定値
80
Http Callerは、CalleeにそのURLを渡します。このとき、URLの長さが制限され、この長さの値が設定されます。
-
mtrace_callee_id_send_enabled Boolean
既定値
false
MTIDを追跡する場合、HTTPC呼び出しで発行されたCallee IDをトレースに表示します。
-
mtrace_callee_id_recv_enabled Boolean
既定値
false
MTID追跡時に受信したCallee IDのトレースを表します。
-
mtrace_alltx_enabled Boolean
既定値
false
log4jなどのロギングシステムに接続するために、すべてのトランザクションのMTIDを追跡できます。
-
mtrace_basetime Miliseconds
既定値
100
mtrace_alltx_enabled
オプションの値がtrue
の場合、多くのログが残る可能性があります。この場合、トレースログの量を減らす必要があります。 -
stat_mtrace_enabled Boolean
既定値
false
CallerとCalleeの相関統計を収集します。Callerに適用するとCallerの詳細情報が送信され、Calleeを適用するとurl単位のCaller-Calleeの呼び出し統計情報が収集サーバーに送信されます。
トレースデータサンプリング
以下は、トレースデータのサンプリングを調整し、データの送信有無を設定するオプションです。このオプションにより、ユーザーはアプリケーションの性能とデータ転送量を管理できます。
エージェント対応の範囲:Java Agent v2.2.4以降
-
trace_sampling_enabled Boolean
既定値
false
トレースデータサンプリングの収集有無を設定できます。
-
trace_sampling_tps Int
既定値
10000
トレースデータサンプリングの数を設定できます。設定したサンプリング数を超えるデータは送信せず、5秒ごとに初期化します。
-
trace_send_enabled Boolean
既定値
true
トレースデータの送信有無を設定できます。
-
debug_trace_samling Boolean
既定値
false
トレースデータサンプリングのデバッグオプションをオンまたはオフにできます。
トレースURL名を修正する
-
hook_tx_name_patterns / hook_tx_name_mode string
Java Agent v2.2.4 or later
特定URLおよび特定メソッド(method)を呼び出す時にトレースURLの名前を修正できます。例えば
io.home.test.TestController.test1
に登録したURLを呼び出すとtest100000()
メソッドが呼び出される場合、サービス画面から/api/100000+test1+test100000
で確認できます。hook_tx_name_mode
オプションを通じてclass、method、string、returnの中で1つを選択できます。whatap.conf# 呼び出しメソッドのフルパス、ワイルドカード(*)使用可能
hook_tx_name_patterns=ab.cd.ef.GH.ij
# class, method, string, returnから1つを選択
hook_tx_name_mode=method
特定のexceptionを無視する
-
ignore_exception_tx_pattern String
Java Agent v2.2.4 or later
特定のサービスで特定のexceptionを無視できるように設定できます。複数登録するときは、コンマ(,)を区切り文字として利用してください。
whatap.confignore_exception_tx_pattern=exception:service_url
# e.g. java.util.concurrent.TimeoutException:/api/test/timeout,org.springframework.web.util.NestedServletException:/api/posts/test/cexception
HttpURLConnectionを追跡する
次は、HttpURLConnection
クラスを使ってHTTP呼び出しを追跡するためのオプションです。
-
HttpURLConnection Boolean
既定値
true
HttpURLConnection
クラスのメソッドを追跡するためのオプションです。 -
hook_HttpURLConnection_startup_enabled Boolean
Java Agent v2.2.4 or later
既定値
false
HttpURLConnection
クラスのメソッドの最初の呼び出し時にも追跡できるように設定できます。 -
HttpURLConnection_weblogic Boolean
Java Agent v2.2.4 or later
既定値
true
Weblogicで
HttpURLConnection
でhttp呼び出しをする場合、weblogic.net.http.HttpURLConnection
クラスのメソッドを追跡するためのオプションです。 -
hook_HttpURLConnection_weblogic_startup_enabled Boolean
Java Agent v2.2.4 or later
既定値
false
weblogic.net.http.HttpURLConnection
クラスのメソッドの最初の呼び出し時にも追跡できるように設定できます。