本文へスキップ

Java Agent v2.2.0

リリース:2022-11-01

New Feature(新機能)

  • virtualアプリケーションでlogsinkデータを生成する機能を追加

  • logsinkのstdoutログもtxid情報に接続できるように機能を追加

  • 2秒のデータ収集の機能を追加

    whatap.conf
    fast_perf_enabled=false
    fast_perf_interval=2000
    fast_perf_gc_enabled=true
    fast_perf_os_enabled=true
    debug_fast_perf_enabled=false

    収集データ

    • 経過時間
    • アクティブトランザクション
    • gc情報:gc件数、gc経過時間、old generation gc件数、old generation gc経過時間
    • OS情報
  • アクティブトランザクション件数によって通知を送信する機能を追加

    whatap.conf
    # アクティブトランザクション通知の設定有無
    too_many_actx_alert_enabled=false

    # アクティブトランザクション通知の無視時間(ms)
    too_many_actx_alert_silent_time=30000

    # アクティブトランザクション通知の基準件数
    too_many_actx_alert_count=50

    # アクティブトランザクション通知メッセージの表示件数
    too_many_actx_alert_msg_url_count=5

    # アクティブトランザクション通知の基準時間
    too_many_actx_alert_over_time=30000
    • アクティブトランザクション基準件数は、too_many_actx_alert_count >= (too_many_actx_alert_over_time / 5000)として決定されます

    • アクティブトランザクションの基準件数がそれ以上の場合は、too_many_actx_alert_msg_url_countのurl情報を通知メッセージに追加して通知を送信します。

  • プロファイルデバッグオプション:デバッグ対象パターンを登録した場合、プロファイルとエージェントログでスタックを確認できる機能を追加

    whatap.conf
    hook_method_debug_enabled=true
    hook_method_debug_patterns=
  • プラグイン利用クラスの追加

    • _{AGENT_HOME}/plugin/{...}.x_ファイルで使用するHashTableクラスを追加しました。

    • whatap.agent.api.Ref.hを使用するとHashTableを使用できます。

      Example
      Class hashTable = (Class) whatap.agent.api.Ref.h;
  • TTA BMT専用のクラスを追加:Javaエージェントのデモンストレーションに使用可能

    Java Class
    # map
    bmt.m.MyMap

    # datasource
    bmt.ds.MyDataSource
    bmt.ds.MyConnection

    # jdbc
    bmt.jdbc.Config
    bmt.jdbc.FakeBlob
    bmt.jdbc.FakeClob
    bmt.jdbc.FakeConnection
    bmt.jdbc.FakeDatabaseMetaData
    bmt.jdbc.FakeDriver
    bmt.jdbc.FakeCallableStatement
    bmt.jdbc.FakePreparedStatement
    bmt.jdbc.FakeResultSet
    bmt.jdbc.FakeStatement
    bmt.jdbc.FakeSocket
    bmt.jdbc.Lock
    Tracing
    // Connection Poolの追跡
    // ConnectionPoolASM
    target.put("bmt/ds/MyDataSource", MyDataSource.className);

    // Connection Poolの追跡
    // DBConCountCollectorThread
    add(new MyDataSource());

    // JDBC Connectionの追跡
    // JDBCConnectionOpenASM
    AsmUtil.add(reserved, "bmt/ds/MyDataSource", "getConnection()Ljava/sql/Connection;");

    // JDBC Statementの追跡
    // JDBCStatementASM
    target.add("bmt/jdbc/FakeStatement");

    // JDBC PreparedStatementの追跡
    // JDBCPreparedStatementASM
    target.add("bmt/jdbc/FakePreparedStatement");

    // JDBC ResultSetの追跡
    // JDBCResultSetASM
    target.add("bmt/jdbc/FakeResultSet");
  • エラーステップ

    • プロファイルにエラーステップを追加する機能を追加

    • 設定を追加してプロファイルにエラー関連情報を表示するステップを追加

    whatap.conf
    profile_error_step_enabled=false
  • jmx設定を追加:任意のjmx情報を追加で表示する機能を追加

    whatap.conf
    perfx_tomcat_enabled=false
    perfx_jmx_value_limit=100
    perfx_jmx_tag_from_objectname_enabled=false

    tomcat から jmx情報を収集し、メトリクス参照で test1、test2を確認するための設定は次のとおりです。

    whatap.conf
    perfx_jmx_enabled=true
    perfx_jmx@test1=Catalina:type=Connector,*
    perfx_jmx@test2=java.lang:type=GarbageCollector,*
    perfx_jmx_ignore@test2=LastGcInfo
    # perfx_debug_enabled=true
    # perfx_jmx_tag_from_objectname_enabled=false
  • oshiライブラリを使用して、プロセスのproc_mem_rssデータを追跡する機能を追加

    whatap.conf
    oshi_proc_mem_enabled=false
  • org.edb.jdbc.PgCallableStatementをjdbc statement追跡する機能を追加

  • OracleプロシージャにSQLパラメータの追跡機能

    • オラクルプロシージャにSQLパラメータを追跡できる機能を追加しました。

    • CallableStatementでSQLパラメータを追跡できるように機能を追加しました。

  • WeblogicでHttpURLConnectionのhttp呼び出しを行う場合、weblogic.net.http.HttpURLConnectionの使用を追跡する機能を追加しました。

    whatap.conf
    HttpURLConnection_weblogic=true
  • sigarライブラリを利用して、プロセスのネイティブメモリデータ(proc_mem_rss)を収集する機能を追加

  • 既存の30秒平均で収集したtpsデータを5秒平均で収集する機能を追加

    whatap.conf
    service_metrics_spike_enabled=false
  • プロファイルデータの圧縮送信機能を追加

    • プロファイルデータがprofile_zip_max_buffer_sizeサイズを超える場合、プロファイルデータを送信

    • キューにデータが蓄積されているか、または、profile_zip_max_wait_timeの値を超えた場合は、プロファイルデータが送信されます

    • プロファイルデータを送信する場合、キューのプロファイルデータがprofile_zip_min_sizeサイズ未満の場合を除いて、プロファイルデータを圧縮送信

    whatap.conf
    # プロファイルデータの圧縮有無
    profile_zip_enabled=true

    # プロファイルデータを持つキューのサイズ
    # ZipProfileThread.javaが使用するRequestQueueサイズを決定
    profile_zip_queue_size=1000

    # プロファイルデータを送信する待ち時間
    # 1000msが経つとプロファイルデータを転送
    profile_zip_max_wait_time=1000

    # プロファイルデータのバッファサイズ
    # プロファイルデータが1MBを超える場合は、データを転送
    profile_zip_max_buffer_size=1024*1024

    # プロファイルデータの圧縮有無を決定する最小サイズ
    # プロファイルデータが100byte未満の場合は圧縮しない
    profile_zip_min_size=100

    # プロファイルデータの圧縮デバッグ有無
    # プロファイルデータ送信に関する情報(ZipPackのstatus、recordCount、bufferサイズ、プロファイルデータキューのサイズ)をエージェントログに出力
    debug_profile_zip_enabled=false

    # プロファイルデータの圧縮デバッグログの出力間隔
    # プロファイルデータの圧縮デバッグオプションがオンになっている場合、5000ms間隔でプロファイルデータの転送関連情報をエージェントログに出力
    debug_profile_zip_interval=5000

Change(アップデート)

  • logsinkデータ転送サイクルのmax_wait_timeのオプション名からlogsink_max_wait_timeに修正

  • プラグインで収集するCustomCounter機能を既存のCustomCounterTaskの代わりにCustomTaskLoaderに置き換えます。

    whatap.conf
    custom_task_enabled=true
    custom_task_jarfile={full_path}
  • エージェント-proxyサーバーの時間差が10秒以上の場合、ログを出力するように機能を追加

  • 経過時間の測定

    • トランザクションとプロファイル経過時間の測定時、システム時間の代わりにJVM時間を使用するように修正

    • 経過時間を測定する場合、既存のSystem.currentTimeMillis()からSystem.nanoTime()を使用するように修正

  • エージェント-proxyサーバーに時間差がある場合、エージェントログにサーバー間の時間差を表示するように修正

    Agent log
    # 30秒以上差がある場合 
    "fatal warning time-reverse (時間差) ms"

    # 30秒未満の差がある場合
    "warning time-reverse (時間差) ms"
  • ユーザーカウントのオプションをwclient_xx形式に修正し、古いオプション名を使用できますが、v2.2.0以降は新しいオプション名を使用することをお勧めします。

    whatap.conf
    # 交替
    trace_user_method=IP
    wclient_trace_type=IP

    # 交替
    trace_user_jsession_key=JSESSIONID
    wclient_jsession_key=JSESSIONID

    # 交替
    trace_user_header_key=token
    wclient_header_key=token

    # 交替
    trace_user_cookie_limit=4000
    wclient_cookie_limit=4000

    # 交替
    trace_user_cookie_domain=
    wclient_cookie_domain=

    # 交替
    realtime_user_thinktime_max=300000
    wclient_thinktime_max=300000

    # 交替
    trace_user_using_ip=true
    wclient_using_ip=true

    # 交替
    user_header_ticket=
    wclient_header_ticket=

    # 追加
    wclient_max_count=70000
  • ユーザー数に関するカウント設定を反映と組み込みweavingコンポーネントの再コンパイル

  • CounterPackの経過時間の計算にSystem.nanoTime()を使用するよう修正

  • ログ出力ロゴにリリースバージョンを含む

    Logo
      _       ____  ______           
    | | / / /_/_ __/___ _____ ___ ___
    | | /| / / __ \/ / / __ `/ __ \ | _ \|_ )
    | |/ |/ / / / / / / /_/ / /_/ / | / / /
    |__/|__/_/ /_/_/ \__,_/ .___/ |_|_\/___|
    /_/
    The Best Observability in Java
  • Javaエージェントの統計収集の既定値を従来の5000から10000に修正、統計データの送信時に2秒ごとにチェック

    whatap.conf
    stat_tx_max_count=10000
  • 性能メトリクスを収集するoshiライブラリバージョンを既存のoshi-core-5.4.1からoshi-core-6.1.6にアップデート

  • 性能メトリクスを収集する{AGENT_HOME}のライブラリフォルダ名を変更

    • sigarライブラリフォルダ名を変更:lib->lib3

    • oshiライブラリフォルダ名を変更:lib2 -> lib4

Fixed(バグ修正)

  • ジャバエージェントの組み込みプラグインのWebfluxウィービングプラグインのread-onlyであるHttpHeaders項目にマルチトランザクション関連ヘッダー(header)を追加する場合に発生するエラーを修正

    webflux-5.1、webflux-5.2、webflux-5.3バージョンにすべて適用しました。

  • トランザクションとステップの経過時間が0未満の場合に発生するバグを修正

  • トランザクションとステップの経過時間が0未満の場合、経過時間が0と表示するバグを修正。

  • blocking_detect_count件数処理のバグを修正