[Summary] 프로메테우스란?

Hoon·2023년 1월 12일
0

Summary

목록 보기
2/5
post-thumbnail

메트릭 기반 모니터링 시스템. 오픈소스이고 CNCF 프로젝트로 가장 많이 쓰이는 모니터링 툴이다.

필요성, 알고 넘어가야하는 용어

모니터링 시스템 필요성

장애 예방과 장애 발생시 빠른 대처와 원인 진단 및 해결을 위해 필요하다.

메트릭

서비스의 상태를 정량적으로 나타내는 데이터. 컨텍스트를 대부분 무시하고 다양한 이벤트에 대해 시간에 따른 집계를 추적한다. 프로메테우스는 메트릭 기반 모니터링 시스템이다.

로깅

특정한 이벤트가 발생하면 그 상황을 서술 기록하는 것이 로그. 텍스트 기반. 메트릭을 보고 문제를 감시했다면 로그를 보고 이를 해결할 수 있다. 대표적인 로깅 시스템으로는 EFK 스택이 있다.

아키텍처 & 동작 방식

  1. 프로메테우스 서버는 서비스 디스커버리(kubernetes_sd, file_sd 등)를 통해 타겟 정보를 불러온다.
  2. 타겟으로 부터 메트릭을 스크랩한다. (Pull 방식)
  3. 스크랩한 메트릭을 시계열 데이터베이스(TSDB)에 저장한다. 스크랩한 메트릭이 특정 조건을 만족한다면 Alertmanager에 알람을 push 한다.
  4. Alertmanager에 알람이 push되면 Alertmanager는 지정된 포인트(예: 슬랙)로 알람을 noti 한다.
  5. 그라파나 등 메트릭 시각화 도구는 PromQL을 이용해 메트릭을 시각화 한다.

구성요소

Client Library

서비스를 모니터링 하려면 클라이언트 라이브러리 중 하나를 설치하고 계측 코드를 추가해야한다. 애플리케이션 언어에 맞는 클라이언트 라이브러리를 선택하라. 그러면 서비스 엔드포인트를 통해 메트릭을 정의하고 게시할 수 있다.
프로메테우스가 인스턴스의 HTTP endpoint를 스크랩할 때, 클라이언트 라이브러리는 현재 상태에 대한 추적된 모든 메트릭을 서버로 전송한다.

Exporter

직접 계측 추가를 못하는 경우도 있다. 데이터베이스 프로그램이 적당한 예시이다. 익스포터는 가져오고 싶은 메트릭을 애플리케이션 바로 옆에 배치하는 소프트웨어다. 익스포터는 프로메테우스로부터 요청을 받아서, 애플리케이션에서 요청된 데이터를 수집하고, 데이터를 올바른 형식으로 변환한 다음, 마지막으로 프로메테우스에 대한 응답으로 데이터를 반환한다. 익스포터는 애플리케이션의 메트릭 인터페이스를 프로메테우스의 게시 형식으로 변환하는 일대일 방식의 작은 프록시라고 생각해도 좋다. 웬만한 익스포터는 이미 구현되어있을 것이다!

Service Discovery

계측할 모든 애플리케이션이 준비되고 익스포터가 실행되면, 프로메테우스는 이들의 엔드포인트를 알아야 메트릭을 수집할 수 있다. 프로메테우스는 쿠버네티스, EC2, 컨설같이 다양하고 일반적인 서비스 검색 매커니즘과 통합되어 있다. 서비스 디스커버리를 통해 메트릭 수집 대상의 위치를 파악한다.

Prometheus Server

프로메테우스 서버가 메트릭을 수집한다. 서비스 디스커버리와 relabeling은 메트릭 수집 대상을 알려준다. 프로메테우스 서버는 스크랩이라 불리는 HTTP 요청을 보내 메트릭을 가져오는 작업을 수행한다. 수집에 대한 응답은 분석 후 저장 장치에 저장된다. 데이터 수집 요청은 정기적으로 발생하며 일반적으로 1분이고 커스텀 가능하다.

저장 장치

프로메테우스는 사용자 정의 데이터베이스에 로컬로 데이터를 저장한다.

대시보드

프로메테우스는 raw 데이터를 요청하고 PromQL 쿼리를 수행할 수 있는 HTTP API를 많이 갖고 있으며, 이러한 API들은 그래프와 대시보드를 생성하는데 사용될 수 있다. 그라파나가 권장된다.

Alertmanager

알림매니저는 프로메테우스 서버에서 알람을 받아 notification한다. 슬랙등의 서비스로 알람을 통보한다. 알림 매니저는 말 그대로 알람을 관리한다. 라우팅 설정과 알림 해제 등 다양한 기능을 통해 알람을 매니징한다.

특징 (Pull, Clustering X)

Pull 방식의 모니터링 시스템이다.
pull 기반 모니터링 시스템은 능동적으로 지표를 획득하는 모니터링 시스템으로, 모니터링이 필요한 오브젝트에 원격으로 접근할 수 있어야 한다.
push 기반 모니터링 시스템은 모니터링이 필요한 오브젝트가 적극적으로 지표를 푸시한다. 설치된 에이전트가 모니터링 서버의 end-point를 알아야 한다.
Pull vs Push 비교는 여기에 자세히 정리했다.

프로메테우스는 클러스터 기능을 제공하지 않아 확장성과 가용성에 문제가 있을 수 있지만, 이를 Federation 기능과 Thanos로 해결할 수 있다.

Reference

0개의 댓글