Categories: Camel프레임워크

[Camel in Action] 15-1. Camel 관리와 모니터링 – JMX와 Hawtio 대시보드

운영 중인 Camel을 모니터링해야 하는 이유

Camel 애플리케이션이 프로덕션에서 실행 중일 때 각 라우트의 상태, 처리량, 오류율을 실시간으로 파악해야 합니다. 문제가 발생했을 때 빠르게 원인을 찾고, 필요하면 라우트를 일시 정지하거나 재시작해야 합니다.

JMX로 Camel 관리

Camel은 기본적으로 JMX를 통해 관리 인터페이스를 노출합니다. JConsole이나 VisualVM으로 연결하면 라우트 통계를 볼 수 있습니다.

# application.properties에서 JMX 활성화
camel.springboot.jmx-enabled=true

// 코드에서 JMX로 라우트 통계 조회
ManagedCamelContext managed = context.getCamelContextExtension()
  .getContextPlugin(ManagedCamelContext.class);

ManagedRouteMBean routeMBean = managed.getManagedRoute("order-processor", ManagedRouteMBean.class);
System.out.println("처리 건수: " + routeMBean.getExchangesTotal());
System.out.println("실패 건수: " + routeMBean.getExchangesFailed());
System.out.println("평균 처리 시간: " + routeMBean.getMeanProcessingTime() + "ms");

Hawtio – Camel 전용 웹 관리 콘솔

Hawtio는 JMX 기반의 웹 관리 콘솔입니다. 브라우저에서 라우트 다이어그램을 보고, 메시지 통계를 확인하고, 라우트를 시작/중지할 수 있습니다.

<dependency>
  <groupId>io.hawt</groupId>
  <artifactId>hawtio-springboot</artifactId>
  <version>2.17.6</version>
</dependency>

의존성 추가 후 http://localhost:8080/hawtio에 접속하면 Camel 탭에서 라우트 목록, 엔드포인트, 메시지 통계를 확인할 수 있습니다.

라우트 동적 제어

운영 중에 특정 라우트를 코드 변경 없이 일시 정지하거나 재시작할 수 있습니다.

// 라우트 일시 정지 (메시지 소비 중단)
context.suspendRoute("order-processor");

// 라우트 재시작
context.resumeRoute("order-processor");

// 라우트 완전 중지
context.stopRoute("order-processor");

// 새 라우트 동적 추가
context.addRoutes(new RouteBuilder() {
  @Override
  public void configure() throws Exception {
    from("timer:new?period=1000").log("새 라우트");
  }
});

알림과 임계값 모니터링

// 에러율이 임계값 초과 시 알림
@Component
public class RouteMonitor {
  @Scheduled(fixedDelay = 60000)
  public void checkRouteHealth() {
    ManagedRouteMBean routeMBean = getManagedRoute("order-processor");
    double errorRate = (double) routeMBean.getExchangesFailed()
      / routeMBean.getExchangesTotal() * 100;

    if (errorRate > 5.0) {
      alertService.send("order-processor 에러율 " + errorRate + "% 초과");
    }
  }
}

Camel이 제공하는 주요 MBean 속성

  • ExchangesTotal: 총 처리된 Exchange 수
  • ExchangesFailed: 실패한 Exchange 수
  • MeanProcessingTime: 평균 처리 시간 (ms)
  • MaxProcessingTime: 최대 처리 시간
  • LastProcessingTime: 마지막 처리 시간
  • ThroughputStatistics: 처리량 통계

zerg96

Share
Published by
zerg96

Recent Posts

[Apache Camel] 2025년 최신 트렌드 – AI 통합과 서버리스 Camel의 미래

2025년 Apache Camel의 최신 트렌드를 분석합니다. AI/LLM 통합 컴포넌트, 서버리스 배포, Camel K 진화, WebAssembly…

10시간 ago

[Camel in Action] 완결편 – Apache Camel 전체 여정 회고와 다음 단계

Camel in Action을 완독한 후 Apache Camel의 전체 그림을 다시 정리합니다. 핵심 철학, 학습 경로,…

10시간 ago

[Camel in Action] 실전편 – Camel 마이그레이션 가이드 2.x에서 4.x까지

Apache Camel 2.x에서 3.x, 4.x로 마이그레이션하는 단계별 가이드입니다. 주요 API 변경사항, 제거된 컴포넌트, 자동화 도구…

10시간 ago

[Camel in Action] 실전편 – Camel 라우트 디버깅 기법과 문제 해결 가이드

Apache Camel 라우트에서 발생하는 문제를 디버깅하고 해결하는 실전 기법을 설명합니다. 로그 분석, breakpoint 디버깅, Tracer,…

10시간 ago

[Camel in Action] 실전편 – Camel 도입 전 반드시 알아야 할 것들

Apache Camel을 프로젝트에 도입하기 전 알아야 할 핵심 사항을 정리합니다. 학습 곡선, 도입 비용, 적합한…

10시간 ago

[Camel in Action] 실전편 – Enterprise Integration Patterns 20가지 핵심 정리

엔터프라이즈 통합 패턴(EIP) 20가지를 Apache Camel 코드와 함께 한 번에 정리합니다. 메시징 채널, 메시지 라우팅,…

10시간 ago