本文へスキップ

Java Agent v2.1.0

2021-12-15

エージェント管理体系の修正

エージェントのバージョン体系の変更

エージェントのバージョン体系を2.1.xに変更しました。

Javaエージェントのデプロイパッケージの構成変更

whatap.agent-2.1.0以降からWhaTap LabsのJavaエージェントのパッケージ構成を変更しました。

  • whatap.agent-2.1.0.jar:エージェントのコアjar
  • whatap.agent.proxy-2.1.0.jar:WhaTapサーバーに接続が困難ため、迂回接続がサポートされています。
  • whatap-logsink-lz4-1.7.0.jar:ログモニタリング(LogSink) でデータを圧縮するためのプラグモジュール (デフォルトでは、JDKが提供するGZIPを使用)

JAVA対応範囲の拡大

Asmライブラリv9.2を使用することで、WhaTap LabsのJavaエージェントの対応範囲をjava14からjava17に拡大しました。

マルチサーバー追跡(mtrace) の自動化

マルチサーバー接続追跡の基本ポリシーの変更

エージェント間の呼び出し性能追跡の既定値をオンに変更しました。

whatap.conf
tx_caller_meter_enabled = true
sql_dbc_meter_enabled = true
httpc_host_meter_enabled = true
actx_meter_enabled = true
actx_slice_meter_enabled = true

tx_caller_meter_pkind_enabled = true
actx_meter_pkind_enabled = true

マルチサーバー追跡の自動適用

User Agentに基づいてブラウザに呼び出されたトランザクションのみ自動的に処理するよう変更しました。 (User Agent が「Moz」で始まる場合のみ、mtrace_rateが機能する)

whatap.conf
mtrace_auto_enabled=true (既定値)
mtraceable_user_agent=Moz (既定値)

マルチサーバー追跡比率の自動調整

明示的にmtrace_rateを指定しない場合、500tpsを超える環境で自動的にrateを下げる機能を追加しました。1つのプロセスでは、500tpsに基づくmtrace_rateは基本10%であり、tpsが増加するのと同じ割合でmtrace_rateを自動調整します。

サーバー(エージェント)間の依存関係情報の収集内容の変更

異なるプロジェクトに属するエージェント間で呼び出しが発生した場合、caller情報をOID単位で収集するよう修正しました。

以前のバージョンでは、PKIND(pcode+okind) 単位からPOID(pcode+oid)単位で収集するよう修正しました。

追跡情報の改善

DB接続のURLから「?」以下を削除

SQLの実行性能を追跡するためにJDBC接続情報を収集する際、「?」以下を削除しました。

URL正規化作業によるContextPathを反映

URL正規化作業によるContextPathを反映できるように変更しました。

URLパターンをサーバーに設定するように変更

WhaTap Labsでは、Serviceまたは HttpClient URLのパターンを、WhaTapサーバーで設定および、収集するように変更しました。

URL パターン設定対象

  • Service URL
  • HttpClient URL
ノート

既存エージェント設定方法では、Kubernetes環境での変更が難しいです。

エージェントログにONAME出力

エージェントログの出力を (日付)(PID)(メッセージ) の形式から (日付)(エージェント名)(メッセージ) の形式に変更しました。

20211224 05:12:31(GMT) [JA-161-111][UrlNorm] Service PathTree done. PathTree=0
20211224 05:12:31(GMT) [JA-161-111][HttpcUrlNorm] PathTree build done. PathTree=0

ユーザー定義カウンター追加

App Extra Counterのプラグインを使用できるように修正しました。 ただし、エージェントには、プラグインExtraCounter.xの実装が必要です。

  • ${WHATAP}/plugin/ExtraCounter.x
$pack.put("mycount",100);
$pack.put("myrandom",(float)( whatap.util.KeyGen.next()%100));

アプリケーションログモニタリング

アプリケーションログを統合モニタリングする機能を追加しました。Javaアプリケーションでログモニタリング機能を使用するには、whatap.agent-2.1.0以降のバージョンが必要です。

注意

whatap.agent-2.1.0以降のバージョン

WhaTapのアプリケーションログモニタリングの機能は、ログシンク(LogSink) です。

ログモニタリング機能の有効化

ログモニタリングでは、whatap.conf設定ファイルでlogsink_enabledtrueに設定する必要があります。

whatap.conf
logsink_enabled=true

Javaアプリケーションで発生するSystem.out、System.err、そしてフレームワークで実装したLOGBACK、LOG4Jログを収集します。 既定値はlogsink_enabledの設定と同じです。

whatap.conf
logsink_stdout_enabled=logsink_enabled
logsink_stderr_enabled=logsink_enabled
logsink_logback_enabled=logsink_enabled
logsink_log4j_enabled=logsink_enabled
logsink_tomcat_enabled=logsink_enabled
logsink_custom_enabled=logsink_enabled

フレームワークにおけるログ内容の収集

フレームワークで収集するログをモニタリングするには、モジュールでログを横取りするための設定とプラグインを追加する必要があります。フレームワークで収集するログの基本カテゴリ名を「AppLog」に設定します。

既定値は、hooklog_enabledの設定と同じです。

whatap.conf
hooklog_logback_enabled=hooklog_enabled;
hooklog_log4j_enabled=hooklog_enabled;
hooklog_tomcat_enabled=hooklog_enabled;
hooklog_custom_methods= (ユーザーメソッドでログ収集を設定)

ただし、hooklog_enabledは既定値としてlogsink_enabled値が適用され、起動前にtrueに設定する必要があります。

運用中にhooklog_enabled=trueに変更すると、再起動後にログを収集できます。

ノート

logsink_enabled=trueを変更後に再起動します。

ユーザーメソッドからログを収集する

hooklog_custom_methodsは任意のログフレームワークの内容を伝えます。サイトで個別に作成されたログモジュールのログを追跡するときに使用します。

whatap.conf
hooklog_custom_methods=com.greatshop.common.Log.print

ログ転送の設定

1つのラインの最大サイズや送信時のキューサイズを設定することが可能です。

whatap.conf
logsink_queue_size=1000
logsink_line_size=512

ログ圧縮転送の活性化・非活性化

logsink_zip_enabled=true設定でログを圧縮することができます。

whatap.conf
logsink_zip_enabled=false
debug_logsink_zip_enabled=false

すべてのデータを圧縮するわけではなく、圧縮が送信されたかどうかを確認するために、debugオプションを使用します。

ログ圧縮転送の最小サイズ

送信データが100 bytes以下の場合、データは圧縮されません。

whatap.conf
logsink_zip_min_size=100

ログ圧縮送信の最小サイズ

圧縮の場合、データをまとめて転送する必要があります。次のデータを待つことができないため、最大時間が指定されます。

whatap.conf
max_buffer_size=65536
max_wait_time=2000

エージェントは、データ収集サイズがmax_buffer_sizeの超過または、ログをまとめる待機時間が max_wait_timeを超過すると、ログデータをサーバーに送信します。

ログ圧縮アルゴリズムの選択

ログを圧縮転送する場合、圧縮アルゴリズムの変更が可能です。 基本アルゴリズムはGZIPで、lz4も選択可能です。

whatap.conf
logsink_zip_libpath=/whatap/whatap-logsink-lz4-1.7.0.jar
ノート

アルゴリズム選択は、logsink_zip_libpathにjarファイルを指定することで処理されます。

IBM Java6 Websphere環境でエージェントが動作しない問題を修正

IBM Java6 Websphere環境でWhaTap Agentが初期化および、データを収集できない問題を修正しました。

ノート

Management Factory.get PlatformMBean Server()ロジックで内部的にエラーが発生し、WhaTap Agentが初期化されない問題

CounterPackのデバッグオプションの追加

エージェントから転送されるリアルタイムの性能データが転送有無をデバッグするためのオプションを追加しました。

whatap.conf
debug_counterpack_enabled=true (既定値)
debug_counterpack_factor=3 (既定値)
debug_counterpack_recvtime=9000 (既定値)

エージェントのキューに待機状態のCounterPackが3以上増加または、最期に受信したサーバーデータの転送速度が9000msを超える場合はログとして表示します。

Text & ActiveStack情報の収集時に圧縮オプションを追加

TextデータとActiveStack情報を収集時に圧縮できるオプションを追加しました。

whatap.conf
active_stack_zip_enabled=false (既定値)
text_zip_enabled=false (既定値)

システムメトリクス収集ライブラリの変更とメモリデータ収集エラーの修正

OSHI追加

OSHI(Operating System and Hardware Information)は、システムインフラストラクチャメトリクスを収集するためのライブラリであり、頻繁にアップデートされるため、システム性能指標を収集するためのライブラリとして選択しました。 ただし、Java8以降の環境で使用できます。

  • oshi_enabled=false (既定値)
  • jdk8以降で使用可能
  • disk="."使用状況の測定及びアラート機能が可能

Sigar機能をdeprecated処理

5年以上更新されていないため、初期設定から除外しました。

  • sigar_enabled=false (既定値)
  • lib1に対して、aixのみを含む

Sigar機能を使用するためには、明示的にsigar_enabled=true設定後に使用できます。

Linux memory収集エラーの修正

Linux環境でのメモリ使用量と使用率の収集エラーを修正しました。

環境変数の照会機能をオプション処理

エージェントで環境変数を設定時、機能をON/OFFできるようにオプションを追加しました。

whatap.conf
agent_env_system_enabled=true
agent_env_jvm_enabled=true

プロセス環境変数とJava環境変数の表示可否をオプションで制御できます。

エージェント環境変数の検索時に、特定のキーを除くオプション

Java実行環境を表示有無の機能から特定の環境変数を制御できるオプションを追加しました。

whatap.conf
agent_env_ignore_keys=USER,Address

「,」を区切り文字を使用してオプションを指定し、大文字と小文字を区別しません。

TOMCAT10対応

Tomcat10に jakartaライブラリを追跡するための対応範囲を拡張しました。 weavingオプションにtomcat10を指定して追跡することができます。

whatap.conf
weaving=tomcat10
ノート

weavingオプションは、weaving_reservedオプションを省略してv2.1.1から追加しました。

HttpCallの詳細情報を追跡

トランザクション追跡でHttpcallに関する追跡情報を追加しました。

注意

OLDバージョンの収集サーバーでは、トランザクション詳細ステップ情報の確認できません。

OLD収集サーバーにデータを送信する場合は、trace_htpc_versionオプションをwhatap.confファイルに追加する必要があります。

whatap.conf
trace_httpc_version=1