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) の自動化
マルチサーバー接続追跡の基本ポリシーの変更
エージェント間の呼び出し性能追跡の既定値をオンに変更しました。
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が機能する)
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_enabled
をtrue
に設定する必要があります。
logsink_enabled=true
Javaアプリケーションで発生するSystem.out、System.err、そしてフレームワークで実装したLOGBACK、LOG4Jログを収集します。 既定値はlogsink_enabled
の設定と同じです。
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
の設定と同じです。
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
は任意のログフレームワークの内容を伝えます。サイトで個別に作成されたログモジュールのログを追跡するときに使用します。
hooklog_custom_methods=com.greatshop.common.Log.print
ログ転送の設定
1つのラインの最大サイズや送信時のキューサイズを設定することが可能です。
logsink_queue_size=1000
logsink_line_size=512
ログ圧縮転送の活性化・非活性化
logsink_zip_enabled=true
設定でログを圧縮することができます。
logsink_zip_enabled=false
debug_logsink_zip_enabled=false
すべてのデータを圧縮するわけではなく、圧縮が送信されたかどうかを確認するために、debugオプションを使用します。
ログ圧縮転送の最小サイズ
送信データが100 bytes以下の場合、データは圧縮されません。
logsink_zip_min_size=100
ログ圧縮送信の最小サイズ
圧縮の場合、データをまとめて転送する必要があります。次のデータを待つことができないため、最大時間が指定されます。
max_buffer_size=65536
max_wait_time=2000
エージェントは、データ収集サイズがmax_buffer_size
の超過または、ログをまとめる待機時間が max_wait_time
を超過すると、ログデータをサーバーに送信します。
ログ圧縮アルゴリズムの選択
ログを圧縮転送する場合、圧縮アルゴリズムの変更が可能です。 基本アルゴリズムはGZIPで、lz4も選択可能です。
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のデバッグオプションの追加
エージェントから転送されるリアルタイムの性能データが転送有無をデバッグするためのオプションを追加しました。
debug_counterpack_enabled=true (既定値)
debug_counterpack_factor=3 (既定値)
debug_counterpack_recvtime=9000 (既定値)
エージェントのキューに待機状態のCounterPackが3以上増加または、最期に受信したサーバーデータの転送速度が9000msを超える場合はログとして表示します。
Text & ActiveStack情報の収集時に圧縮オプションを追加
TextデータとActiveStack情報を収集時に圧縮できるオプションを追加しました。
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できるようにオプションを追加しました。
agent_env_system_enabled=true
agent_env_jvm_enabled=true
プロセス環境変数とJava環境変数の表示可否をオプションで制御できます。
エージェント環境変数の検索時に、特定のキーを除くオプション
Java実行環境を表示有無の機能から特定の環境変数を制御できるオプションを追加しました。
agent_env_ignore_keys=USER,Address
「,」を区切り文字を使用してオプションを指定し、大文字と小文字を区別しません。
TOMCAT10対応
Tomcat10に jakartaライブラリを追跡するための対応範囲を拡張しました。 weavingオプションにtomcat10を指定して追跡することができます。
weaving=tomcat10
weavingオプションは、weaving_reserved
オプションを省略してv2.1.1から追加しました。
HttpCallの詳細情報を追跡
トランザクション追跡でHttpcallに関する追跡情報を追加しました。
OLDバージョンの収集サーバーでは、トランザクション詳細ステップ情報の確認できません。
OLD収集サーバーにデータを送信する場合は、trace_htpc_version
オプションをwhatap.confファイルに追加する必要があります。
trace_httpc_version=1