このプロジェクトについて
BTraceは稼働中のJavaアプリケーションを動的にインストゥルメントし、実行時にトレーシングコードを注入することで、対象を再起動したり再コンパイルしたりせずに挙動を観察できます。このプロジェクトは本番環境での安全性を重視しており、スクリプトは検証され、READMEには検証済みスクリプトがアプリケーションをクラッシュさせることはないと記載されています。オーバーヘッドは低いと説明されており、これはバイトコード注入によって実現されています。
対応ランタイム: BTrace 3.0はJava 8~25+で動作し、Java 17より古いJVMに対する実行は非推奨です(3.xでは警告付きで依然として機能しますが、4.0での削除が予定されています)。2.xからのアップグレードに関する移行ガイドも用意されています。
READMEで強調されている機能:
- メソッドの入口/出口、タイミング、フィールドアクセス、アロケーションのためのプローブ。
- メソッドのタイミング計測、例外追跡、およびアノテーション付きJavaクラスとして記述するカスタムプローブ(例: @Selfや@Durationパラメータを伴う@OnMethod)。
- 迅速なデバッグのためのDTrace風ワンライナー: ロケーション(@entry、@return、@error)、アクション(print、count、time、stack)、フィルタ(duration閾値、引数比較)、およびワイルドカードまたは正規表現によるクラス/メソッドパターン。
インストールおよびパッケージングの選択肢には、JBang(推奨、公開カタログによるゼロインストール)、SDKMan、手動のバイナリアーカイブ、RPM/DEBパッケージ、Dockerイメージ(Debian、Alpine、Distrolessの各バリアント)があります。fat agent JARビルドは、Spark、Hadoop、Kubernetesなどの環境向けに単一JARでのデプロイをサポートし、選択した拡張機能を埋め込むためのGradleプラグイン(io.btrace.fat-agent)も提供します。Mavenスクリプトコンパイルプラグインは別リポジトリにあります。
拡張機能は、分離された実装を持つ安定したブートストラップAPIを通じて機能を追加します。従来のlibs/profilesメカニズムは削除されており、統合は拡張機能としてパッケージ化する必要があります。権限モデルは、デフォルト権限(MESSAGING、AGGREGATION、JFR_EVENTS、PROFILING)、標準権限(FILE_READ、SYSTEM_PROPS、THREAD_INFO、MEMORY_INFO)、特権権限(FILE_WRITE、NETWORK、THREADS、NATIVE、EXEC、REFLECTION、CLASSLOADER、UNLIMITED_MEMORY)を区別します。特権の付与はエージェントオプションまたはポリシーファイルを介して設定され、許可/拒否リストが拡張機能のリンクを制御し、ブロックされた実装はSHIMにフォールバックするため、プローブは安全に継続されます。btracex CLIは拡張機能とポリシーを検査および管理し、許可/拒否状態を閲覧および切り替えるための対話型ターミナルUIも含みます。
ドキュメントには、クイックリファレンス、入門チュートリアル、完全なチュートリアル、ワンライナーガイド、拡張機能開発ガイド、およびドキュメンテーションハブが含まれます。コミュニティチャネルはSlack、Gitter、GitHub Issuesです。コントリビューションにはOracle Contributor Agreementへの署名が必要です。Apache 2.0の下でライセンスされ、ASM、JCTools、hppcrtを用いて構築されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.