0

サーバー上のリモート JVM プロセスを監視する、すぐに利用できるオープン ソース ツールはありますか。

理想的には、JMX 経由でテレメトリを読み取り、情報を表示するきれいな GUI を使用して履歴データベースに保存します。

私が欲しい重要な情報は、メモリ、gc時間、スレッド、クラスなどです

4

2 に答える 2

5

JDK には、パフォーマンスを監視するための 2 つのグラフィカル ツールが用意されています。

  • jVisualVMと
  • jConsole

どちらも JDK の bin ディレクトリにあります。

残念ながら、どちらも定期的にスナップショットをプログラムで保存することはできず、スクリプトに使用できるコマンド ライン バージョンも提供していません。

優れたオープンソース ソリューションはjmxmonitor です

JMX モニター プロジェクトは、一連の JMX サービスを監視するためのデーモン (またはコマンドライン) ツールを提供します。

これらは、処理する外部ツール (Nagios や Cacti など) のローリング ログ ファイルに出力されます。

別のオプションはZabbixです。

Zabbix は、ネットワークの多数のパラメーターとサーバーの状態と整合性を監視するソフトウェアです。Zabbix は柔軟な通知メカニズムを使用しており、ユーザーは事実上あらゆるイベントに対して電子メール ベースのアラートを設定できます。これにより、サーバーの問題に迅速に対応できます。Zabbix は、保存されたデータに基づく優れたレポート機能とデータ視覚化機能を提供します。これにより、Zabbix はキャパシティ プランニングに最適です。

ただし、データベースへの直接の「基本的なデータ ロギング」に関心がある場合、特に複数のVMを監視する場合は、おそらく独自のログを作成することが最善の解決策であり、それほど難しくありません。以下を参照してください:プラットフォーム サーバーJMX を使用した監視と管理

例:

final JMXServiceURL address = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + SERVER_JMXPORT + "/jmxrmi");
final String[] credentials = new String[] { ADMIN, PASSWORD };
final Map<String, String[]> props = new HashMap<String, String[]>();
props.put("jmx.remote.credentials", credentials);

final JMXConnector connector = JMXConnectorFactory.connect(address, props);
final MBeanServerConnection mbs = connector.getMBeanServerConnection();

//Show the name and the state of all the threads
final ThreadMXBean threadBean = ManagementFactory.newPlatformMXBeanProxy(mbs, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class);
final long[] threadIDs = threadBean.getAllThreadIds();
final ThreadInfo[] threadDataset = threadBean.getThreadInfo(threadIDs);
for (final ThreadInfo threadData : threadDataset) {
    if (threadData != null) {
        System.out.println(threadData.getThreadName() + " " + threadData.getThreadState());
    }
}
System.out.println();
System.out.println("Current: " + threadBean.getThreadCount() + " peak " + threadBean.getPeakThreadCount());

データをデータベースに保存したら、そのデータを分析用にグラフ形式で表現するためのツールがたくさんあります。

于 2012-11-05T13:14:43.070 に答える
1

Java VisualVM は、Java 仮想マシン (JVM) で実行されている Java アプリケーションに関する詳細情報を表示し、これらのアプリケーションのトラブルシューティングとプロファイリングを行うためのビジュアル インターフェイスを提供するツールです。

以下のリンクを見てください。

  1. Java VisualVM
  2. jvisualvm - Java 仮想マシンの監視、トラブルシューティング、およびプロファイリング ツール
于 2012-11-05T13:17:54.550 に答える