Actuator 메트릭 생성 하기
- 개발
- 2026. 3. 11. 23:41
Actuator
k6를 통해 부하 테스트와 API 테스트를 진행하면서 한 가지 한계를 느꼈습니다.요청을 보내고 결과를 확인하는 것은 가능했지만, 실제로 부하가 걸리는 동안 애플리케이션 내부에서 어떤 변화가
b-programmer.tistory.com
이전 장에서 Actuator에 대해 학습해봤습니다. Actuator는 Spring Boot 애플리케이션의 상태 정보를 확인할 수 있도록 제공되는 기능이라는 것을 알 수 있었습니다. Actuator를 통해 애플리케이션의 상태뿐만 아니라 메트릭 정보도 확인할 수 있으며, Prometheus와 같은 모니터링 시스템과 연동할 수 있는 endpoint도 제공됩니다. 또한 기본적으로 제공되는 다양한 메트릭 정보를 확인할 수 있다는 점도 알 수 있었습니다.

그렇다면 기본적으로 제공되는 메트릭 정보 외에도, 애플리케이션에서 필요한 메트릭을 직접 추가할 수 있을까요?
그렇다면 기본적으로 제공되는 메트릭 정보 외에도, 애플리케이션에서 필요한 메트릭을 직접 추가할 수 있을까요?
다행스럽게도 커스텀 메트릭을 추가하는 것도 가능합니다.
보통은 Micrometer의 MeterRegistry를 주입받아 메트릭을 추가합니다.
Actuator가 메트릭 정보를 외부로 노출하는 창구라면, Micrometer는 메트릭을 생성하고 관리하는 도구에 가깝다고 볼 수 있습니다.
MeterRegistry는 Micrometer에서 모든 메트릭을 등록하고 관리하는 중앙 저장소 역할을 합니다.
메트릭은 보통 다음과 같은 흐름으로 수집되고 노출됩니다.
Application -> MeterRegistry -> Micrometer -> Actuator endpoint
즉, 애플리케이션에서 메트릭을 생성하고 MeterRegistry에 등록하면, Actuator가 이를 endpoint 형태로 외부에 노출하게 됩니다.
Micrometer에서는 이러한 메트릭들을 Meter라는 개념으로 관리합니다. 대표적인 Meter의 종류로는 다음과 같은 것들이 있습니다.
- Counter : 이벤트 발생 횟수 측정
- Gauge : 현재 값 측정
- Timer : 작업 수행 시간 측정
- DistributionSummary : 값의 분포 측정
해당 내용은 Micrometer 공식 문서를 통해 확인할 수 있습니다.
Supported Monitoring Systems :: Micrometer
AppOptics, Atlas, Azure Monitor, Cloudwatch, Datadog, Datadog StatsD, Dynatrace, Elastic, Humio, Influx, KairosDB, New Relic, Prometheus, SignalFx, Sysdig StatsD, Telegraf StatsD, Wavefront
docs.micrometer.io
저는 다음과 같이 작성하였습니다.

count를 이용했고 다음과 같은것을 확인할 수 있습니다.
- 락 획득 성공 횟수
- 락 충돌 횟수
- Redis 장애로 fallback 된 횟수
- unlock 실패 횟수

acquire time을 이용했고 다음과 같은 것을 확인할 수 있습니다.
- 락 획득 성공까지 걸린 시간
- 락 충돌을 판단하기까지 걸린 시간
- Redis 장애 발생 후 fallback 판단까지 걸린 시간

task time을 이용했고 다음과 같은 것을 확인할 수 있습니다.
- 락 획득 이후 실제 비즈니스 로직 수행 시간
- 락 구간 내부 작업의 병목 여부
- 성공/실패 케이스별 작업 시간 차이
마무리
메트릭을 메트릭을 생성하고, Actuator를 이용해서 생성한 메트릭을 노출을 시킬수 있습니다. 그걸 프로메테우스가 수집 하고 그라파나를 통해 화면으로 보여줄 수 있는거죠. 이전에 이러한 사실을 모르고 제가 설정을 잘못했는지에 대해 고민한적이 있었습니다. 하지만 알고보니 메트릭을 설정하지 않아서 발생한거라는 생각이 문득 드네요. 내일 프로메테우스랑 그라파나를 연동시켜봅시다.
'개발' 카테고리의 다른 글
| 문제 발견: LazyConnectionDataSourceProxy 톺아보기 (1) | 2026.03.13 |
|---|---|
| Actuator (0) | 2026.03.11 |
| OpenAI는 어떻게 PostgreSQL을 스케일했을까 (0) | 2026.03.10 |
| 프록시 JDBC(2) (0) | 2026.03.09 |
| 프록시 JDBC(1) (0) | 2026.03.08 |