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 |
|
|
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 vocabularyR4J-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
stateGauge 의 정확한 라벨 인코딩 (state 별 별도 series 인지 단일 series 의 value 인지)
- Spring Boot starter (
- 내 프로젝트에 적용하려면 추가 확인이 필요한 것:
- 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 가 정확히 매치되는지
- ca-tmpl 의
메모 / Notes
- 인용 1 해석 후보 (미검증):
- state Gauge 의 value 가 boolean(0/1) 인지 enum index 인지는 본 인용에서 미명시 → 실측 필요
- 추가로 봐야 할 동일 출처 페이지:
- https://resilience4j.readme.io/docs/getting-started-3 (Spring Boot starter auto-config)
- https://resilience4j.readme.io/docs/circuitbreaker (CircuitBreaker 동작 원리)
Related / 관련
- 같은 주제 다른 official-doc:
- raw/official-docs/spring-restclient-builder-reference (outbound client 의 baseline)
- 인용하는 branch:
- 인용하는 project:
- 인용하는 wiki: (미작성)