2023.05.16 - [🌏 인프라/모니터링] - Prometheus + Grafana로 Redis 모니터링 구축하기

과제를 진행하면서 새롭게 알게된 기술들을 정리해보고자 합니다!

 

✔️ 목차
1. 메트릭
2. 프로메테우스
3. 그라파나

 

먼저, 메트릭(metrics)이란 뭘까?

성능 지표..? 정도로 알고 있는데 정확히 자세히 아는 것이 중요하기 때문에 정리해보겠습니다.

 

Metric

메트릭하면 다음과 같이 화려한 대시보드를 떠올리실 수 있을 것 같습니다.

https://danawalab.github.io/common/2021/09/02/redis-monitoring-tools.html

 

어떤 애플리케이션을 쓰는지, 어떤 서비스인지에 따라 해석이 달라질 수 있지만

보편적으로 메트릭은 수집되는 시계열 데이터를 말합니다.

 

웹서버에서는 요청 시간이 될 수 있고, 데이터베이스에서는 활성 연결 수나 활성 쿼리 수 등이 될 수 있습니다.

 

  • 로그와 달리 메트릭은 주기적으로 발생합니다.
    • 로그는 어떤 이벤트가 발생했을 때 로그 파일에 기록되지만, 메트릭은 주기적으로 발생하는 이벤트의 데이터를 수집
  • 시스템 리소스 모니터링에 정기적으로 수집되는 데이터 : CPU 사용량, 시간당 데이터 처리량, 분당 네트워크 속도 등
  • 프로메테우스의 메트릭은 "메트릭명{필드1=값, 필드2=값} 샘플링데이터"와 같이 수집

 

 

Prometheus

✅ 공식 문서

https://prometheus.io/docs/

웹이나 DB를 운영할 때 사용자의 이용이 생깁니다. 트래픽이 발생하고, 정도에 따라 지연시간이 생길 수 있습니다. 당연히 자원 사용이 동반되므로 서버 메모리나 CPU 사용률이 부족하지는 않은지 지켜보면서 관리해주어야 합니다. 이럴 때 사용할 수 있는 것이 프로메테우스입니다.

 

각종 지표를 수집하여 저장하고 검색할 수 있는 모니터링 시스템으로서 특징은 다음과 같습니다.

  • 이벤트 모니터링 및 경고에 사용되는 무료 소프트웨어
  • 독립형 오픈소스 프로젝트로 어떤 회사와도 독립적으로 유지 관리됨
  • Go로 작성되었고, 아파치2 라이선스를 따름
  • 그라파나를 통한 시각화 지원
  • 많은 시스템을 모니터링 할 수 있는 다양한 플러그인
  • 프로메테우스가 주기적으로 exporter(모니터링 대상 시스템)로부터 pulling 방식으로 메트릭을 읽어서 수집함

 

 

Grafana

✅ 공식 문서

https://grafana.com/docs/

그라파나는 프로메테우스 등 여러 데이터들을 시각화해주는 모니터링 툴입니다.

 

  • 알람 기능을 무료로 사용할 수 있음
  • 시계열 데이터를 시각화하기 위한 대시보드 제공
  • 여러 데이터 소스들을 시각화할 수 있음
  • 키바나와 호환성이 높음

 

공식 사이트에서 라이브 데모도 제공하고 있으니 사용하기 전에 확인해봐도 좋을 것 같다!

https://play.grafana.org/

 

 

 

 

참고 사이트

우리 팀에서 하고 있는 DB 모니터링 방법 중 하나는 프로메테우스와 그라파나를 이용하는 것이다. DBMS variables 비교 사이트에서 다뤘던 Redis, MySQL, PostgreSQL 중 하나씩 맡아서 직접 모니터링을 구축해보는 시간을 갖게 되었고, Redis를 담당하게 되었다.

 

NHN 면접에서 어떤 메트릭을 어떻게 모니터링 할 수 있을 지에 대한 질문을 받아보기도 했었고, 늘 해보고 싶던 부분이어서 이번 기회에 확실히 알고 넘어가야겠다! 아자 💪

 

과제 요구사항은 다음과 같다. 일단 다 처음이기 때문에 주신 내용을 이해하는게 먼저..! 하나씩 스터디하면서 차근차근 설치해봐야겠다 :)

 

과제 1

  • 서버 1: DB 서버
    • DB 설치
    • 프로메테우스 exporter 설치 (node exporter, db exporter)
  • 서버 2: 모니터링용 서버
    • 프로메테우스 설치
    • 그라파나 설치
  • 서버 1에는 2개 이상의 db 인스턴스 띄우기
    • 같은 버전으로? 아니면 다른 버전?
    • Docker compose?
  • node exporter는 서버당 한개, db exporter는 db 인스턴스별로 띄우기
  • 그라파나 로그인해서 접속하면 대시보드에서 인스턴스 상태 확인할 수 있도록 구축

 


과제 2

  • alert manager 설치
  • 프로메테우스 alert rules 수집
    • 알람을 받아야 하는 rule 생성, 알람을 받아야 하는 이유 생각해보기
  • web hook
    • 두레이 웹훅 이용하여 특정 rule 도달했을 때 알람 받도록 설정

 

 

 

+ Recent posts