jstatd

Section: モニタリング・ツール (1)
Updated: 2013年11月21日
Page Index
 

名前

jstatd - Java仮想マシン(JVM)をモニターし、リモート・モニタリング・ツールがJVMに接続できるようにします。このコマンドは試験的なもので、サポートされていません。  

概要

jstatd [ options ]

options

コマンド行オプション。オプションを参照してください。
 

説明

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

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

オプション

-nr

既存のRMIレジストリが見つからない場合、jstatdプロセス内に内部RMIレジストリを作成しないようにします。

-p port

RMIレジストリがあると予想されるポート番号です。見つからない場合は、-nrオプションが指定されていなければ作成されます。

-n rminame

RMIレジストリにおいて、リモートRMIオブジェクトがバインドされる名前です。デフォルト名はJStatRemoteHostです。複数のjstatdサーバーが同じホスト上で起動している場合、各サーバーのエクスポートしたRMIオブジェクトの名前は、このオプションを指定することによって、一意の名前にすることができます。ただし、このオプションを使用する場合、モニタリング・クライアントのhostidおよびvmid文字列に、その一意のサーバー名を含める必要があります。

-Joption

JVMにoptionを渡します。optionには、Javaアプリケーション起動ツールのリファレンス・ページに記載されているオプションを1つ指定します。たとえば、-J-Xms48mと指定すると、スタートアップ・メモリーは48MBに設定されます。java(1)を参照してください。
 

セキュリティ

jstatdサーバーは、適切なネイティブ・アクセス権を持つJVMのみをモニターできます。したがって、jstatdプロセスは、ターゲットJVMと同じユーザー資格証明で実行されている必要があります。Solaris、LinuxおよびOS Xオペレーティング・システムにおけるrootユーザーなどの一部のユーザー資格証明は、システム上の任意のJVMによってエクスポートされたインストゥルメンテーションへのアクセス権を持っています。このような資格証明で実行されているjstatdプロセスは、システム上のすべてのJVMをモニターできますが、セキュリティ上の別の問題が起こります。

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

jstatdサーバーは、他のセキュリティ・マネージャがインストールされていない場合には、RMISecurityPolicyのインスタンスをインストールします。そのため、セキュリティ・ポリシー・ファイルを指定する必要があります。ポリシー・ファイルは、http://docs.oracle.com/javase/8/docs/technotes/guides/security/PolicyFiles.htmlにある 「デフォルトのPolicyの実装とポリシー・ファイルの構文」に準拠している必要があります

次のポリシー・ファイルでは、セキュリティ例外を発生せずに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セッションを起動します。

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

この例では、ポート2020の外部RMIレジストリを使用して、AlternateJstatdServerNameにバインドされているjstatdセッションを起動します。

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

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

この例では、外部RMIレジストリがない場合に作成しないjstatdセッションを起動します。この例では、RMIレジストリがすでに実行されていると想定しています。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
 
 

関連項目

java(1)

jps(1)

jstat(1)

rmiregistry(1)


 

Index

名前
概要
説明
オプション
セキュリティ
リモート・インタフェース
内部RMIレジストリ
外部RMIレジストリ
インプロセスRMIレジストリの作成の停止
RMIロギングの有効化
関連項目