마이크로미터란
모니터링 툴에 지표 전달
모니터링 툴 변경하는 경우
마이크로미터 추상화
메트릭 확인
마이크로미터는 다양한 지표 수집 기능을 제공
스프링부트 액츄에이터는 마이크로미터가 제공하는 지표 수집을 자동 구성으로 제공
/actuator/metrics
에서 기본 제공 메트릭 확인 가능
/actuator/metrics/{name}
으로 names별로 확인 가능
tag 필터
/actuator/metrics/jvm.memory.used?tag=area:heap
으로 jvm 메모리 사용량 중에서 파라미터로 넘겨진 heap영역만 조회다양한 메트릭(추가 메트릭 많음)
참조: https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html#actuator.metrics.supported
JVM 메트릭
jvm.
으로 시작시스템 메트릭
system. process. disk.
로 시작애플리케이션 시작 메트릭
application.started.time
: 애플리케이션 시작하는데 걸리는 시간(ApplicationStartedEvent로 측정)application.ready.time
: 애플리케이션이 요청을 처리한 준비가 되는데 걸리는 시간(ApplicationReadyEvent로 측정)스프링 MVC 메트릭
http.server.requests
로 접근데이터소스 메트릭
jdbc.connections
으로 시작hikaricp.connections
에서 좀 더 상세한 정보 확인 가능로그 메트릭
logback.events
로 시작톰캣 메트릭
tomcat.
으로 시작tomcat.session.
관련 정보만 노출tomcat.threads.busy, tomcat.threads.config.max
메트릭은 유용함사용자 정의 메트릭
전체 구조
프로메테우스란
프로메테우스는 /actuator/metrics
를 통해 보았던 JSON 이해하지 못지만 마이크로미터를 통해 해결 가능
각 메트릭은 마이크로미터 표준을 사용하기 때문에 구현만 지정해주면됨
gradle
자동으로 마이크로미터 프로메테우스 구현체를 등록해서 동작하도록 설정
/actuator/prometheus
엔드포인트 자동 추가
포맷의 차이
jvm.info → jvm_info
와 같이 .
대신 _
사용logback.events → logback_events_total
로그수 처럼 숫자가 증가하는 메트릭은 카운터라고 하는데, 프로메테우스에서는 카운트 메트릭의 마지막에 _total
이 관례http.server.requests
내부 요청수, 시간 합, 최대 시간 정보를 가지는데 프로메테우스는 분리해서 사용
http_server_requests_seconds_count
: 요청수http_server_requests_seconds_sum
: 시간 합(요청수의 시간을 합함)http_server_requests_seconds_max
: 최대 시간(가장 오래걸린 요청의 시간 → 최근 x분)![Untitled](<https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1a3133a2-edff-4a57-ab05-16589d1122c1/Untitled.png>)
![Untitled](<https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3531143e-0bf6-4983-bd8c-1140849e8763/Untitled.png>)
1. 애플리케이션에서 프로메테우스가 수집할 수 있는 데이터를 만들었으니 주기적으로 수집할 수 있도록 설정해야함
2. 프로메테우스 폴더의 `prometheus.yml`을 수정(depth 주의)
1. `job_name`: 수집하는 이름, 임의의 이름 사용해도 됨
2. `metrics_path`: 수집할 경로(애플리케이션에서 metrics 경로)
3. `scrape_interval`: 수집할 주기를 설정(기본값은 1분이며 보통 운영 단계에서 10s ~ 1m 정도 권장 → 너무 빠를 경우 성능 저하 원인)
4. `targets`: 수집할 애플리케이션 IP, PORT를 지정
5. 위 설정을 하게되면 1초마다 애플리케이션 metrics를 수집
3. [<http://localhost:9090>](<http://localhost:9090>)에서 확인 가능(status → targets)