jstatd(1)

名前
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サーバーを実行せずに、jstatとjpsツールをローカルで使用することが最も安全な方法になります。

リモート・インタフェース

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)