jstatd - 仮想マシン jstat デーモン

形式

jstatd [ options ]
options
コマンド行オプション。オプションは任意の順序で指定できます。重複または矛盾するオプションがある場合、最後に指定したオプションが優先されます。

説明

jstatd ツールは、計測された HotSpot Java 仮想マシン (JVM) の作成と終了を監視し、ローカルシステム上で実行している Java 仮想マシンに、リモート監視ツールが接続できるようにするためのインタフェースを提供する RMI サーバアプリケーションです。

jstatd サーバでは、ローカルホストに RMI レジストリが存在することが必要になります。jstatd サーバは、デフォルトポートまたは -p port オプションで指定されたポート上の RMI レジストリに接続しようとします。RMI レジストリが見つからない場合、-p port オプションで指定されたポート、または -p port が省略されている場合は、デフォルト RMI レジストリにバインドされた jstatd アプリケーション内に、1 つの RMI レジストリが作成されます。内部 RMI レジストリの作成は、-nr オプションを指定することによって禁止することができます。

注: このユーティリティはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。

オプション

jstatd コマンドは次のオプションをサポートしています。

-nr
既存の RMI レジストリが見つからない場合、jstatd プロセス内に内部 RMI レジストリを作成しないようにします。
-p  port
RMI レジストリがあると予想されるポート番号です。見つからない場合は、-nr が指定されていなければ作成されます。
-n  rminame
RMI レジストリにおいて、リモート RMI オブジェクトがバインドされる名前です。デフォルト名は JStatRemoteHost です。複数の jstatd サーバが同じホスト上で起動している場合、各サーバのエクスポートした RMI オブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、監視クライアントの hostid および vmid 文字列に、その一意のサーバ名を含める必要があります。
-Joption
javac が呼び出す java 起動ツールに、option を渡します。たとえば、-J-Xms48m と指定すると、スタートアップメモリは 48M バイトに設定されます。-J を使って、Java で記述されたアプリケーションを実行する背後の VM にオプションを渡すことは、よく行われています。

セキュリティ

jstatd サーバは、有効なネイティブアクセス権を持つ JVM だけを監視できます。したがって、jstatd プロセスは、ターゲット JVM と同じユーザ資格で実行している必要があります。一部のユーザ資格は、Unix(TM) ベースのシステムにおける root ユーザのように、システム上の任意の JVM によってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格で実行している jstatd プロセスは、システム上のすべての JVM を監視できますが、セキュリティ上の別の問題が起こります。

jstatd サーバは、リモートクライアントの認証を一切与えません。そのため、jstatd サーバプロセスを実行すると、jstatd プロセスがアクセス権を持つすべての JVM によるインストゥルメンテーションのエクスポートを、ネットワーク上のすべてのユーザに公開することになります。この無防備な状態は、環境的に望ましくない場合があります。特に実稼働環境または安全でないネットワークでは、jstatd プロセスを起動する前に、ローカルセキュリティポリシーを検討する必要があります。

jstatd サーバは、他のセキュリティマネージャがインストールされていない場合には、RMISecurityPolicy のインスタンスをインストールします。そのため、セキュリティポリシーファイルを指定する必要があります。ポリシーファイルは、デフォルトポリシー実装のポリシーファイルの構文に準拠する必要があります。

次のポリシーファイルの場合、jstatd サーバは一切のセキュリティ例外を使用せずに実行できます。このポリシーは、すべてのコードベースへのあらゆるアクセス権を認めるポリシーよりも自由度は低いですが、jstatd サーバを実行するために最低限必要なアクセス権しか認めないポリシーよりも自由度は高くなっています。

grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};

このポリシーを使用するには、このテキストを jstatd.all.policy というファイルにコピーし、次のように jstatd サーバを実行します。

jstatd -J-Djava.security.policy=jstatd.all.policy

より厳しいセキュリティを実施するサイトの場合、カスタムポリシーファイルを使用して、特定の信頼できるホストまたはネットワークにアクセスを制限することができます。ただし、このような方法は、IP アドレスの盗聴攻撃を受けやすくなります。セキュリティの問題について、カスタマイズしたポリシーファイルでも対処できない場合は、jstatd サーバを実行せずに、jstatjps ツールをローカルで使用することがもっとも安全な方法になります。

リモートインタフェース

jstatd プロセスがエクスポートするインタフェースは、独自に開発したものであり変更される予定です。ユーザおよび開発者は、このインタフェースへの書き込みを行わないでください。

次に jstatd を起動する例を紹介します。jstatd スクリプトによって、サーバはバックグラウンドで自動的に起動します。

内部 RMI レジストリの使用

この例は、内部 RMI レジストリを使用した jstatd の起動を表しています。この例では、デフォルトの RMI レジストリポート (ポート 1099) には、他のサーバはバインドされていないと想定しています。

jstatd -J-Djava.security.policy=all.policy

外部 RMI レジストリの使用

この例は、外部 RMI レジストリを使用した jstatd の起動を表しています。

rmiregistry&
jstatd -J-Djava.security.policy=all.policy

この例は、ポート 2020 の外部 RMI レジストリを使用した jstatd の起動を表しています。

rmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020

この例は、AlternateJstatdServerName の名前にバインドされた、ポート 2020 の外部 RMI レジストリを使用した jstatd の起動を表しています。

rmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName

インプロセス RMI レジストリの作成の禁止

この例は、RMI レジストリが見つからない場合に RMI レジストリを作成しない jstatd の起動を表しています。この例では、RMI レジストリがすでに実行していると想定しています。実行していない場合は、該当するエラーメッセージが表示されます。

jstatd -J-Djava.security.policy=all.policy -nr

RMI ログ機能の有効化

この例は、RMI ログ機能を有効にした jstatd の起動を表しています。この方法は、トラブルシューティングまたはサーバ活動の監視に役立ちます。

jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true

関連項目


Copyright © 2003 Sun Microsystems, Inc.All Rights Reserved.

Sun
Java ソフトウェア