김영한 님의 강의에서는 마이크로미터, 그라파나, 프로메테우스에 대한 상세 내용을 다루는 것은 강의 범위를 벗어나기 때문에 기초 내용과 올바른 방향을 설명하는데 초점을 맞추고 더 자세한 내용이 필요한 경우 별도의 학습이 필요하고 공식 문서를 참고하라고 말씀하신다.
이전 내용을 통해서 프로메테우스와 그라파나를 성공적으로 연동하였다. 이제 애플리케이션에 직접 내가 문제를 발생시킨 다음 그라파나를 통해 어떻게 모니터링 하는지에 대한 내용을 다루고자 한다. 실무에서 주로 발생하는 예시를 다루고자 한다.
- CPU 사용량 초과
- JVM 메모리 사용량 초과
- DB 커넥션 풀 고갈
- 에러 로그 급증
직접 장애 발생 시키기 (실습 환경: macOS / Apple M2 )
1. CPU 사용량 초과(공유 대시 보드 ID: 11378)
cpu사용량을 늘리려면 루프를 통해 확인하는 것이 좋다. 컨트롤러를 생성하고 for문을 통해 루프를 간단하게 돌려본다.
http://localhost:8080/cpu를 2번 호출해 보았다. 아래의 사진처럼 로딩 중이라는 표시가 나타났다.
공유 대시 보드(ID: 11378)로 들어가보면 CPU Usage페널에 cpu 사용량이 증가하는 것을 확인 할 수 있다.
2. JVM 메모리 사용량 초과(공유대시보드 ID: 4701)
JVM 메모리를 증가시킬 코드를 작성하고 http://localhost:8080/jvm를 여러번 호출하니 대시보드에 메모리가 증가하는 모습을 바로 확인할 수 있었다.
메모리가 다 찼기 때문에 인텔리제이에서 OutOfMemoryError메시지를 보여준다.
3. DB 커넥션 풀 고갈(공유대시보드 ID: 11378)
DB커넥션 풀을 고갈시키기 위한 코드를 작성하고 http://localhost:8080/jdbc를 5번 호출하면서 대시보드에서 HikariCp의 Connection이 증가하는 것을 확인한다.(기본적으로 10개를 제공해준다.)
커넥션 풀을 10번 이상 호출했을 때 페이지가 로딩 중이라는 화면이 뜬다. 잠시만 기다리면 인텔리제이에서 SQLTransientConnectionException메시지를 볼 수 있다. 마지막으로 대시보드로 접속해 Connection Timeout Count가 증가하는 것을 확인한다.
4. 에러 로그 급증(공유대시보드 ID: 11378)
지금까지의 1,2,3번의 문제상황을 읽었다면 이번 로그 확인하는 방법 실습도 똑같기 때문에 로그를 증가시킬 코드와 대시보드에 나타나는 결과만 보여주도록 하겠다.
프로메테우스와 그라파나를 연동하고 실제로 장애를 일으켜 보면서 눈으로 확인하는 방법은 재미있었다. 하지만 실무에서는 장애가 발생한 상황이오면 빨리 모니터링 툴을 확인하고 대응해한다. 참고로 메트릭을 보는 것은 정확한 값을 보는 것이 목적이 아니라 실시간성과 대략적인 값과 추세를 확인하는 것이 주 목적이다.
'스프링부트 > 액추에이터' 카테고리의 다른 글
3. 스프링 부트 액추에이터(그라파마 연동) (1) | 2024.06.02 |
---|---|
2. 스프링 부트 액추에이터(마이크로미터, 프로메테우스 연동) (0) | 2024.06.02 |
1. 스프링 부트 액추에이터 (1) | 2024.06.01 |