스프링 부트 - 핵심 원리와 활용 - 섹션10. 모니터링 메트릭 활용
CS/김영한 스프링 강의

스프링 부트 - 핵심 원리와 활용 - 섹션10. 모니터링 메트릭 활용

전 섹션에 했던건 스프링 서버의 전체적인 환경 관리였고, 나만의 비즈니스를 모니터링 하려면 직접 정의해야 한다. 그래서 해보는거다.

 

 

프로젝트 세팅한다.

AtomicInteger는 race 방지하려고

 

이제 이걸 본격적으로 메트릭에 넣어보자. 메트릭에 넣는것도 마이크로미터를 사용한다.

현재 카운터를 넣으니, 마이크로미터의 카운터를 가져와 넣어준다. 그럼 실제 메트릭에서도 저게 등록된다(단, 최소 한번은 실행해야 등록된다).

 

이 정보 또한 프로메테우스에 가게되고, 다른것들 처럼 그라파나에서도 사용 가능하게된다.

 

 

 

 

이 등록을 @Counter로 더 편하게 할 수 있다.

태그의 클래스와 메소드 등은 해당 클래스 이름과 함수 이름으로 알아서 적용한다.

CountedAspect를 등록한 뒤 @Counted를 하면 된다. 얘도 AOP를 하는거다.

 

 

tag가 같기 때문에 알아서 등록된다.

 

 

@Timer는 카운터랑 유사하게 시간을 측정하는 좀 특이한 메트릭이다.

 

이제 이 타임용 @Timed 어노테이션을 사용하자.

 

exception 태그도 추가됨

 

 

 

마지막으로 게이지

Metric types | Prometheus

 

Metric types | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

게이지는 카운터와는 다르게, 요청했을 때 그 실제 비즈니스 값을 가져와야 하는 특징이 있다. 그래서 반환할 때 실제 값을 그때마다 계산해서 준다.

 

1초마다 실행되는건 프로메테우스가 1초마다 가져오게 했으므로.

 

 

 

더 간결한 코드

 

 

모아놓고 보니 좋다.

 

 

 

마지막으로 실무 팁. 진짜 제일 좋은 팁인듯..