Spring Boot Actuatorは、Spring Bootが提供する、Spring Bootアプリケーションの監視および管理に使用するツールです。これは、一連の事前定義されたエンドポイント(Endpoints)を通じて、ヘルスステータス、構成プロパティ、メトリクス指標、スレッドダンプなどのアプリケーションのランタイム情報を公開します。これらのエンドポイントは、HTTPインターフェースまたはJMX(Java Management Extensions)を通じてアクセスでき、開発者や運用保守担当者がアプリケーションの稼働状態を迅速に把握し、障害の切り分けやパフォーマンスの最適化を行うのに役立ちます。今回の実践チュートリアルでは、Spring Boot Actuatorを通じて遅延データを公開し、PrometheusおよびGrafanaなどの監視コンポーネントを通じて、クライアント側からRedisコマンドの遅延を監視することを実現します。
Spring Boot Actuatorコンポーネント依存関係の構成
ActuatorはSpring Bootと深く統合されており、すぐに使用できます。プロジェクトの`pom.xml`ファイルにSpring Boot Actuatorの依存関係を追加するだけで有効になります。以下に示します。
<!-- Spring Boot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.4.1</version>
</dependency>
<!-- Micrometer Prometheus Registry -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
エンドポイント公開の構成
Spring Boot 2.x以降のバージョンでは、Spring Data RedisとLettuceクライアントを使用する場合、Lettuceは自動的にMicrometerと統合され、メトリクスの収集を開始します。Actuatorの依存関係を導入した場合は、設定ファイルで`metrics`および`prometheus`エンドポイントを公開するだけで、Lettuceメトリクスの監視と公開を完了できます。プロジェクトの設定ファイルapplication.propertiesに、公開するエンドポイントを追加します。以下に示します。
/actuator/health:アプリケーション全体のヘルスステータスを表示し、ヘルス指標をカスタマイズできます。
/actuator/info:アプリケーションのカスタマイズ情報を表示します。バージョンや説明などが含まれます。
/actuator/metrics:メモリ、CPU、HTTPリクエスト統計などの各種実行メトリクスを提供します。
/actuator/prometheus:Prometheusに監視データを公開し、PrometheusはSpring Bootアプリケーションのメトリクス指標を定期的に取得できます。
management.endpoints.web.exposure.include=health,info,metrics,prometheus
CURLを使用したエンドポイントデータの取得
curlを使用してmetricsエンドポイントにアクセスし、Lettuceが報告するパフォーマンス指標を確認してください。
curlを使用してPrometheusエンドポイントにリクエストを送信すると、Prometheus形式で報告されたデータを確認できます。データ量が多いため、以下の例ではフィルタリングを通じてLettuce関連のメトリクスデータのみを表示します。