Contents
Spring Boot ActuatorとMicrometerの基本的な関係性
Spring Boot Actuatorは、Javaアプリケーションのモニタリング機能を提供するツールです。Actuatorが提供するデフォルトメトリクスには、メモリ使用量やHTTPリクエスト数などが含まれますが、これらだけではカスタムな指標を監視することはできません。ここに登場するのがMicrometerです。
Micrometerは、Actuatorと連携してアプリケーションのメトリクスを収集・管理するライブラリで、PrometheusやDatadogなどとの連携も可能です。現在では、Micrometer 2.xが主流となり、より柔軟なカスタムメトリクスの設定が可能となっています。
以下に、ActuatorとMicrometerの主な関係性を整理します。
| 項目 | 説明 |
|---|---|
| Actuatorの役割 | デフォルトメトリクスの提供・エンドポイントの管理 |
| Micrometerの役割 | カスタムメトリクスの定義と外部ツールとの連携 |
| 最新版特徴(2026年) | Micrometer 2.xでのAPI改善、Prometheusレジストラの強化 |
注意: 2026年の記述は技術動向の変化に伴い誤りの可能性があるため、現時点の情報に基づく説明に修正しています。
カスタムメトリクス登録の実践手順
Spring Bootでは、@Countedや@Timedなどのアノテーションを使って簡単にカスタムメトリクスを定義できます。ただし、Micrometer 2.x以降では一部APIが変更されているため、注意が必要です。
@Countedアノテーションによるカウンターメトリクス
@Countedは、メソッドの呼び出し回数をカウントするためのアノテーションです。例えば、特定の処理がどのくらい呼ばれたかを監視する場合に使用します。
使用例(コード)
|
1 2 3 4 5 6 7 8 9 10 11 |
import io.micrometer.core.annotation.Counted; import org.springframework.stereotype.Service; @Service public class MyService { @Counted("my.custom.count") public void doSomething() { // メソッドのロジック } } |
注意点:
@Countedはメソッドレベルにのみ適用可能で、クラスごとのカウントはできません。
@Timedアノテーションによるタイミング測定
@Timedは、処理時間の計測に使用されます。これにより、特定のメソッドが平均してどれくらいの時間を要しているかを把握できます。
使用例(コード)
|
1 2 3 4 5 6 7 8 9 10 11 |
import io.micrometer.core.annotation.Timed; import org.springframework.stereotype.Service; @Service public class MyService { @Timed("my.custom.timing") public void processRequest() { // メソッドのロジック } } |
注意点:
@Timedはメソッドが呼ばれた回数と処理時間を一緒に記録します。
監視用エンドポイントの構築方法
Actuatorによって提供される/actuator/metricsエンドポイントには、定義されたカスタムメトリクスも表示されます。このエンドポイントを有効化し、正しく動作することを確認しましょう。
Actuatorエンドポイントの有効化手順
Spring Bootでは、デフォルトでActuatorが無効になっています。application.propertiesに以下の設定を追加します。
|
1 2 |
management.endpoints.web.exposure.include=* |
この設定により、すべてのエンドポイントがWeb経由でアクセス可能になります。ただし、セキュリティ上の理由から本番環境では一部のみ公開するのがベストプラクティスです。
カスタムメトリクスを含むエンドポイントの確認方法
有効化後は、curl http://localhost:8080/actuator/metricsで取得できます。カスタムメトリクスが表示されているかを確認してください。
確認手順(例)
|
1 2 |
$ curl http://localhost:8080/actuator/metrics | grep "my.custom.count" |
セキュリティとの関係: このエンドポイントは外部からアクセスできるため、Spring Securityで制限をかける必要があります(後述します)。
Prometheusとの連携設定ガイド
Prometheusは、メトリクスの収集・可視化に広く使われています。Micrometerと連携させることで、Actuator経由で出力されたメトリクスをPrometheusが自動的に取得できるようになります。
MicrometerのPrometheusレジストラ設定
依存関係の追加(pom.xml)
|
1 2 3 4 5 6 |
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.10.3</version> </dependency> |
この依存関係を追加後、Micrometerは自動でPrometheusレジストラを有効化します。
注意: Prometheusレジストラのバージョン(例: 1.10.3)は最新版との整合性を確認してください。
エクスポートされたメトリクスの確認方法
/actuator/metricsエンドポイントには、Prometheus形式での出力が可能です。以下のようにURLに指定することで取得できます。
|
1 2 |
$ curl http://localhost:8080/actuator/metrics?format=prometheus |
この結果は、Prometheusサーバーで直接読み込むことができます。
セキュリティ設定における重要な考慮点
Actuatorエンドポイントは情報漏洩のリスクを伴うため、セキュリティ対策が不可欠です。特に本番環境では、不正アクセスやメトリクス情報の漏洩を防ぐ必要があります。
Actuatorエンドポイントのアクセス制限
Spring Securityとの統合により、特定のロールを持つユーザーのみがエンドポイントにアクセスできるようにします。
application.properties設定例
|
1 2 3 |
management.endpoints.web.exposure.include=health,metrics management.security.enabled=true |
この設定では、/actuator/healthと/actuator/metrics以外のエンドポイントは公開されません。
Spring Securityとの統合手順
-
依存関係の追加
pom.xmlにSpring Security依存関係を追加します。 -
セキュリティ設定の実装
SecurityConfig.javaで以下の設定を行います:
java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/actuator/**").hasRole("ADMIN");
}
} -
ロール管理の実装
ユーザー認証時にROLE_ADMINを付与するように設定します。
メトリクス情報漏洩リスクとその対策
メトリクスにはアプリケーションの内部構造が含まれるため、外部に公開するとリスクがあります。
- HTTPSでの通信を強制し、暗号化を確保する
- アクセスログ監視を行い、異常なリクエストを検知する
- OAuth2やJWT認証でユーザーの権限を管理する
継続的なセキュリティレビューとポリシー更新が重要です。
まとめ
本記事では、Spring Boot ActuatorとMicrometerによるカスタムメトリクスの実装手順を解説しました。
- Actuatorはデフォルトメトリクスを提供し、Micrometerで拡張可能
@Countedや@Timedアノテーションで簡単にカスタムメトリクスを定義できる- Prometheusとの連携には依存関係の追加と設定ファイルの変更が必要
- セキュリティ対策は本番環境での運用において不可欠
これらの手順に沿って、自社システムのメトリクス体系を構築し、安定したアプリケーション監視体制を構築してください。