모니터링
시스템의 상태를 24시간 내내 실시간으로 감시하고 기록하는 것
모니터링이 필요한 이유
만일 모니터링이 없다면 갑자기 서비스 장애 시 이유를 알 수 없어 해결까지의 시간도 오래걸리고 따라서 서비스의 품질도 나빠지게 된다.
따라서 모니터링을 구축하여 관리하면 서비스 장애가 생기기 전 미리 조짐을 알 수 있으며 빠른 원인 파악 및 해결이 가능해진다.
또한 시스템 자원을 필요한 양에 맞게 사용할 수 있어 최적화와 비용절감이 가능하다.
사용한 프로그램들
- Prometheus - 메트릭을 정해진 규칙에 맞게 대상에게 요청을 보내 수집하고 (pull 방식) 시계열 데이터베이스(TSDB)에 저장한다. 또한 독자적인 쿼리 언어인 PromQL(Prometheus Query Language)을 사용하여 조회할 수 있다.
- Grafana - 프로메테우스에서 수집한 metric을 시각적으로 나타내어주는 오픈소스 대시보드 툴이다. 대시보드를 구성하여 조직에 알맞게 시각화하여 보여줄 수 있다.
- Node-exporter - 가상머신의 cpu와 메모리 사용량 같은 메트릭을 수집하는 에이전트 프로그램이다. 메트릭을 수집하여 프로메테우스가 가져갈 수 있도록 /metrics 에 노출시킨다.
- cAdvisor - 서버나 가상머신에서 가동중인 컨테이너 메트릭을 수집전문 에이전트로, /metrics에 노출시켜 프로메테우스가 읽어갈 수 있도록 한다.
- Alertmanager - Prometheus의 알림 관리를 담당하는 구성 요소로, Prometheus에서 감지한 이상 징후에 대한 알림을 정의하고, 이를 Discord 등의 다양한 채널로 전송하는 역할을 한다.
알람을 주는 서비스 과정
- 프로메테우스는 metric정보를 모으며 설정한 rule에 따라 감시를 하고 있다.( CPU 50% 이상 10초 유지 )

- CPU 사용량이 50%가 넘는것을 확인하면 Pending 상태로 바뀌며 알람을 보낼 준비를 시작한다.
- CPU 높은 사용량이 10초 초과 시 Firing 상태로 변경되고
Alertmanager는 Discord로 알람을 전송하여 모든 팀원이 서버의 장애 정보를 알 수 있게 된다.
