스프링 부트 - 핵심 원리와 활용 - 섹션9. 마이크로미터, 프로메테우스, 그라파나
CS/김영한 스프링 강의

스프링 부트 - 핵심 원리와 활용 - 섹션9. 마이크로미터, 프로메테우스, 그라파나

마이크로미터는 여러 모니터링 툴들을 하나로 통합시켜 추상화한거다.

 

 

 

actuator에서 기본으로 제공하는 메트릭들을 보자.

 

tag로 범위를 한정해서 볼 수도 있다.

 

이런 cpu 사용량같은 os뿐 아니라 사용자 요청, 톰캣 쓰레드 갯수, 로그 등도 확인 가능하다. 특히 유용한건 tomcat.threads.busy, tomcat.threads.config.max 그리고 직접 사용자가 만드는 메트릭임. 사용자가 만드는건 실제 서비스로 사용하는 비즈니스 로직을 만들어 넣어 테스트해볼 수 있기 때문.

 

메트릭의 한계점은 어디에 기록하는게 아니라 순간순간 보는거라 데이터베이스에 넣어서 기록하는게 필요함.

그걸 프로메테우스가 해주고, 보는거는 그라파나로 본다.

 

 

 

설치부터 실습한다.

 

프로메테우스는 포트 9090가 기본임.

 

프로메테우스를 사용하기 위해 필요한 설정은 2가지인데, 프로메테우스가 받을 수 있는 형식을 줘야 하고, 프로메테우스에서 받은 형식을 주기적으로 긁어와 db에 저장해야 한다. 받을 수 있는 형식은 micrometer가 해줄거다.

프로메테우스 라이브러리만 추가하면 actuator에 프로메테우스용 url이 생긴다.

 

이 안에는 프로메테우스 나름대로 메트릭들 정보를 모은 형태다.

 

이제 수집하도록 설정할거다. 프로메테우스를 설치한 폴더에서 prometheus.yml를 수정하면 된다.

 

 

재시작 후, 설정에 있으면 된거다.

 

 

기본 기능은 원하는 metric의 history를 보는게 주다. 이걸로 범위검색, 예외, 그래프 등.. 을 다 알아보는 부가적인 요소들이 들어가 있다.

 

이 검색어에 원하는 기능을 사용하는 거다. 정규식 지원함.

 

게이지랑 카운터 개념을 알아야 하는데, 게이지는 cpu사용량 같이 매번 바뀌는거고, 카운터는 조회수같이 꾸준히 증가하는거.

 

문제는 카운터는 그냥 계속 쌓이는 것이기 때문에, 이거 만으로는 뭘 직관을 얻기가 어렵다.

그래서 카운터 정보는 보통 increase(), rate() 같은걸 쓴다.

 

 

이렇게 간단한 그래프를 그려볼 순 있지만, 뭔가 전체적인 대시보드는 보기가 힘들다.

그래서 그라파나를 사용한다.

 

 

설치하고 기본값으로 로그인해본다. 포트는 3000임

물론 이걸 하려면 서버 및 프로메테우스 다 실행하고 있는 상태여야 한다.

 

설정에서 프로메테우스 넣어준다.

 

그 뒤 대시보드를 만들고 패널을 만든다. 여기 패널에서 query를 code로 바꾼 뒤 아까 프로메테우스에서 했던 명령어들을 입력하면 띄워준다. 표시되는 이름 등도 변경 가능하다.

이걸 오른쪽 위의 save후 apply를 하면 짜잔하고 새로운 패널로써 만들어진다.

이걸 사용해서 디스크 사용량.. 등도 하면 된다.

 

지표들끼리 뺄셈도 가능해서 사용 용량을 표시해봤고, 단위도 사람이 읽을수 있는.. SI로 변경했다.

이런식으로 미리 만드는거를 알아서 잘 만들어놓은 대시보드가 있다. 이걸 활용해보자.

 

 

 

 

 

수정도 물론 된다. 이 jetty를 tomcat껄로 바꿔보자. edit로 수정 가능하다.

 

 

다른 것들도 해보자.

 

 

이제 한번 실제로 문제를 발생시켜보고 이걸 확인해보는걸 해보자.

 

 

 

cpu에 과부화를 주는 코드 작성 후 여러번 요청 날리니 진짜로 올라간다.

 

 

메모리도 죽을때까지 요청하니 죽고 서버가 닫혔다. 갑자기 지표가 끊어진건 한번에 너무 많이 해서..

 

다음은 db connection

 

커넥션을 안닫고 끝내니 쌓이다 끝내 pending으로 가고, pending된 요청은 30초 기다렸지만 끝내 못받아서 팅긴 모습이다. 이러면 큰일난거다. 요즘은 알아서 다 해주니 괜찮을 수 있지만 어쨌든 큰일난거는 변함없다.

 

다음은 에러 로그

갑자기 급증하면 뭔가 잘못되었다는걸 알 수 있다.