1. JVM 메트릭
- JVM 관련 메트릭을 제공
- jvm. 으로 시작함
- 메모리, 버퍼, 가비지 수집, 스레드, 로드 및 언로드된 클래스 수, JVM 버전 정보, JIT 컴파일 시간 등의 정보를 확인할 수 있음
"jvm.buffer.count",
"jvm.buffer.memory.used",
"jvm.buffer.total.capacity",
"jvm.classes.loaded",
"jvm.classes.unloaded",
"jvm.compilation.time",
"jvm.gc.live.data.size",
"jvm.gc.max.data.size",
"jvm.gc.memory.allocated",
"jvm.gc.memory.promoted",
"jvm.gc.overhead",
"jvm.info",
"jvm.memory.committed",
"jvm.memory.max", // jvm 메모리 최대치
"jvm.memory.usage.after.gc",
"jvm.memory.used", // jvm 메모리 사용량
"jvm.threads.daemon",
"jvm.threads.live", // jvm 스레드
"jvm.threads.peak",
"jvm.threads.states"
2. 시스템 메트릭
- 시스템 메트릭 제공
- system. process. disk. 으로 시작함
- CPU 지표, 파일 디스크립터 메트릭, 가동 시간 메트릭, 사용 가능한 디스크 공간 확인
"disk.free",
"disk.total",
"process.cpu.usage",
"process.files.max",
"process.files.open",
"process.start.time",
"process.uptime",
"system.cpu.count",
"system.cpu.usage",
"system.load.average.1m",
3. 애플리케이션 시작 메트릭
- 애플리케이션 시작 시간 메트릭 제공
"application.ready.time", // 애플리케이션을 시작하는데 걸리는 시간, ApplicationStartedEvent로 측정
"application.started.time" // 애플리케이션이 요청을 처리할 준비가 되는데 걸리는 시간, ApplicationReadyEvent로 측정
cf) 스프링은 내부에 여러 초기화 단계가 있고 각 단계별로 내부에서 애플리케이션 이벤트를 발행함
ApplicationStartedEvent: 스프링 컨테이너가 완전히 실행된 상태. 이후에는 커맨드 라인 러너가 호출됨
ApplicationReadyEvent: 커맨드 아니 러너가 실행된 이후에 호출됨
4. 스프링 MVC 메트릭
- 스프링 MVC 컨트롤러가 처리하는 모든 요청을 다룸
- 메트릭 이름: http.server.requests
- 태그를 사용해서 아래와 같은 정보를 분류해서 확인할 수 있음
- 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
5. 데이터 소스 메트릭
- DataSource, 커넥션 풀에 관한 메트릭 확인
- jdbc.connections. 로 시작함
- 최대 커넥션, 최소 커넥션, 활성 커넥션, 대기 커넥션 수 등을 확인할 수 있음
- 히카리 커넥션 풀을 사용하면 hikaricp. 를 통해 커넥션 풀의 자세한 메트릭을 확인할 수 있음
"hikaricp.connections",
"hikaricp.connections.acquire",
"hikaricp.connections.active",
"hikaricp.connections.creation",
"hikaricp.connections.idle",
"hikaricp.connections.max",
"hikaricp.connections.min",
"hikaricp.connections.pending",
"hikaricp.connections.timeout",
"hikaricp.connections.usage",
"jdbc.connections.active",
"jdbc.connections.idle",
"jdbc.connections.max",
"jdbc.connections.min",
6. 로그 메트릭
- logback.events: logback 로그에 대한 메트릭을 확인할 수 있음
- trace, debug, info, warn, error 각각의 로그 레벨에 따른 로그 수를 확인할 수 있음
- 예를 들어서 error 로그 수가 급격히 높아진다면 위험한 신호로 받아드릴 수 있음
"logback.events"
7. 톰캣 메트릭
- tomcat. 으로 시작함
"tomcat.sessions.active.current",
"tomcat.sessions.active.max",
"tomcat.sessions.alive.max",
"tomcat.sessions.created",
"tomcat.sessions.expired",
"tomcat.sessions.rejected"
- 톰캣 메트릭을 모두 사용하려면 다음 옵션을 켜야함(옵션을 켜지 않으면 tomcat.session. 관련 정보만 노출됨)
// application.yml
server:
tomcat:
mbeanregistry:
enabled: true
왜 실행시키면 이 내용이 삭제되는거징.......ㅎ?
8. 기타 메트릭
- HTTP 클라이언트 메트릭(RestTemplate, webClient)
- 캐시 메트릭
- 작업 실행과 스케줄 메트릭
- 스프링 데이터 리포지토리 메트릭
- 몽고DB 메트릭
- 레디스 메트릭
9. 사용자 정의 메트릭
- 사용자가 직접 메트릭을 정의할 수 있음
- 예를 들어서 주문수, 취소수를 메트릭으로 만들 수 있음
- 사용자 정의 메트릭을 만들기 위해서는 마이크로미터의 사용법을 먼저 이해해야 함
'Spring > Springboot' 카테고리의 다른 글
[Springboot] 맥북 m2 그라파나(grafana) 설치 (0) | 2023.12.31 |
---|---|
[Springboot] 프로메테우스 설치 (0) | 2023.12.31 |
[Springboot] 마이크로미터 (0) | 2023.12.31 |
[Springboot] 액츄에이터와 보안 (0) | 2023.12.31 |
[Springboot] 액츄에이터 - loggers 엔드포인트 (0) | 2023.12.30 |