개요
실무 모니터링 환경을 구성을 하기 위해서는 다음과 같은 3단계를 구축해야합니다.
- 대시보드
- 애플리케이션 추적
- 로그
대시보드
전체를 한눈에 볼 수 있는 가장 높은 뷰라고 할 수 있습니다.
제품
마이크로미터, 프로메테우스, 그라파나 등등
모니터링 대상
시스템 메트릭(CPU, 메모리)
애플리케이션 메트릭(톰캣 쓰레드 풀, DB 커넥션 풀, 애플리케이션 호출 수)
비즈니스 메트릭(주문수, 취소수)
애플리케이션 추적
주로 각각의 HTTP 요청을 추적, 일부는 마이크로서비스 환경에서 분산 추적할 수 있습니다.
제품
핀포인트(오픈소스), 스카우트(오픈소스), 와탭(상용), 제니퍼(상용)
https://github.com/pinpoint-apm/pinpoint
로그
가장 자세한 추적으로 원하는데로 커스텀 가능합니다.
멀티 쓰레드 환경에서 하나의 HTTP 요청흐름을 확인하기란 순차적으로 들어오지 않기에 어렵다고 볼 수 있습니다.
같은 HTTP 요청을 묶어서 확인할 수 있는 방법으로 보통 MDC 적용을 통해 구분합니다.
MDC란?
- Mapped Diagnostic Context
- 멀티 클라이언트 환경에서 다른 클라이언트와 값을 구별하여 로그를 추적할 수 있도록 제공되는 map
- ThreadLocal을 통해 구별할 수 있는 키 값을 저장하여 Thread가 살아있는 동안 해당 키값 활용
- 쓰레드 별로 값을 할당 및 관리할수 있음
- slf4j, logback, log4j2 등 Logger(로거)에서 MDC를 제공
파일로 직접 로그를 남기는 경우
- 일반 로그와 에러 로그는 파일을 구분해서 남기자
- 에러 로그만 확인해서 문제를 바로 정리할 수 있음
클라우드에 로그를 저장하는 경우
검색이 잘 되도록 구분합니다.
알람
모니터링 툴에서 일정 이상 수치가 넘어가면 or 슬랙 or 문자 등을 연동하여 알람을 수신할 수 있도록 구축하는 것도 중요합니다.
알람은 2가지 종류로 꼭 구분해서 관리!!
경고 or 심각
경고 : 하루 1번 정도 사람이 직접 확인해도 되는 수준(사람이 들어가서 확인)
심각 : 즉시 확인해야 함. 슬랙 알림(앱을 통해 알림을 받도록) or 문자 or 전화
예시)
- 디스크 사용량 70% → 경고
- 디스크 사용량 80% → 심각
- cpu 사용량 40% → 경고
- cpu 사용량 50% → 심각
경고와 심각을 잘 나누어서 업무와 삶에 방해가 되지 않도록 해야합니다.
개발 기술 블로그, Dev
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!