Spring Boot ActuatorはSpring Bootのサブプロジェクトであり、実行中のSpring Bootアプリケーションの監視と管理機能を提供します。コードを追加することなく、アプリケーションの追跡、監視、データ収集、トラフィック、データベースの状態を確認できます。
Spring Actuatorを設定したプロジェクトでは、デフォルトでいくつかのエンドポイントが利用可能になり、アプリケーションの管理と監視が可能です。さらに制御が必要な場合は、新しいエンドポイントを追加できます。
Spring BootでのActuatorの設定
Actuatorを使用するには、spring-boot-starter-actuator
依存関係を pom.xml
(Maven) または build.gradle
(Gradle) ファイルに追加するだけです。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
依存関係を追加してアプリケーションを再起動すると、Actuatorが有効になります。
Spring Boot Actuatorは、アプリケーションに関する情報にアクセスするためのエンドポイントを提供します。これらのエンドポイントへのアクセスは、HTTPを介して実行できます。
重要なエンドポイントには、次のものがあります。
- /health: アプリケーションの「ヘルス」、例えばデータベース接続の状態などの情報を提供します。このエンドポイントは、デフォルトで認証を必要としません。
- /info: アプリケーションのカスタム情報、例えばバージョン、説明などを表示します。
- /metrics: アプリケーションの現在の「メトリクス」情報、例えばメモリ使用量、スレッド数などを提供します。
- /loggers: アプリケーションのログ設定を表示し、変更できます。
アプリケーションの状態に関する詳細情報は、コンテキストで設定された HealthIndicator
インターフェースを実装するBeanから収集されます。
例えば、/health
エンドポイントは、次のような単純な情報を返すことができます。
{
"status": "UP"
}
デフォルトのエンドポイントを使用するだけでなく、カスタマイズして新しいエンドポイントを作成することもできます。カスタマイズには、エンドポイントの id
、enabled
状態(有効/無効)、および sensitive
(機密性 – 認証が必要かどうか)の変更が含まれます。
新しいエンドポイントを作成するには、Endpoint<T>
インターフェースを実装し、そのエンドポイントの処理ロジックを定義する必要があります。
Spring Boot Actuatorは、Spring MVCやJMXなど、さまざまなテクノロジーをサポートしています。また、Spring Securityと統合して、エンドポイントへのアクセスを保護します。Actuatorのセキュリティ設定は、アプリケーションの機密情報への不正アクセスを防ぐために非常に重要です。
エンドポイントの設定は、propertiesファイルまたはYAMLファイルを使用して行うことができます。例えば、/beans
エンドポイントのIDを /springbeans
に変更し、認証なしでアクセスできるようにするには、次のように設定します。
endpoints.beans.id=springbeans
endpoints.beans.sensitive=false
endpoints.beans.enabled=true