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を超過すると、ログデータをサーバーに送信します。