BT

CRaSH: JVMを監視するコマンドラインシェル

| 作者: Kostis Kapelonis フォローする 0 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2012年7月1日. 推定読書時間: 3 分 |

あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

原文(投稿日:2012/06/27)へのリンク

CRaSH (Common ReusAble SHell)は起動中のJavaプロセスに接続しその内部を調べることができるユーティリティだ。単なるJavaで書かれたシェル(BeanShellのような)ではなく、Java Management Extensions (JMX)と同じように、実行中のJVMアプリケーションをリモートから管理、監視できる。

JavaアプリケーションでJMXを使う場合、明示的に設定をする必要がある。JavaにはデフォルトでJConsoleのようなグラフィカルなツールが含まれており、最近では、実行中のJavaアプリケーションに接続して、メモリ使用やスレッドなどの統計情報やJVMのプロパティなどを収集できるVisualVMも付属している。

また、JMXを使うと開発者や管理者は実行中のアプリケーションの設定を変更できる。この機能はMBeanインターフェイスとして開発者が公開した機能に対してのみ提供される。しかし、Java 6からはAttach APIをプログラムで操作することで、実行中のJVMに直接接続できる監視アプリケーションを作成するできる。例えば、jtopはCPUの利用を監視する。ただし、このAttach APIはHotSpot VMにだけ適用できる。

CRaSHはこの機能のさらに推し進める。Attach APIを利用し、コマンドラインシェル(内部コマンド、コマンド履歴や自動補完を搭載した)を提供する。このシェルは実行中のJVMに接続し、そのJVMに対してGroovyスクリプトを実行できる。これによってそのJVMの内部を詳細に監視できる。

CRaSHがビルドインでサポートしているのは次の通り。

  • VMのプロパティの調査と変更、ガベージコレクタの実行。
  • JDBCリソースへのSQLアクセス
  • telnet/SSHを使ったアクセス(JMXはJava RMIを使うが、ファイアウォールの問題がある)
  • メモリ情報の調査
  • JVMスレッドの管理
  • 外部のGroovyスクリプトの読み込み
  • JCR(例えばJackrabbit)へのアクセス
  • ログ出力

CRaSHの中核の機能は動画で紹介されている。この動画ではJVMに対してGroovyのスクリプトを実行している。また、別の動画では、もっと現実的な使い方を紹介している。この動画では、CRaSHでアプリケーションサーバに接続し、JDBCコマンドを使ってデータソースにSQLを発行している。CRaSHは、実行中のJVMと開発者が監視用の"レシピ"として作成したGroovyスクリプトの間にある薄いレイヤなのだ。

CRaSHの想定される利用例は、

  • 実行中のJVMアプリケーションを監視する(JMXと同じように管理に使う)
  • 実行中のJVMアプリケーションのチューニングをする(開発者向けの使い方)
  • 実行中のJVMアプリケーションのデバッグ/ロギング(特定の処理の後で)
  • 既存のJVMアプリケーションにコマンドラインインターフェイスを追加する(上級者向けの使い方)
  • 実行中のアプリケーションに"プラグイン"を簡単に追加する
  • 実行中のJVMアプリケーションの一部分のモックとして使ったり、I/O処理に割り込みをする
  • 異なるリソース/サービスをひとつの観点から編成する
  • JavaとGroovyのコードをつなぐ

CRaSHは年初にバージョン1.0をリリースし、基本的な使い方を紹介したオンラインデモを提供している。より詳しい情報はドキュメントJavadocGoogleユーザグループを参照。ソースコードはGitHubにある。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT