JMX(Java Management Extensions)は、Javaアプリケーションを監視および管理するための強力なフレームワークです。 MBEAN(マネージドビーンズ)と呼ばれる管理可能なリソースとして、アプリケーション固有のメトリックと機能を管理できるようにすることができます。これらのMBEANは、JConsoleやカスタムアプリケーションなどのツールを使用して、リモートでアクセスして操作できます。
JMXの使用方法の内訳は次のとおりです。
javax.management.MXBean
インターフェイスを実装するクラスを作成するか、 javax.management.StandardMBean
クラスを拡張する必要があります。これらのクラスは、管理のために公開する属性と操作を定義します。属性は、監視するデータ(メモリ使用量、スレッドカウントなど)を表し、操作は実行できるアクション(サービスの再起動、ガベージコレクション)を表します。ManagementFactory
を使用して取得されるMBeanServer
オブジェクトを使用して行われます。 MBean名前を提供することにより、MBeanを登録します。これは、MBeanサーバー内で一意に識別します。JMXConnector
アクセスできます。これらのツールとクライアントを使用すると、属性を監視し、登録されたMBEANの操作を呼び出すことができます。<code class="java">import javax.management.*; public class SimpleCounter implements SimpleCounterMBean { private int count = 0; @Override public int getCount() { return count; } @Override public void increment() { count ; } public static void main(String[] args) throws MalformedObjectNameException, InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException { SimpleCounter counter = new SimpleCounter(); ObjectName objectName = new ObjectName("com.example:type=SimpleCounter"); MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); mbs.registerMBean(counter, objectName); System.out.println("MBean registered."); } //Interface for the MBean public interface SimpleCounterMBean { int getCount(); void increment(); } }</code>
この例は、単純なカウンターMbeanを示しています。このコードをコンパイルして実行してから、JConsoleを使用して実行中のJVMに接続し、 count
属性を表示し、 increment
操作を呼び出します。
JMX対応アプリケーションを保護することは、適切に保護されていない場合に悪用される可能性のある管理機能を公開するため、重要です。ここにいくつかのベストプラクティスがあります:
JMXAuthenticator
実装を使用して行われ、 java.rmi.server.hostname
およびcom.sun.management.jmxremote.port
プロパティの構成を使用して行われます。特定のMBEANと操作にアクセスできるユーザーを制御するための認可を実装します。これは、 JMXAuthorizer
実装を使用して実行できます。JMX監視をPrometheusやGrafanaなどのツールと統合するには、JMXメトリックをこれらのツールが理解できる形式に変換するJMXエクスポートが必要です。いくつかのオプションが存在します:
選択した方法に関係なく、一般的なプロセスには次のものが含まれます。
はい、JMXは、Javaアプリケーションのリモート管理とトラブルシューティング用に特別に設計されています。関連するMBEANを露出させることにより、リモートで次のことができます。
リモートアクセスは、JMXサーバーをリモート接続を受け入れるように構成し、JMXクライアント(JConsoleやカスタムクライアントなど)を使用してリモートJMXサーバーに接続することで実現されます。前述のベストプラクティスを使用して、このリモートアクセスを保護することを忘れないでください。 Javaアプリケーションの保守性と運用効率を大幅に改善し、トラブルシューティングする能力が発生します。
以上が監視と管理にJavaのJMX(Java Management Extensions)を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。