스프링/스프링부트

메트릭의 종류들

chanhee01 2023. 10. 2. 15:56

마이크로미터와 액츄에이터가 기본으로 제공하는 메트릭

 

JVM 메트릭 - jvm

  • 메모리 및 버퍼 풀 세부 정보
  • 가비지 수집 관련 통계스레드 활용
  • 로드 및 언로드된 클래스 수
  • JVM 버전 정보
  • JIT 컴파일 시간

 

시스템 메트릭 - system

  • CPU 지표
  • 파일 디스크립터 메트릭
  • 가동 시간 메트릭
  • 사용 가능한 디스크 공간 - disk.free, disk.total

 

애플리케이션 시작 메트릭 - application

application.started.time : 애플리케이션을 시작하는데 걸리는 시간 - ApplicationStartedEvent로 측정

-> ApplicationStartedEvent : 스프링 컨테이너가 완전히 실행된 상태이다. 이후에 커맨드 라인 러너가 호출된다.

application.ready.time : 애플리케이션이 요청을 처리할 준비가 되는데 걸리는 시간 - ApplicationReadyEvent 로 측정

-> ApplicationReadyEvent : 커맨드 라인 러너가 실행된 이후에 호출된다.

 

 

 

스프링 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가 많이 호출되었는지, 호출되는 시간의 max값과 total 값들을 볼 수 있으면 이외에도 다양한 정보들을 제공해준다.

 

 

데이터 소스 메트릭

최대, 최소 커넥션과 대기 커넥션, hikaricp.를 통해 커넥션 풀의 정보도 확인할 수 있다.

 

 

로그 메트릭

tag 필터를 통해 각각의 로그 레벨에 따라서 로그가 몇 번 호출되었는지 확인할 수 있다. 에러 로그가 급격하게 많아진다면 대처를 할 수 있다.

 

 

톰캣 메트릭

톰캣 메트릭은 유용하고 자주 사용된다고 한다.

server:
  tomcat:
    mbeanregistry:
      enabled: true

application.yml에 위의 코드를 추가하면 톰캣 메트릭이 활성화된다.

 

tomcat.threads.config.max로 접근하면 value가 나오는데, tomcat thread가 200이라는 소리는 최대 200명의 고객을 받을 수 있다는 뜻이다.

tomcat.threads.busy는 바쁘게 동작하는 요청이 1개라는 것을 확인해준다. 만약 value가 200개가 된다면 서버 장애가 발생할 것이다.

 

 

이외에도 너무 많은 메트릭이 있어서 다 정리하지는 못했다.

또한 사용자가 메트릭을 직접 정의하는 것도 가능하다. 직접 정의하는 것은 나중에 따로 포스팅하겠다.

 

 

 

메트릭은 실시간 정보를 확인하는 것이기 때문에 지속적으로 수집하고 보관할 수 있는 데이터베이스가 필요하다. 그리고 이러한 메트릭들을 그래프를 통해서 한 눈에 확인하는 대시보드도 필요하다.

 

다음 포스팅부터 이 기능들은 프로메테우스와 그라파나에 대해서 정리할 것이다.