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
    생성됨: 처리할 이벤트 수에 대한 메트릭
    4
    attempt: 들어오는 이벤트를 처리하기 위해 서비스 빈에 대한 호출 수를 측정
    5
    Redelivery: 이벤트를 처리하기 위한 재시도 횟수에 대한 지표
    6
    성공: 성공적으로 처리된 이벤트 수를 측정
  2. 필요에 따라 Camel MicroProfile Metrics 주석을 구현 파일에 추가합니다. 다음 예제에서는 임의의 오류를 생성하는 Camel K 통합에서 호출하는 서비스 빈을 보여줍니다.

    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 주석은 미터를 선언하고 해당 이름은 메트릭 메서드 이름을 기반으로 자동으로 생성됩니다. 이 경우 을 시도합니다.
    2
    이 예제에서는 메트릭에 대한 오류를 생성하는 데 도움이 되도록 무작위로 실패합니다.
  3. Camel K 통합 메트릭 구성 단계에 따라 통합을 실행하고 Prometheus에서 사용자 지정 Camel K 지표를 확인합니다.

    이 경우 예제에서는 Metrics.java 에서 Camel K 모드를 사용하여 Prometheus 및 Service.java 에 필요한 Maven 종속성을 자동으로 구성합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat