You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
애플리케이션에 문제가 발생했을 때 그라파나를 통해서 어떻게 모니터링 하는지 확인해보자.
실제 우리가 작성한 애플리케이션에 직접 문제를 발생시킨 다음에 그라파나를 통해서 문제를 어떻게 모니터링 할 수 있는지 확인해보자.
실무에서 주로 많이 발생하는 다음 4가지 대표적인 예시를 확인해보자.
CPU 사용량 초과
JVM 메모리 사용량 초과
커넥션 풀 고갈
에러 로그 급증
CPU 사용량 초과
CPU에 간단히 부하를 주는 코드를 작성해보자.
TrafficController - cpu() 추가
결과
계속 요청하면서 대시보드를 확인해보면 JVM 메모리 사용량이 계속 증가하다가 최대치를 넘는 순간 메트릭이 잡히지 않는다.
JVM 내부에서 OOM이 발생했기 때문이다.
기다려보면 애플리케이션 로그에서 다음과 같은 오류를 확인할 수 있다.
java.lang.OutOfMemoryError: Java heap space
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
14. 그라파나 - 메트릭을 통한 문제 확인
애플리케이션에 문제가 발생했을 때 그라파나를 통해서 어떻게 모니터링 하는지 확인해보자.
실제 우리가 작성한 애플리케이션에 직접 문제를 발생시킨 다음에 그라파나를 통해서 문제를 어떻게 모니터링 할 수 있는지 확인해보자.
실무에서 주로 많이 발생하는 다음 4가지 대표적인 예시를 확인해보자.
CPU 사용량 초과
CPU에 간단히 부하를 주는 코드를 작성해보자.
TrafficController - cpu() 추가
실행
http://localhost:8080/cpu
결과
대시보드를 확인해보면 CPU 사용량이 증가하는 것을 확인할 수 있다. 아마 요청 하나당 코어 하나를 100% 사용할 것이다. 더 많이 요청하면 더 많은 CPU를 사용한다.
JVM 메모리 사용량 초과
메모리 사용을 누적하는 코드를 추가해보자.
TrafficController - jvm() 추가
리스트에 문자를 계속해서 추가한다.
실행
http://localhost:8080/jvm
(여러 번 요청하고 JVM 메모리 사용량을 확인하자)
결과
계속 요청하면서 대시보드를 확인해보면 JVM 메모리 사용량이 계속 증가하다가 최대치를 넘는 순간 메트릭이 잡히지 않는다.
JVM 내부에서 OOM이 발생했기 때문이다.
기다려보면 애플리케이션 로그에서 다음과 같은 오류를 확인할 수 있다.
java.lang.OutOfMemoryError: Java heap space
커넥션 풀 고갈
TrafficController - jdbc() 추가
실행
http://localhost:8080/jdbc
(10번 이상 실행하자)
결과
Active 커넥션이 커넥션 풀의 최대 숫자인 10개를 넘어가게 되면, 커넥션을 획득하기 위해 대기(Pending)하게 된다.
그래서 커넥션 획득 부분에서 쓰레드가 대기하게 되고 결과적으로 HTTP 요청을 응답하지 못한다.
DB 커넥션을 획득하기 위해 대기하던 톰캣 쓰레드가 30초 이상 DB 커넥션을 획득하지 못하면 다음과 같은 예외가 발생하면서 커넥션 획득을 포기한다.
Connection is not available, request timed out after 30004ms.
에러 로그 급증
애플리케이션에서 ERROR 레벨의 로그가 급증한다면 심각한 문제가 발생한 것으로 이해할 수 있다.
TrafficController - errorLog() 추가
실행
http://localhost:8080/error-log
(여러번 실행하자)
결과
ERROR Logs , logback_events_total 메트릭에서 ERROR 로그가 급증하는 것을 확인할 수 있다.
15. 정리
참고: 메트릭을 보는 것은 정확한 값을 보는 것이 목적이 아니다. 대략적인 값과 추세를 확인하는 것이 주 목적이다.
Beta Was this translation helpful? Give feedback.
All reactions