JMX を介した監視と管理

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

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

spring.jmx.enabled は、Spring によって提供される管理 Bean にのみ影響します。他のライブラリ (Log4j2 [Apache] (英語) Quartz (英語) など) によって提供される管理 Bean の有効化は独立しています。

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

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

MBean 名のカスタマイズ

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

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

エンドポイントが公開される 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: "*"