2.3. カスタム Camel K インテグレーションメトリクスの追加


Java コードで Camel MicroProfile Metrics コンポーネントおよびアノテーションを使用すると、カスタムメトリクスを Camel K インテグレーションに追加できます。その後、これらのカスタムメトリクスは Prometheus によって自動的に検出され、表示されます。

ここでは、Camel MicroProfile Metrics アノテーションを Camel K インテグレーションおよびサービス実装コードに追加する例を紹介します。

前提条件

手順

  1. Camel MicroProfile Metrics コンポーネントアノテーションを使用して、カスタムメトリクスを Camel インテグレーションコードに登録します。以下の例は、Metrics.java インテグレーションを示しています。

    // camel-k: language=java trait=prometheus.enabled=true dependency=mvn:org.my/app:1.0 
    1
    
    
    import org.apache.camel.Exchange;
    import org.apache.camel.LoggingLevel;
    import org.apache.camel.builder.RouteBuilder;
    import org.apache.camel.component.microprofile.metrics.MicroProfileMetricsConstants;
    
    import javax.enterprise.context.ApplicationScoped;
    
    @ApplicationScoped
    public class Metrics extends RouteBuilder {
    
       @Override
       public void configure() {
            onException()
                .handled(true)
                .maximumRedeliveries(2)
                .logStackTrace(false)
                .logExhausted(false)
                .log(LoggingLevel.ERROR, "Failed processing ${body}")
                // Register the 'redelivery' meter
                .to("microprofile-metrics:meter:redelivery?mark=2")
                // Register the 'error' meter
                .to("microprofile-metrics:meter:error"); 
    2
    
    
            from("timer:stream?period=1000")
                .routeId("unreliable-service")
                .setBody(header(Exchange.TIMER_COUNTER).prepend("event #"))
                .log("Processing ${body}...")
                // Register the 'generated' meter
                .to("microprofile-metrics:meter:generated") 
    3
    
                // Register the 'attempt' meter via @Metered in Service.java
                .bean("service") 
    4
    
                .filter(header(Exchange.REDELIVERED))
                    .log(LoggingLevel.WARN, "Processed ${body} after ${header.CamelRedeliveryCounter} retries")
                    .setHeader(MicroProfileMetricsConstants.HEADER_METER_MARK, header(Exchange.REDELIVERY_COUNTER))
                    // Register the 'redelivery' meter
                    .to("microprofile-metrics:meter:redelivery") 
    5
    
                .end()
                .log("Successfully processed ${body}")
                // Register the 'success' meter
                .to("microprofile-metrics:meter:success"); 
    6
    
        }
    }
    Copy to Clipboard
    1
    Camel K モードラインを使用して、Prometheus トレイトと Maven 依存関係を自動的に設定します。
    2
    error: 処理されていないイベントの数に対応するエラー数のメトリック。
    3
    generated: 処理されるイベント数のメトリック。
    4
    attempt: 受信イベントを処理するためにサービス Bean に対して行われる呼び出し数のメトリック。
    5
    redelivery: イベントを処理するために行われた再試行回数のメトリック。
    6
    success: 正常に処理されたイベント数のメトリクス。
  2. 必要に応じて Camel MicroProfile Metrics アノテーションを実装ファイルに追加します。以下の例は、ランダムに失敗を生成する Camel K インテグレーションによって呼び出される service Bean を示しています。

    package com.redhat.integration;
    
    import java.util.Random;
    
    import org.apache.camel.Exchange;
    import org.apache.camel.RuntimeExchangeException;
    
    import org.eclipse.microprofile.metrics.Meter;
    import org.eclipse.microprofile.metrics.annotation.Metered;
    import org.eclipse.microprofile.metrics.annotation.Metric;
    
    import javax.inject.Named;
    import javax.enterprise.context.ApplicationScoped;
    
    @Named("service")
    @ApplicationScoped
    @io.quarkus.arc.Unremovable
    
    public class Service {
    
       //Register the attempt meter
       @Metered(absolute = true)
       public void attempt(Exchange exchange) { 
    1
    
          Random rand = new Random();
             if (rand.nextDouble() < 0.5) {
                 throw new RuntimeExchangeException("Random failure", exchange); 
    2
    
          }
       }
     }
    Copy to Clipboard
    1
    @Metered MicroProfile Metrics アノテーションは meter を宣言し、名前はメトリクスメソッド名 (この場合は attempt) に基づいて自動的に生成されます。
    2
    この例は、メトリクスのエラーを生成するために無作為に失敗します。
  3. Camel K インテグレーションメトリクスの設定 の手順に従ってインテグレーションを実行し、Prometheus でカスタム Camel K メトリクスを確認します。

    この例では、Metrics.java ですでに Camel K モードラインが使用され、Prometheus と Service.java に必要な Maven 依存関係が自動的に設定されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat