第7章 JBoss EAP 用 Micrometer アプリケーションの開発


7.1. JBoss EAP に Micrometer メトリクスを統合

Micrometer を使用すると、JBoss EAP でアプリケーションメトリクスを監視および収集できます。Micrometer サポートにより、アプリケーションメトリクスが公開されます。エクスポートプロセスは PUSH ベースであり、メトリクスが OpenTelemetry Collector に送信されるようにします。

前提条件

  • JDK 17 がインストールされている。
  • Maven 3.6 以降のバージョンがインストールされている。詳細は、Downloading Apache Maven を参照してください。
  • Docker がインストールされている。詳細は、Get Docker を参照してください。
  • オプション: システムに podman がインストールされている。サポート対象の RHEL で利用可能な最新の podman バージョンを使用してください。詳細は、Red Hat JBoss Enterprise Application Platform 8.0 でサポートされる構成 を参照してください。
  • configure-micrometer.cli ファイルは、アプリケーションのルートディレクトリーにあります。
注記

このセクションの例 (configure-micrometer.cli ファイルの使用方法を含む) は、Micrometer クイックスタート に基づいています。

手順

  1. 端末を開きます。
  2. 次のスクリプトを使用して、JBoss EAP をスタンドアロンサーバーとして起動します。

    $ <EAP_HOME>/bin/standalone.sh -c standalone-microprofile.xml
    Copy to Clipboard Toggle word wrap
    注記

    Windows Server の場合は、<EAP_HOME>\bin\standalone.bat スクリプトを使用します。

  3. 新しいターミナルを開きます。
  4. アプリケーションのルートディレクトリーに移動します。
  5. サーバーを設定するには、次のコマンドを実行します。

    $ <EAP_HOME>/bin/jboss-cli.sh --connect --file=configure-micrometer.cli
    Copy to Clipboard Toggle word wrap
    注記

    Windows Server の場合は、<EAP_HOME>\bin\jboss-cli.bat スクリプトを使用します。

    <EAP_HOME> をサーバーへのパスに置き換えます。

    想定される出力:

    The batch executed successfully
    process-state: reload-required
    Copy to Clipboard Toggle word wrap

  6. 以下の管理コマンドでサーバーをリロードします。

    $ <EAP_HOME>/bin/jboss-cli.sh --connect --commands=reload
    Copy to Clipboard Toggle word wrap
  7. 次の内容を含む docker-compose.yaml という名前の設定ファイルを作成します。

    version: "3"
    
    services:
      otel-collector:
        image: otel/opentelemetry-collector
        command: [--config=/etc/otel-collector-config.yaml]
        volumes:
          - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml:Z
        ports:
          - 1888:1888 # pprof extension
          - 8888:8888 # Prometheus metrics exposed by the collector
          - 8889:8889 # Prometheus exporter metrics
          - 13133:13133 # health_check extension
          - 4317:4317 # OTLP gRPC receiver
          - 4318:4318 # OTLP http receiver
          - 55679:55679 # zpages extension
          - 1234:1234 # /metrics endpoint
    Copy to Clipboard Toggle word wrap
  8. 次の内容を含む otel-collector-config.yaml という名前の設定ファイルを作成します。

    extensions:
      health_check:
      pprof:
        endpoint: 0.0.0.0:1777
      zpages:
        endpoint: 0.0.0.0:55679
    
    receivers:
      otlp:
        protocols:
          grpc:
          http:
    
    processors:
      batch:
    
    exporters:
      prometheus:
        endpoint: "0.0.0.0:1234"
    
    service:
      pipelines:
        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [prometheus]
    
      extensions: [health_check, pprof, zpages]
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを実行して、コレクターサーバーインスタンスを起動します。

    $ docker-compose up
    Copy to Clipboard Toggle word wrap
    注記

    Docker の代わりに Podman を使用することもできます。Podman を選択した場合は、$ docker-compose up ではなく $ podman-compose up コマンドを使用します。ご使用の環境で Docker または Podman がサポートされていない場合は、Otel Collector のドキュメント で OpenTelemetry Collector のインストールと実行に関するガイダンスを参照してください。

  10. RootResource クラスでは、メーター登録前に適切なセットアップを確実に行うために、MeterRegistry がクラスに挿入される方法を確認します。

    @Path("/")
    @ApplicationScoped
    public class RootResource {
        // ...
        @Inject
        private MeterRegistry registry;
    
        private Counter performCheckCounter;
        private Counter originalCounter;
        private Counter duplicatedCounter;
    
        @PostConstruct
        private void createMeters() {
            Gauge.builder("prime.highestSoFar", () -> highestPrimeNumberSoFar)
                    .description("Highest prime number so far.")
                    .register(registry);
            performCheckCounter = Counter
                    .builder("prime.performedChecks")
                    .description("How many prime checks have been performed.")
                    .register(registry);
            originalCounter = Counter
                    .builder("prime.duplicatedCounter")
                    .tags(List.of(Tag.of("type", "original")))
                    .register(registry);
            duplicatedCounter = Counter
                    .builder("prime.duplicatedCounter")
                    .tags(List.of(Tag.of("type", "copy")))
                    .register(registry);
        }
        // ...
    }
    Copy to Clipboard Toggle word wrap
  11. checkIfPrime() メソッド本体を調べて、登録されたメーターがアプリケーションロジック内でどのように使用されるかを確認します。以下に例を示します。

    @GET
    @Path("/prime/{number}")
    public String checkIfPrime(@PathParam("number") long number) throws Exception {
        performCheckCounter.increment();
    
        Timer timer = registry.timer("prime.timer");
    
        return timer.recordCallable(() -> {
    
            if (number < 1) {
                return "Only natural numbers can be prime numbers.";
            }
    
            if (number == 1) {
                return "1 is not prime.";
            }
    
            if (number == 2) {
                return "2 is prime.";
            }
    
            if (number % 2 == 0) {
                return number + " is not prime, it is divisible by 2.";
            }
    
            for (int i = 3; i < Math.floor(Math.sqrt(number)) + 1; i = i + 2) {
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    //
                }
                if (number % i == 0) {
                    return number + " is not prime, is divisible by " + i + ".";
                }
            }
    
            if (number > highestPrimeNumberSoFar) {
                highestPrimeNumberSoFar = number;
            }
    
            return number + " is prime.";
        });
    }
    Copy to Clipboard Toggle word wrap
  12. アプリケーションのルートディレクトリーに移動します。

    構文

    $ cd <path_to_application_root>/<application_root>
    Copy to Clipboard Toggle word wrap

    Micrometer Quickstart を参考にした例:

    $ cd ~/quickstarts/micrometer
    Copy to Clipboard Toggle word wrap

  13. 次のコマンドを使用して、アプリケーションをコンパイルおよびデプロイします。

    $ mvn clean package wildfly:deploy
    Copy to Clipboard Toggle word wrap

これにより、実行中のサーバーに micrometer/target/micrometer.war がデプロイされます。

検証

  1. Web ブラウザー を使用してアプリケーションにアクセスするか、次のコマンドを実行します。

    $ curl http://localhost:8080/micrometer/prime/13
    Copy to Clipboard Toggle word wrap

    想定される出力:

    13 is prime.
    Copy to Clipboard Toggle word wrap

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る