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