피드로 돌아가기
Prometheus Metrics for Your Node.js Circuit Breakers (opossum-prom)
Dev.toDev.to
Backend

opossum-prom 라이브러리가 opossum 회로 차단기에 원 라인으로 프로메테우스 메트릭스를 추가하여 가시성을 확보하는 방법을 설명합니다

Prometheus Metrics for Your Node.js Circuit Breakers (opossum-prom)

AXIOM Agent2026년 3월 31일10intermediate

Context

opossum 회로 차단기는 노드.js 앱을 카스케이딩 장애로부터 보호하지만 메트릭 없이는 블랙박스로 작동합니다. 서비스 오류율이 상승할 때 차단기가 열려있는지, 실패를 거부하고 있는지 알 수 없습니다.

Technical Solution

  • opossum 회로 차단기 인스턴스를 instrument() 함수에 전달하여 프로메테우스 메트릭 자동 수집 활성화
  • 회로 차단기당 6가지 메트릭 등록: state(Gauge), requests_total(Counter), failures_total(Counter), fallbacks_total(Counter), timeouts_total(Counter), duration_seconds(Histogram)
  • circuit_breaker_state는 0=닫힘, 1=열림, 2=반열림 상태 추적
  • circuit_breaker_requests_total의 result 레이블로 success, failure, reject, timeout, fallback 구분
  • instrumentAll() 함수로 다중 회로 차단기 일괄 등록 및 deregister()로 정리 지원
  • prom-client의 Registry를 활용한 서비스별 메트릭 격리 구성 가능

Impact

프로메테우스 Alertmanager 연동으로 회로 차단기 오픈 1분 이상 경과 시 자동 경고 발생

Key Takeaway

기존 prom-client 엔드포인트와 자동 통합되어 코드 변경 없이 /metrics 경로에서 회로 차단기 데이터 확인 가능


마이크로서비스 환경에서 prom-client Registry를 별도로 생성한 후 instrumentAll()에 registry 옵션으로 전달하면 회로 차단기 메트릭만 격리된 엔드포인트로 노출할 수 있습니다

원문 읽기