すべてのプロダクト
Search
ドキュメントセンター

:Prometheus による Micrometer Java アプリケーションのモニタリング

最終更新日:Jun 26, 2026

このトピックでは、Managed Service for Prometheus で、Micrometer を使用する Java アプリケーションをモニタリングする方法について説明します。

前提条件

Java アプリケーションが作成済みであること。

ステップ 1:Java アプリケーションのインストルメント化

説明

このトピックでは、一般的な Spring Boot 2.x アプリケーションを例として使用します。

  1. Java アプリケーションに Spring Boot Actuator を追加するには、プロジェクトの pom.xml ファイルに Actuator 依存関係を追加します。

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-registry-prometheus</artifactId>
      <version>x.y.z</version>
    </dependency>
    説明

    最新バージョンは、Alibaba Cloud リポジトリで確認できます。

  2. application.properties ファイルに次のプロパティを追加して、Prometheus モニタリングデータ用のポートとエンドポイントを公開します。

    management.server.port=8080
    management.endpoints.web.exposure.include=xxx, prometheus
  3. Add the MicroMeter dependency to the project's pom.xml file.

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-registry-prometheus</artifactId>
      <version>x.y.z</version>
    </dependency>
    説明

    Find the latest version in the Alibaba Cloud repository.

  4. プロジェクトの pom.xml ファイルに Micrometer JVM Extras の依存関係を追加します。

    <dependency>
        <groupId>io.github.mweirauch</groupId>
        <artifactId>micrometer-jvm-extras</artifactId>
        <version>0.2.2</version>
    </dependency>
    説明

    最新バージョンは、Alibaba Cloud リポジトリで確認できます。

  5. 次の 2 つの Spring Bean を定義して Micrometer JVM Extras を設定し、メモリとスレッド関連のメトリックを公開します。

    /* Spring を使用する場合 */
    @Bean
    public MeterBinder processMemoryMetrics() {
        return new ProcessMemoryMetrics();
    }
    @Bean
    public MeterBinder processThreadMetrics() {
        return new ProcessThreadMetrics();
    }
  6. Java アプリケーションを Container Service または ECS インスタンスにデプロイします。

    ビジネスシナリオに基づいて、Java アプリケーションを Container Service または ECS インスタンスにデプロイします。アプリケーションをデプロイした後、アプリケーションのリスニングアドレス http://localhost:8080/actuator/prometheus にアクセスして、メトリックが正しく公開されていることを確認します。ポート 8080application.properties ファイルで指定されています。異なるポートを使用する場合は、それに応じて URL を更新してください。

    リクエストが成功すると、次の例のような Prometheus 形式のメトリックデータが返されます。

    # HELP jvm_memory_used_bytes 使用済みメモリの量 (バイト)
    # TYPE jvm_memory_used_bytes ゲージ
    jvm_memory_used_bytes{area="heap",id="G1 Survivor Space",} 2964360.0
    jvm_memory_used_bytes{area="heap",id="G1 Old Gen",} 1.285324E7
    jvm_memory_used_bytes{area="nonheap",id="Metaspace",} 3.6128128E7
    jvm_memory_used_bytes{area="nonheap",id="CodeCache",} 9673088.0
    jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 6.7108864E7
    jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space",} 4999168.0
    # HELP jvm_threads_live_threads デーモンスレッドと非デーモンスレッドの両方を含む現在のライブスレッド数
    # TYPE jvm_threads_live_threads ゲージ
    jvm_threads_live_threads 28.0
    # HELP jvm_memory_committed_bytes Java 仮想マシン用にコミットされたメモリ量 (バイト)
    # TYPE jvm_memory_committed_bytes ゲージ
    jvm_memory_committed_bytes{area="heap",id="G1 Survivor Space",} 4194304.0
    jvm_memory_committed_bytes{area="heap",id="G1 Old Gen",} 5.8720256E7
    jvm_memory_committed_bytes{area="nonheap",id="Metaspace",} 3.6569088E7
    jvm_memory_committed_bytes{area="nonheap",id="CodeCache",} 1.0682368E7
    jvm_memory_committed_bytes{area="heap",id="G1 Eden Space",} 9.646899E7
    jvm_memory_committed_bytes{area="nonheap",id="Compressed Class Space",} 5177344.0
    # HELP executor_pool_max_threads プールで許可されるスレッドの最大数
    # TYPE executor_pool_max_threads ゲージ
    executor_pool_max_threads{name="applicationTaskExecutor",} 2.147483647E9
    ...
    # TYPE jvm_buffer_count_buffers ゲージ
    jvm_buffer_count_buffers{id="mapped - 'non-volatile memory'",} 0.0
    jvm_buffer_count_buffers{id="mapped",} 0.0
    jvm_buffer_count_buffers{id="direct",} 7.0
    # HELP jvm_buffer_total_capacity_bytes このプール内のバッファの総容量の推定値
    # TYPE jvm_buffer_total_capacity_bytes ゲージ
    jvm_buffer_total_capacity_bytes{id="mapped - 'non-volatile memory'",} 0.0
    jvm_buffer_total_capacity_bytes{id="mapped",} 0.0
    jvm_buffer_total_capacity_bytes{id="direct",} 57344.0
    # HELP jvm_threads_peak_threads Java 仮想マシンの起動後、またはピークリセット後の最大生存スレッド数
    # TYPE jvm_threads_peak_threads ゲージ
    jvm_threads_peak_threads 30.0
    # HELP jvm_threads_states_threads 状態ごとの現在のスレッド数
    # TYPE jvm_threads_states_threads ゲージ
    jvm_threads_states_threads{state="runnable",} 11.0
    jvm_threads_states_threads{state="blocked",} 0.0

ステップ 2:Micrometer の統合

  1. 左側のナビゲーションウィンドウで、[インテグレーションセンター] を選択します。次に、[Micrometer] を検索してクリックします。

  2. Micrometer パネルの [設定] タブで、[環境タイプ] を選択し、必要な設定を行ってから [OK] をクリックします。

    パラメーター

    説明

    [環境タイプの選択]

    アプリケーションがデプロイされている環境。

    • Container Service 環境

    • ECS (VPC)

    [クラスターの選択]

    アプリケーションがデプロイされているクラスター。

    [Pod ラベル]

    Micrometer サービスを識別するための一意の Pod ラベル。

    [サービスポート]

    Java アプリケーションのサービスポート。デフォルト値が自動的に入力されます。

    [メトリックパス]

    Micrometer がメトリックを公開するパス。デフォルトのパスが自動的に入力されます。

    [HTTPS 経由でのスクレイプ]

    このオプションを有効にすると、HTTPS 経由でメトリックをスクレイプします。デフォルトでは、メトリックは HTTP 経由でスクレイプされます。

    [メトリクスのスクレイプ間隔 (秒)]

    Managed Service for Prometheus がメトリックデータをスクレイプする間隔。デフォルト値は 30 秒です。

ステップ 3:Micrometer ダッシュボードの表示

  1. 左側のナビゲーションウィンドウで、[インテグレーションセンター] をクリックします。[インテグレーションセンター] ページの [インストール済み] タブで、対象の環境を選択し、その名前をクリックしてコンテナ環境の詳細ページに移動します。

  2. [コンポーネント] タブの [コンポーネントタイプ] セクションで Micrometer をクリックし、[ダッシュボード] タブをクリックしてすべてのダッシュボード名を表示します。

    ダッシュボードリストには、javajvmmicrometer のラベルが付いた [JVM Micrometer] ダッシュボードが表示されます。

  3. ダッシュボードの名前をクリックして、対応する Grafana ダッシュボードを表示します。

    [JVM Micrometer] ダッシュボードが表示されます。これには、[job][Instance] のドロップダウンフィルター、[Restart Detection] スイッチ、[Quick Facts] セクション ([Uptime][Start time])、および [I/O Overview] セクション ([Rate][Errors]) が含まれています。対象のインスタンスを選択して、その JVM モニタリングデータを表示します。

ステップ 4:Micrometer のアラート設定

  1. [コンポーネント] タブの [コンポーネントタイプ] セクションで Micrometer をクリックし、[アラート] タブをクリックしてデフォルトのアラートルールを表示します。

    デフォルトのアラートルールには、[JVM CPU Usage Alert][JVM Memory Usage Alert][JVM Restart Alert][Logback Error Count Alert][Major GC Time Ratio Alert] があります。すべてのルールはアクティブで、優先度は P2 です。

  2. カスタムのアラートルールを追加することもできます。Prometheus の [アラートルール] の作成方法の詳細については、「Prometheus インスタンスのアラートルールの作成」をご参照ください。