콘텐츠로 이동
Leader 문서0.4

Micrometer 계측

최신 안정판 Leader 0.4.0 릴리스 기준

라이브러리 모듈

단일 선출기, 그룹 선출기, 코루틴 선출기, 코어 수명 주기 리스너, Spring AOP 기록기, 이력 저장소에 Micrometer 지표를 추가합니다. 선출의 정합성에는 영향을 주지 않습니다.

백엔드별 락 획득, 건너뛴 실행, 실패, 실행 시간, 이력 지표가 필요할 때 사용합니다. 지표를 수집할 MeterRegistry가 없다면 굳이 추가하지 않아도 됩니다.

Maven 좌표: io.github.bluetape4k.leader:bluetape4k-leader-micrometer

dependencies {
implementation(platform("io.github.bluetape4k:bluetape4k-dependencies:<version>"))
implementation("io.github.bluetape4k.leader:bluetape4k-leader-micrometer")
}

계측 래퍼는 소유권 판단을 내부 선출기에 위임합니다. 메트릭은 시도와 결과를 설명할 뿐 실행 권한을 주지 않습니다.

val instrumented = InstrumentedLeaderElector(
delegate = elector,
registry = meterRegistry
)
instrumented.runIfLeader("daily-report") { generateReport() }

선출기를 직접 감싸거나 MicrometerLeaderElectionListener를 등록합니다. Spring AOP에는 전용 기록기를, 이력 저장소에는 오류를 격리하는 기록기 데코레이터를 사용합니다.

논리 선출기 하나당 래퍼 하나만 등록하고 태그 값의 종류를 제한하세요. 테넌트나 요청에서 만든 락 이름은 태그로 그대로 쓰지 않습니다.

모든 코어 호환 백엔드와 함께 쓸 수 있습니다. prometheus-dashboard 예제에서 지표를 내보내고 대시보드와 경보에 연결하는 방법을 확인할 수 있습니다.

레지스트리, 공통 태그, 미터 필터, 히스토그램과 백분위수 정책, 카디널리티 제한은 애플리케이션에서 정합니다. 모니터링 백엔드까지 설정하지는 않습니다.

메트릭 레지스트리의 실패가 소유권 판단으로 번지면 안 됩니다. 래퍼를 중복 등록하면 이중으로 집계되고, 제한 없이 늘어나는 락 이름 태그는 메모리를 소모합니다.

정상적인 건너뛰기와 백엔드 실패·리스 연장 실패를 구분해 경보를 설정하세요. 실행 시간과 시도량은 백엔드 지연과 함께 봅니다.

단순한 레지스트리로 미터 이름, 태그, 결과, 실패, 코루틴 취소, 아무 작업도 하지 않는 경우, 이력 데코레이터의 중복 집계 여부를 검증합니다.

코어 결과 계약을 익힌 뒤 prometheus-dashboard를 실행하세요. 어떤 실패에 대응할지는 선택한 백엔드 페이지와 함께 판단합니다.

메트릭은 유실될 수 있는 관측값입니다. 영속적인 감사 기록, 추적, 경보, 대시보드, 낮은 카디널리티를 유지하는 정책까지 자동으로 제공하지는 않습니다.

아래 그림은 0.4.0 배포본의 README 자산을 해당 배포 커밋에서 직접 불러옵니다. 이후 SNAPSHOT이 아니라 이 매뉴얼 버전의 구조와 실행 흐름을 보여 줍니다. 미리보기를 누르면 같은 배포 커밋의 SVG 원본이 열립니다.

leader-micrometer instrumentation 아키텍처

섹션 제목: “leader-micrometer instrumentation 아키텍처”

leader-micrometer instrumentation 아키텍처

배포본 README: leader-micrometer/README.ko.md

계측 elector · Listener · 안정판 안내