HTTP 経由の監視と管理

Web アプリケーションを開発している場合、Spring Boot Actuator はすべての有効なエンドポイントが HTTP 経由で公開されるように自動構成します。デフォルトの規則では、URL パスとして /actuator のプレフィックスを持つエンドポイントの id を使用します。例: health は /actuator/health として公開されます。

アクチュエーターは、Spring MVCSpring WebFlux、および Jersey でネイティブにサポートされています。Jersey と Spring MVC の両方が使用可能な場合は、Spring MVC が使用されます。
Jackson は、API ドキュメントに記載されている正しい JSON レスポンスを取得するために必要な依存関係です。

管理エンドポイントパスのカスタマイズ

管理エンドポイントのプレフィックスをカスタマイズすると便利な場合があります。例: アプリケーションがすでに別の目的で /actuator を使用している可能性があります。次の例に示すように、management.endpoints.web.base-path プロパティを使用して、管理エンドポイントのプレフィックスを変更できます。

  • プロパティ

  • YAML

management.endpoints.web.base-path=/manage
management:
  endpoints:
    web:
      base-path: "/manage"

上記の application.properties の例は、エンドポイントを /actuator/{id} から /manage/{id} に変更します(たとえば、/manage/info)。

別の HTTP ポートを使用してエンドポイントを公開するように管理ポートが構成されていない限り、management.endpoints.web.base-path は server.servlet.context-path (サーブレット Web アプリケーションの場合)または spring.webflux.base-path (リアクティブ Web アプリケーションの場合)に関連しています。management.server.port が構成されている場合、management.endpoints.web.base-path は management.server.base-path を基準にしています。

エンドポイントを別のパスにマップする場合は、management.endpoints.web.path-mapping プロパティを使用できます。

次の例では、/actuator/health を /healthcheck に再マッピングします。

  • プロパティ

  • YAML

management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=healthcheck
management:
  endpoints:
    web:
      base-path: "/"
      path-mapping:
        health: "healthcheck"

管理サーバーポートのカスタマイズ

デフォルトの HTTP ポートを使用して管理エンドポイントを公開することは、クラウドベースのデプロイにとって実用的な選択です。ただし、アプリケーションが独自のデータセンター内で実行される場合は、別の HTTP ポートを使用してエンドポイントを公開することをお勧めします。

次の例に示すように、management.server.port プロパティを設定して HTTP ポートを変更できます。

  • プロパティ

  • YAML

management.server.port=8081
management:
  server:
    port: 8081
Cloud Foundry では、デフォルトで、アプリケーションは HTTP ルーティングと TCP ルーティングの両方についてポート 8080 でのみリクエストを受信します。Cloud Foundry でカスタム管理ポートを使用する場合は、アプリケーションのルートを明示的に設定して、トラフィックをカスタムポートに転送する必要があります。

管理固有の SSL の構成

カスタムポートを使用するように構成されている場合は、さまざまな management.server.ssl.* プロパティを使用して、独自の SSL を使用して管理サーバーを構成することもできます。例: 次のプロパティ設定が示すように、そうすることで、メインアプリケーションが HTTPS を使用している間、管理サーバーを HTTP 経由で使用できるようになります。

  • プロパティ

  • YAML

server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:store.jks
server.ssl.key-password=secret
management.server.port=8080
management.server.ssl.enabled=false
server:
  port: 8443
  ssl:
    enabled: true
    key-store: "classpath:store.jks"
    key-password: "secret"
management:
  server:
    port: 8080
    ssl:
      enabled: false

または、メインサーバーと管理サーバーの両方で SSL を使用できますが、次のようにキーストアが異なります。

  • プロパティ

  • YAML

server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:main.jks
server.ssl.key-password=secret
management.server.port=8080
management.server.ssl.enabled=true
management.server.ssl.key-store=classpath:management.jks
management.server.ssl.key-password=secret
server:
  port: 8443
  ssl:
    enabled: true
    key-store: "classpath:main.jks"
    key-password: "secret"
management:
  server:
    port: 8080
    ssl:
      enabled: true
      key-store: "classpath:management.jks"
      key-password: "secret"

管理サーバーのアドレスのカスタマイズ

management.server.address プロパティを設定することにより、管理エンドポイントを使用できるアドレスをカスタマイズできます。これを行うと、内部ネットワークまたは ops に面したネットワークでのみリッスンする場合、または localhost からの接続のみをリッスンする場合に役立ちます。

ポートがメインサーバーのポートと異なる場合にのみ、別のアドレスでリッスンできます。

次の例 application.properties は、リモート管理接続を許可しません。

  • プロパティ

  • YAML

management.server.port=8081
management.server.address=127.0.0.1
management:
  server:
    port: 8081
    address: "127.0.0.1"

HTTP エンドポイントを無効にする

HTTP を介してエンドポイントを公開したくない場合は、次の例に示すように、管理ポートを -1 に設定できます。

  • プロパティ

  • YAML

management.server.port=-1
management:
  server:
    port: -1

次の例に示すように、management.endpoints.web.exposure.exclude プロパティを使用してこれを実現することもできます。

  • プロパティ

  • YAML

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