本文へスキップ

トランザクション

トランザクションとは、ユーザーのブラウザからのリクエストを処理するためのサーバーサイドの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.conf
    hook_method_patterns=a.b.C1.*
    ノート
    • このオプションで登録したメソッドは、トレース分析またはトランザクション情報画面からMethodのステップで確認できます。

    • なるべく小さい範囲に適用してください。広い範囲に適用すると、アプリケーションの性能が低下する恐れがあります。

  • hook_method_supers String

    特定のクラスを継承するメソッドの応答時間を測定する場合は、Super Classを設定します。 クラスFullNameを設定し、対象が複数ある場合は、コンマ(,)で区切ります。

    whatap.conf
    hook_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.BizException
    Tips

    エラークラス収集 / ヒットマップ表示レベル: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:200
    Tips

    エラークラス収集 / ヒットマップ表示レベル:INFO(青色) / エラー統計を含む

  • ignore_exceptions String

    登録したExceptionエラを無視します。

    whatap.conf
    # example
    ignore_exceptions=com.home.test.exception.BizException
    Tips

    エラークラス無視 / ヒットマップ表示レベル:INFO(青色) / エラー統計を含まない

  • transaction_status_error_enable Boolean

    既定値 true

    正常応答ではなくHTTP401、403のようなステータスコードがリターンされた場合、エラーとして処理するかどうかを設定します。

  • status_ignore String

    無視しようとするHTTPステータスコードを設定できます。 複数の値を対象とする場合は、コンマ(,)を区切り文字として使用してください。

    whatap.conf
    # example
    status_ignore=408,500
    Tips

    Statusエラー無視 / ヒットマップ表示レベル:INFO(青色) / エラー統計を含まない

  • status_ignore_set String

    whatap.error.STATUS_ERRORを無視します。 複数の値を対象とする場合は、コンマ(,)を区切り文字として使用してください。

    whatap.conf
    # example
    status_ignore_set=/api/test/timeout/{time}:408,/error:500
    Tips

    Status エラーセット無視 / ヒットマップ表示レベル: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,500
    Tips

    HTTPステータスエラーコード無視 / エラー統計を含まない

  • 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:500
    Tips

    HTTPステータスエラーコード無視 / エラー統計を含まない

  • 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/ba/{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つのパラメータは、HttpServletRequestHttpServletResponseを設定できます。

  • 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.conf
    hook_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オプションを通じてclassmethodstringreturnの中で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.conf
    ignore_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クラスのメソッドの最初の呼び出し時にも追跡できるように設定できます。