WEB BE Repo/Spring
Micrometer
조금씩 차근차근
2025. 2. 20. 21:40
전투에 실패한 지휘관은 용서할 수 있지만, 경계에서 실패하는 지휘관은 용서할 수 없다
- 개발 하고 끝내버리면, DevOps 경험, 좋은 품질, 유지보수가 사라진다.
- 경계는 확실하게 해라
- 개발도 하고, 모니터링도 구축해보고, 해야 한다.
- 메트릭을 보는 이유
- 정확한 값을 확인하기 위해?
- X
- 값의 추세를 보기 위해?
- O
- 큰 그림에서, 흐름이 어떻게 흘러가고 있는지 파악
- 정확한 값을 확인하기 위해?
마이크로미터란?
- 표준 측정 방식을 정한 인터페이스
- "애플리케이션 매트릭 파사드"
- 애플리케이션의 매트릭(측정 지표)을 마이크로미터가 정한 표준 방법으로 모아서 제공
- 스프링부트 액츄에이터는 마이크로미터를 기본으로 내장해서 사용
- 개발자는 마이크로미터가 정한 표준 방법으로 매트릭을 전달하면 된다
- 마이크로미터는 이미 지표 수집 기능을 이미 만들어서 제공
- 오토컨픽으로 자동으로 등록
- 마이크로미터 전체 그림
- actuator/metrics 링크에서 가능한 선택지 확인 가능
- 쿼리 파라미터 형태의 TAG로 추가 정보 확인 가능
- /actuator/metrics/logback.events ?tag=level:error
마이크로미터와 액츄에이터가 기본으로 제공하는 매트릭의 종류 - /actuator/metrics
- JVM 매트릭 (jvm. 으로 시작)
- 메모리 및 버퍼 풀 세부 정보
- 가비지 수집 관련 통계
- 스레드 활용
- 로드 및 언로드된 클래스 수
- JVM 버전 정보
- JIT 컴파일 시간
- 시스템 매트릭 (system. , process. , disk. 으로 시작)
- CPU 지표
- 파일 디스크립터 메트릭
- 가동 시간 메트릭
- 사용 가능한 디스크 공간
- 애플리케이션 시작 메트릭
- application.started.time
- ApplicationStartedEvent 로 측정
- application.ready.time
- ApplicationReadyEvent 로 측정
- application.started.time
- 스프링 MVC 메트릭
- 스프링 mvc 컨트롤러가 처리하는 모든 요청
- http.server.requests
- TAG를 사용해서 다음 정보를 분류해서 확인 가능
- uri
- 요청 URI
- method
- GET ,POST 같은 HTTP 메서드
- status
- 200 ,400 ,500 같은 HTTP Status 코드
- exception
- 예외
- outcome: 상태코드를 그룹으로 모아서 확인
- 1xx:INFORMATIONAL ,
- 2xx:SUCCESS ,
- 3xx:REDIRECTION ,
- 4xx:CLIENT_ERROR ,
- `5xx:SERVER_ERROR
- uri
- 데이터소스 메트릭 jdbc.connections. 로 시작
- 데이터 소스, 커넥션 풀에 관한 메트릭 확인 가능
- 로그 메트릭 logback.events 로 시작
- 각각의 로그 레벨에 따른 로그 수 확인 가능
- error 로그 수가 급격히 높아진다면 위험한 신호
- 톰캣 메트릭 (tomcat. 으로 시작)
- 톰캣 메트릭 모두 사용하려면 server.tomcat.mbeanregistry.enabled: true 로 설정해야함
- 톰캣의 최대 스레드, 사용 쓰레드 수, 등등
- tomcat.threads.busy
- 현재 바쁘게 동작하는 스레드
- tomcat.threads.config.max
- 최대로 받을 수 있는 요청 스레드 수
- tomcat.threads.busy
- HTTP 클라이언트 메트릭
- RestTemplate
- WebClient
사용자 정의 메트릭
- 사용자가 직접 메트릭을 정의해서 사용 가능
- EX) 주문 수, 취소 수
한계
- 매트릭을 지속적으로 수집하고 보관할 데이터베이스가 필요함
- "프로메테우스"
- 해당 메트릭들을 그래프를 통해 한눈에 보게 해줄 대시보드가 필요함
- "그라파나"