JMX を介した監視と管理

Java Management Extensions(JMX)は、アプリケーションを監視および管理するための標準メカニズムを提供します。デフォルトでは、この機能は有効になっていません。spring.jmx.enabled 構成プロパティを true に設定することでオンにできます。Spring Boot は、最も適切な MBeanServer を ID が mbeanServer の Bean として公開します。Spring JMX アノテーション(@ManagedResource@ManagedAttribute@ManagedOperation)でアノテーションが付けられた Bean はすべてそれに公開されます。

プラットフォームが標準の MBeanServer を提供している場合、Spring Boot はそれを使用し、必要に応じてデフォルトで VM MBeanServer になります。それがすべて失敗した場合、新しい MBeanServer が作成されます。

詳細については、JmxAutoConfiguration [GitHub] (英語) クラスを参照してください。

デフォルトでは、Spring Boot は管理エンドポイントを org.springframework.boot ドメインの JMXMBean としても公開します。JMX ドメインでのエンドポイント登録を完全に制御するには、独自の EndpointObjectNameFactory 実装を登録することを検討してください。

MBean 名のカスタマイズ

通常、MBean の名前はエンドポイントの id から生成されます。例: health エンドポイントは org.springframework.boot:type=Endpoint,name=Health として公開されます。

アプリケーションに複数の Spring ApplicationContext が含まれている場合、名前が衝突することがあります。この問題を解決するには、spring.jmx.unique-names プロパティを true に設定して、MBean 名が常に一意になるようにします。

エンドポイントが公開される JMX ドメインをカスタマイズすることもできます。次の設定は、application.properties で実行する例を示しています。

  • プロパティ

  • YAML

spring.jmx.unique-names=true
management.endpoints.jmx.domain=com.example.myapp
spring:
  jmx:
    unique-names: true
management:
  endpoints:
    jmx:
      domain: "com.example.myapp"

JMX エンドポイントの無効化

JMX を介してエンドポイントを公開したくない場合は、次の例に示すように、management.endpoints.jmx.exposure.exclude プロパティを * に設定できます。

  • プロパティ

  • YAML

management.endpoints.jmx.exposure.exclude=*
management:
  endpoints:
    jmx:
      exposure:
        exclude: "*"