Spring Boot アプリケーションは、Micrometer を通じて JVM、プロセス、アプリケーションの各メトリックを生成します。2 つの依存関係を追加し、数行の構成設定を行うだけで、これらのメトリックを Prometheus 互換のエンドポイントで公開できます。Application Real-Time Monitoring Service (ARMS) がこのエンドポイントをスクレイプし、データを Managed Service for Prometheus に送信することで、ダッシュボードの表示やアラートの設定が可能になります。
仕組み
Micrometer は、JVM ベースのアプリケーション向けのメトリック収集ライブラリです。Spring Boot Actuator と組み合わせると、Prometheus テキスト形式で HTTP エンドポイント上にアプリケーションおよび JVM のメトリックを公開します。Alibaba Cloud 上にアプリケーションをデプロイ後、ARMS インテグレーションセンターがこのエンドポイントをスクレイプし、データを Managed Service for Prometheus に格納します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Spring Boot 2.x を使用して構築された Java アプリケーション
Container Service for Kubernetes (ACK) または Elastic Compute Service (ECS) 上にアプリケーションがデプロイ済み(またはデプロイ準備完了)であること
手順 1:依存関係の追加と Prometheus エンドポイントの公開
本ガイドでは、Spring Boot 2.x アプリケーションを例として説明します。
依存関係の追加
プロジェクトに Spring Boot Actuator、Micrometer Prometheus レジストリ、および Micrometer JVM Extras の依存関係を追加します。
Maven (pom.xml)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>x.y.z</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>x.y.z</version>
</dependency>最新の Maven プロジェクトバージョンを取得するには、「Alibaba Cloud リポジトリ」をご参照ください。
Prometheus エンドポイントの公開
application.properties ファイルに以下のプロパティを追加します。
management.server.port=8080
management.endpoints.web.exposure.include=xxx, prometheus| プロパティ | 説明 |
|---|---|
management.server.port | Actuator 管理サーバーのポート番号です。8080 は、ご利用の環境で必要なポート番号に置き換えてください。 |
management.endpoints.web.exposure.include | HTTP 経由でアクセス可能な Actuator エンドポイントを制御します。xxx は、ご希望のエンドポイント名を指定するプレースホルダーです。prometheus とともに、必要に応じて他のエンドポイント名をカンマ区切りで追加してください。 |
application.yml を使用する場合:
management:
server:
port: 8080
endpoints:
web:
exposure:
include: xxx, prometheus拡張プロセスメトリックの収集
プロセスレベルの拡張メモリおよびスレッドメトリックを収集するには、Micrometer JVM Extras ライブラリを追加します。
Maven (pom.xml)
<dependency>
<groupId>io.github.mweirauch</groupId>
<artifactId>micrometer-jvm-extras</artifactId>
<version>0.2.2</version>
</dependency>最新の Maven プロジェクトバージョンを取得するには、「Alibaba Cloud リポジトリ」をご参照ください。
その後、メトリックバインダーを Spring Bean として登録します。
@Bean
public MeterBinder processMemoryMetrics() {
return new ProcessMemoryMetrics();
}
@Bean
public MeterBinder processThreadMetrics() {
return new ProcessThreadMetrics();
}手順 2:ローカルでのメトリックの検証
依存関係を追加し、プロパティを構成した後、アプリケーションを起動して、Prometheus エンドポイントからメトリックが正常に返されるかを検証します。
以下のコマンドを実行します。
curl http://localhost:8080/actuator/prometheus8080 は、management.server.port で構成したポート番号に置き換えてください。成功した応答には、Prometheus テキスト形式のメトリックが含まれます。
# HELP jvm_memory_used_bytes 使用中のメモリ量
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 2.5165824E7
...エンドポイントから 404 エラーが返された場合は、以下の点を確認してください。
spring-boot-starter-actuator依存関係がクラスパス上にあることmanagement.endpoints.web.exposure.includeプロパティにprometheusが含まれていることリクエストで指定したポート番号が
management.server.portと一致していること
手順 3:Managed Service for Prometheus へのデプロイと接続
アプリケーションを ACK クラスターまたは ECS インスタンスにデプロイし、ARMS コンソールで Micrometer の統合を構成します。
ARMS コンソール にログインします。
左側ナビゲーションウィンドウで、インテグレーションセンター をクリックします。
Micrometer コンポーネントを検索します。

Micrometer パネルの 統合の開始 タブで、以下のパラメーターを構成し、OK をクリックします。
パラメーター 説明 環境タイプの選択 アプリケーションが実行される環境です。有効な値: Kubernetes 環境、ECS(VPC)。 Kubernetes クラスターの選択 アプリケーションが実行される ACK クラスターです。Kubernetes 環境 を選択した場合のみ表示されます。 ラベル Micrometer がデプロイされている Pod のラベルです。アプリケーションを識別できる意味のあるラベルを指定してください。 サービスポート アプリケーションのポート番号です。デフォルトのポート番号が自動的に入力されます。 メトリック収集パス メトリックを公開するエンドポイントです。デフォルトのエンドポイントが自動的に入力されます。 HTTPS を使用したデータ収集 このスイッチをオンにすると、HTTP ではなく HTTPS 経由でメトリックをスクレイプします。 メトリックスクレイプ間隔(単位:秒) メトリックを収集する頻度(秒単位)です。デフォルト値: 30。
手順 4:ダッシュボードの表示
ARMS コンソール にログインします。
左側ナビゲーションウィンドウで、統合管理 をクリックします。
統合済み環境 タブで、ご利用の環境名をクリックします。

コンポーネント管理 タブの アドオンタイプ セクションで、MicroMeter をクリックし、ダッシュボード をクリックします。

ダッシュボード名をクリックして開きます。

手順 5:アラート機能の設定
コンポーネント管理 タブの アドオンタイプ セクションで、MicroMeter をクリックし、アラートルール をクリックして、デフォルトのアラートルールを表示します。
要件に応じてカスタムアラートルールを作成します。詳細については、「」をご参照ください。