Files
llm-wiki/raw/official-docs/resilience4j-micrometer-module.md
T

9.4 KiB

title, source_type, url, archive_url, related_projects, related_branches, tags, status, confidence, created, last_reviewed
title source_type url archive_url related_projects related_branches tags status confidence created last_reviewed
Resilience4j — Micrometer Module (Tagged Metrics for CircuitBreaker / Retry / Bulkhead / RateLimiter) official-doc https://resilience4j.readme.io/docs/micrometer
feature-outbound-http-client-baseline
feature-metrics-alerting-contract
resilience4j
micrometer
metrics
circuit-breaker
retry
bulkhead
rate-limiter
thread-pool-bulkhead
prometheus
observability
official-doc
raw high 2026-05-27 2026-05-27

Resilience4j — Micrometer Module (Tagged Metrics for CircuitBreaker / Retry / Bulkhead / RateLimiter)

Layer: raw/official-docs/ — Resilience4j 공식 docs "Micrometer" 페이지 verbatim. outbound HTTP client 의 CircuitBreaker/Retry/Bulkhead 가 Prometheus 로 노출되는 metric 이름·tag·state 의 1차 근거.

Parent / 활용 branch (필수)

Branch 이 자료가 정당화하는 결정
raw/branch-notes/feature-outbound-http-client-baseline D4 — 외부 호출에 Resilience4j CircuitBreaker + Retry 적용 시 metric 이 자동 노출되는 mechanism 의 공식 근거 (resilience4j.circuitbreaker.calls, kind/name tag 등)
raw/branch-notes/feature-metrics-alerting-contract Prometheus alerting rule 의 base metric (calls/state/concurrent.calls/queue.depth/available.permissions) 명명 규약

컨텍스트

ca-tmpl 계열 프로젝트의 outbound HTTP client (RestClient + Resilience4j) 는 호출 결과를 Prometheus 로 노출해 SLO/alerting 의 기반으로 삼는다. 본 자료는 Resilience4j 의 Micrometer 모듈이 자동 생성하는 metric 의 정확한 이름·tag·state vocabulary 를 verbatim 으로 보존하기 위한 raw. circuitbreaker.state 의 5개 state ("closed", "open", "half_open", "forced_open", "disabled") 와 calls 의 kind tag ("successful", "failed", "ignored") 가 alerting rule 의 label matcher 기준.

출처 / Source

  • 원본 URL: https://resilience4j.readme.io/docs/micrometer
  • 아카이브 URL: (미수집)
  • 저자 / 조직: Resilience4j project (community-maintained, official module 문서)
  • 발행일: rolling docs (current = 2.x)
  • 마지막 확인일: 2026-05-27

왜 저장했는지 / Why archived

Outbound HTTP client baseline 결정에서 "관측 가능성은 Resilience4j Micrometer 모듈을 그대로 사용한다" 는 선택의 근거. Prometheus query / Grafana panel / alerting rule 모두 본 페이지의 metric 명명을 그대로 쓰기 때문에 verbatim 보존 필요.

핵심 인용 / Key quotes (verbatim)

[§Micrometer] "Resilience4j provides a module for Micrometer which supports most popular monitoring systems like InfluxDB or Prometheus."

[§CircuitBreaker Metrics] "The following code snippet shows how to bind CircuitBreaker metrics to a MeterRegistry."

[§CircuitBreaker Metrics] "resilience4j.circuitbreaker.calls" with tags: "kind="failed" kind="successful" kind="ignored"" and "name="backendA""

[§CircuitBreaker Metrics] "resilience4j.circuitbreaker.state" is a Gauge with states: "closed" "open" "half_open" "forced_open" "disabled"

[§Retry Metrics] "TaggedRetryMetrics.ofRetryRegistry(retryRegistry).bindTo(meterRegistry);"

[§Bulkhead Metrics] "resilience4j.bulkhead.available.concurrent.calls" - "The number of available permissions"

[§ThreadPoolBulkhead Metrics] "resilience4j.bulkhead.queue.depth" measures "The queue depth. The number of tasks waiting to be executed"

[§RateLimiter Metrics] "resilience4j.ratelimiter.available.permissions" and "resilience4j.ratelimiter.waiting.threads"

Claims Extracted / 추출된 주장

Claim ID Claim (이 자료가 직접 말하는 것) Evidence quote Strength Applies to Does not prove
R4J-MICROMETER-C1 Resilience4j 는 Micrometer 모듈을 제공하며 이는 InfluxDB, Prometheus 등 주요 monitoring system 으로의 노출을 지원한다 [§Micrometer] "Resilience4j provides a module for Micrometer which supports most popular monitoring systems like InfluxDB or Prometheus." official-vendor-doc Resilience4j 2.x + Micrometer 1.x 특정 monitoring system 의 정확한 scrape 설정/dashboard 는 본 인용 범위 밖
R4J-MICROMETER-C2 CircuitBreaker metric 은 MeterRegistry 에 bind 해서 노출하며, 호출 결과는 resilience4j.circuitbreaker.calls 라는 metric 으로 노출되고 kind (successful/failed/ignored) 와 name (instance 명) tag 가 붙는다 [§CircuitBreaker Metrics] "The following code snippet shows how to bind CircuitBreaker metrics to a MeterRegistry." + "resilience4j.circuitbreaker.calls" with tags: "kind="failed" kind="successful" kind="ignored"" and "name="backendA"" official-vendor-doc Tagged*Metrics binder 또는 spring-boot-starter auto-config 사용 시 Spring Boot starter 가 자동으로 bind 한다는 뜻은 본 인용에서는 명시 안 됨 — starter 별 페이지 참조 필요
R4J-MICROMETER-C3 CircuitBreaker state 는 resilience4j.circuitbreaker.state 라는 Gauge 로 노출되며 가능한 state 는 5개: closed, open, half_open, forced_open, disabled [§CircuitBreaker Metrics] "resilience4j.circuitbreaker.state" is a Gauge with states: "closed" "open" "half_open" "forced_open" "disabled" official-vendor-doc Resilience4j CircuitBreaker state transition latency / failure rate threshold 등 다른 metric 은 별도 인용 필요
R4J-MICROMETER-C4 Retry metric 은 TaggedRetryMetrics.ofRetryRegistry(retryRegistry).bindTo(meterRegistry) 패턴으로 등록한다 [§Retry Metrics] "TaggedRetryMetrics.ofRetryRegistry(retryRegistry).bindTo(meterRegistry);" official-vendor-doc Resilience4j Retry + Micrometer 수동 binder spring-boot-starter 사용 시 자동 bind 여부는 본 인용 범위 밖
R4J-MICROMETER-C5 Bulkhead 는 resilience4j.bulkhead.available.concurrent.calls metric 으로 남은 permission 수를 노출한다 [§Bulkhead Metrics] "resilience4j.bulkhead.available.concurrent.calls" - "The number of available permissions" official-vendor-doc Semaphore 기반 Bulkhead ThreadPoolBulkhead 의 metric 명은 다름 (별도 C6 참조)
R4J-MICROMETER-C6 ThreadPoolBulkhead 의 큐 깊이는 resilience4j.bulkhead.queue.depth metric 으로 노출되며 "큐에서 실행 대기 중인 task 수" 를 의미한다 [§ThreadPoolBulkhead Metrics] "resilience4j.bulkhead.queue.depth" measures "The queue depth. The number of tasks waiting to be executed" official-vendor-doc ThreadPoolBulkhead core thread pool size / max thread pool size 의 metric 명은 본 인용 범위 밖
R4J-MICROMETER-C7 RateLimiter 는 resilience4j.ratelimiter.available.permissions (남은 permission) 과 resilience4j.ratelimiter.waiting.threads (대기 thread 수) 두 metric 을 노출한다 [§RateLimiter Metrics] "resilience4j.ratelimiter.available.permissions" and "resilience4j.ratelimiter.waiting.threads" official-vendor-doc Resilience4j RateLimiter refresh period / limit-for-period 의 metric 노출 여부는 본 인용 범위 밖

Usage Boundaries / 적용 경계

  • 이 자료가 직접 증명하는 것:
    • R4J-MICROMETER-C1: Micrometer 모듈의 Prometheus/InfluxDB 지원 사실
    • R4J-MICROMETER-C2: CircuitBreaker calls metric 명 + kind/name tag vocabulary
    • R4J-MICROMETER-C3: CircuitBreaker state 의 5개 정확한 state 이름
    • R4J-MICROMETER-C4: Retry metric binder API 정확한 호출 형태
    • R4J-MICROMETER-C5: Bulkhead 의 available concurrent calls metric 명
    • R4J-MICROMETER-C6: ThreadPoolBulkhead 의 queue depth metric 명 + 의미
    • R4J-MICROMETER-C7: RateLimiter 의 두 핵심 metric 명
  • 이 자료가 증명하지 않는 것:
    • Spring Boot starter (resilience4j-spring-boot3) 가 자동으로 모든 metric 을 bind 한다는 뜻 — auto-config 동작은 별도 starter 문서 필요
    • Histogram / percentile (p50/p95/p99) 가 default 로 노출된다는 뜻 — Micrometer side 의 meterFilter / distributionStatistic 설정 필요할 수 있음
    • Prometheus 의 scrape 주기, retention, alerting rule 의 정확한 형태
    • CircuitBreaker state Gauge 의 정확한 라벨 인코딩 (state 별 별도 series 인지 단일 series 의 value 인지)
  • 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
    • ca-tmpl 의 resilience4j-spring-boot3 의존성이 위 metric 들을 /actuator/prometheus 에 자동 노출하는지 (management.endpoints.web.exposure.include=prometheus)
    • resilience4j.circuitbreaker.state{state="open"} == 1 형태의 PromQL 가 작동하는지 (state 인코딩 검증)
    • alerting rule 작성 시 kind="failed" label matcher 가 정확히 매치되는지

메모 / Notes