🌲 Micrometer
서비스를 운영할 때 어플리케이션은 수많은 지표들을 확인해야한다. 이런것을 확인하기 위해 모니터링을 하게 되는데 우리가 실제로 정리되어 있는 내용을 화면(대시보드)를 통해 보기 위해 다양한 모니터링 툴을 사용한다. 또한 특정 모니터링을 사용할땐 해당 모니터링 툴에 맞는 포맷에 맞추어 측정하고 전달하는 것이 필요하다.
하지만 우리가 특정 모니터링 툴을 사용하다가 툴이 변경되면 코드를 전체적으로 변경해야하는 문제가 발생한다.
이 문제를 해결해주는 것이 바로 마이크로미터(메트릭 퍼사드)라고 한다
- 메트릭 퍼사드라고도 불리는 마이크로미터는 어플리케이션의 메트릭(측정지표)을 마이크로미터가 정한 표준 방법으로 모아 제공한다. 즉, 추상화를 통해 구현체를 쉽게 갈아끼울수 있도록 해둔다.
- 스프링 부트의 actuator는 마이크로미터를 기본적으로 내장되어있다
- 따라서 개발자는 마이크로미터가 정한 표준 방법으로 메트릭을 전송하기만 하면 된다. 그리고 구현체를 선택하기만 하면 된다. 그렇게 되면 모니터링툴을 바꿀때 모든 코드를 변경하는 것이 아닌 해당 구현체만 변경하면 되는 것이다.
♪ 마이크로미터의 핵심 기능
- Counter(카운터) : 단조롭게 증가하는 단일 누적 측정 항목
- Gauge(게이지) : 임의로 오르내릴수 있는 단일 숫자 값을 나타내는 메트릭
ex ) CPU 사용량, 메모리 사용량 등 - Timer : 짧은 지연 시간, 이벤트의 사용 빈도를 측정한다. 누적실행수, 실행 시간의 합, 최대 실행 시간을 한번에 측정한다
- Tag, 레이블 : 데이터를 나누어서 확인 할 수 있다. 카디널리티가 낮으면서 그룹화 할 수 있는 단위에 사용해야 한다.
🌲 metric
micrometer가 내장되어 있는 actuator는 지표 수집을 @AutoConfiguration을 통해 자동으로 등록해준다. 이렇게 actuator를 사용하면 수 많은 메트릭을 편리하게 사용할 수 있다.
♪ metrics 엔드포인트 ( http://localhost:8080/acuator/metrics )
actuator에서 사용하는 metrics에 관한 엔드포인트는 굉장히 많다 밑에 사진에 보이는 것보다 더 많이 존재한다.
♪ 다양한 metrics
- JVM 메트릭 (jvm. 으로 시작)
- 메모리 및 버퍼 풀 세부 정보
- 가비지 수집 관련 통계
- 스레드 활용
- 로드 및 언로드된 클래스의 수
- JVM 버전 정보
- JIT 컴파일 시간
- 시스템 메트릭 (system, procees, disk 로 시작)
- CPU 지표
- 파일 디스크립터 메트릭
- 가동 시간 메트릭
- 사용 가능한 디스크 공간
- 어플리케이션 시작 메트릭
- application.started.time : 어플리케이션을 시작하는데 걸리는 시간
- ApplicationStartedEvent : 스프링 컨테이너가 완전히 실행된 상태이다. started 측정도구이고 이후에 커맨드 라인 러너가 호출된다
- application.ready.time : 어플리케이션이 요청을 처리할 준비가 되는데 걸리는 시간
- ApplicationReadyEvent : 커맨드 라인 러너가 실행된 이후에 호출된다
- 스프링 MVC 메트릭 ( MVC Controller가 처리하는 모든 요청을 다룬다)
- uri : 요청 URI
- method : GET, POST 같은 HTTP 메소드
- status : 200, 400, 500 과 같은 HTTP Status
- exception : 예외
- outcome : 상태 코드를 그룹으로 모아서 확인
- 데이터 소스 메트릭
- DataSource, 커넥션 풀에 관한 메트릭을 확인할 수 있다. jdbc.connections 로 시작되고 최대 커넥션, 최소 커넥션, 활성 커넥션, 대기 커넥션 수등을 확인할 수 있다. 히카리 커넥션 풀을 사용하면 hikaticp. 를 통해 히카리 커넥션 풀의 자세한 메트릭을 확인 할 수 있다
- 로그 메트릭
- logback.events: logback 로그에 대한 메트릭을 확인할 수 있습니다. trace, debug, info, warn, error 각각의 로그 레벨에 따른 로그 수를 확인할 수 있다.
- 톰캣 메트릭
- 톰캣 메트릭은 tomcat. 으로 시작된다. 톰캣 메트릭을 모두 사용하려면 옵션을 켜야한다.
- 톰캣의 최대 쓰레드, 사용 쓰레드 수를 포함한 다양한 메트릭을 확인 할 수 있다.
server:
tomcat:
mbeanregistry:
enabled: true
- 기타
- HTTP 클라이언트 메트릭(RestTemplate, WebClient)
- 캐시 메트릭
- 작업 실행과 스케줄 메트릭
- 스프링 데이터 레포지토리 메트릭
- MongoDB 메트릭
- Redis 메트릭
'MSA' 카테고리의 다른 글
👨👧👦 Kafka 와 JDBC Connect 설치 및 환경 확인 (0) | 2024.04.09 |
---|---|
👨👧👦7. Spring Cloud Bus ( with RabbitMQ ) (0) | 2024.04.02 |
👨👧👦 MSA에 대해.. (0) | 2024.03.25 |
👨👧👦 AntiFragile 과 Cloud Native(feat. 12Factors) (0) | 2024.03.25 |