본문 바로가기
INFRA/DevOps

Prometheus 란?

by BTC_SEUNGJUN 2022. 12. 10.

Prometheus 란?


 

오픈소스 시스템 모니터링 및 경고 툴입니다. 현재 많은 회사들이 사용하고 있으며,

Kubernetes 에서도 Prometheus 를 사용하여 매트릭 수집 및 대시보드 구축하는 방식을 사용하고 있습니다.

 

 

Prometheus 기능


차원 데이터

  - Prometheus 는 고차원 데이터 모델을 구현합니다. 시계열은 지표 이름과 일련의 키-값쌍으로 식별됩니다.

 

강력한 검색어

  - PromQL 을 사용하면 임시그래프, 테이블 및 경고를 생성하기 위해 수집된 시계열 데이터를 커스텀할 수 있습니다.

 

훌륭한 시각화

  - Prometheus 에는 내장식 브라우저, Grafana 통합 및 콘솔 템플릿 언어 등 여러가지 데이터 시각화 모드가 있습니다.

 

효율적인 저장

  - Prometheus 는 효율적인 사용자 지정 형식으로 시계열을 메모리와 로컬디스크에 저장합니다.

    스케일링은 기능적 샤딩 및 페더레이션에 의해 수행됩니다.

 

간단한 조작

  - 각 서버는 로컬저장소에만 의존하여 안정성을 위해 독립적입니다.

    Go 로 작성된 모든 바이너리는 정적으로 연결되어 배포하기 쉽습니다.

 

정확한 경고

  - 경고는 Prometheus 의 유연한 PromQL 을 기반으로 정의되며 치수 정보를 유지합니다.

    Alertmanager 는 알림 및 침묵을 처리합니다.

 

많은 통합

  - 기존 수출 업체는 타사 데이터를 Prometheus 에 브리징 할 수 있습니다.

    예: 시스템 통계 및 Docker, HAProxy, StatsD 및 JMX 메트릭

 

 

Prometheus 아키텍처 구조


 

Pushgateway: Proxy Forwarding 을 하여 접근할 수 없는 곳에 데이터가 존재하는 경우에 사용할 수 있는 대안입니다. 애플리케이션이 Pushgateway 에 메트릭을 push 한 후, Prometheus Server 가 Pushgateway 에 접근하여 메트릭을 pulling 합니다.

 

Prometheus Server: 프로메테우스의 메인 서버로 메트릭 데이터를 수집하고 저장합니다. Prometheus Server 내부에는 Retrieval, TSDB, HTTP Server 모듈이 있습니다.

 

TSDB(Time-Series Database): 수집된 메트릭은 Prometheus Server 내의 메모리와 로컬디스크에 저장됩니다. 데이터베이스에 별도로 저장하지 않기 때문에 대상 시스템이 늘어날수록 디스크를 늘려야 합니다.

 

HTTP Server: 프로메테우스에 저장된 데이터를 조회하기위해서 필요한 서버입니다. 프로메테우스는 데이터를 가져가기 위한 프로토콜로 HTTP REST API 를 제공하고, 직접 API 를 통해 데이터를 가져가든지, Web UI 대시보드에서 데이터를 조회하는 방법으로 Grafana 를 통해 데이터를 시각화할 수 있습니다.

 

Alertmanager: 프로메테우스에서 문제가 발생했다고 생각되는 시점에 Slack, Mail, HipChat 등을 통해 알람을 보내줍니다. 알람을 거는 기준은 Rule 을 작성해서 로드시키는 방식으로 정할 수 있습니다.

 

 

기본 동작 구조


Metirc 수집

- 수집하려는 대상 시스템이 타겟 시스템 입니다. MySQL 이나, Tomcat 또는 VM 과 같이 여러가지 자원이 모니터링 대상이 될 수 있습니다. 이 대상 시스템에서 메트릭을 프로메테우스로 전송하기 위해서는 Exporter 라는 것을 사용합니다.

 

Pulling 방식

- 프로메테우스는 타겟 시스템에서 메트릭을 수집하는 방식으로 Pulling 방식을 사용합니다. 프로메테우스가 주기적으로 Exporter 로부터 메트릭을 읽어와서 수집하는 방식입니다. 보통 모니터링 시스템의 에이전트들은 에이전트가 모니터링 시스템으로 메트릭을 보내는 Push 방식을 사용합니다. 특히 Push 방식은 서비스가 오토스케일링 등으로 가변적일 경우에 유리합니다. Pulling 방식은 모니터링 대상이 가변적으로 변경될 경우, 모니터링 대상의 IP 주소들을 알 수 없기 때문에 어려운 점이 존재합니다.

 

Service Discovery

- 프로메테우스도 서비스 디스커버리 시스템과 통합을 하도록 되어있습니다. DNS 나 서비스 디스커버리 전용 솔루션인 Hashicorp 사의 Consul 또는 Kubernetes 를 통해서 모니터링 해야 할 타겟 서비스의 목록을 가지고 올 수 있습니다.

 

Exporter

- 모니터링 에이전트로 타겟 시스템에서 메트릭을 읽어서 프로메테우스가 Pulling 할 수 있도록 합니다. 또한, 단순히 HTTP GET 으로 메트릭을 텍스트 형태로 프로메테우스에 리턴합니다. 요청 당시의 데이터를 리턴하는 것일 뿐, Exporter 자체는 기존값(히스토리)를 저장하는 등의 기능은 없습니다.

 

Retrieval

- 서비스 디스커버리 시스템으로부터 모니터링 대상 목록을 받아오고, Exporter 로부터 주기적으로 그 대상으로부터 메트릭을 수집하는 모듈입니다.

 

저장

- 이렇게 저장된 메트릭은 PromQL 쿼리 언어를 이용해서 조회가 가능하고, 이를 외부 API 나 프로메테우스 웹 콘솔을 이용해서 서빙이 가능합니다. 또한 그라파나 등과 통합하여 대시보드를 구성하는 것이 가능합니다.

 

 

사용시 고려사항


Prometheus 는 순수한 숫자 시계열을 기록하는데 적합합니다. 이는 기계 중심 모니터링과 매우 동적인 서비스 지향 아키텍처의 모니터링에 모두 적합합니다.

 

요청 당 청구와 같이 100 % 정확성이 필요한 경우 수집 된 데이터가 상세하고 완전하지 않을 가능성이 높으므로 Prometheus는 좋은 선택이 아닙니다. 이러한 경우 다른 시스템을 사용하여 청구 데이터를 수집하고 분석하고 나머지 모니터링에는 Prometheus를 사용하는 것이 가장 좋습니다.

 

 

 

출처: https://afsdzvcx123.tistory.com/entry/%EC%9D%B8%ED%94%84%EB%9D%BC-%ED%94%84%EB%A1%9C%EB%A9%94%ED%85%8C%EC%9A%B0%EC%8A%A4%EB%9E%80

 

[인프라] 프로메테우스란?

참고 https://cumulus.tistory.com/86 https://gurumee92.tistory.com/220 개요 프로메테우스 개념에 대해서 조사 및 정리 진행합니다. 프로메테우스(Prometheus) 란? Prometheus 는 메트릭 수집, 시각화, 알림, 서비스 디

afsdzvcx123.tistory.com

출처: https://velog.io/@ckstn0777/prometheus%ED%94%84%EB%A1%9C%EB%A9%94%ED%85%8C%EC%9A%B0%EC%8A%A4%EB%9E%80

 

🎵 prometheus(프로메테우스)란?

초보개발자가 배우는 단계에서의 포스트 글입니다. 부족한 점이 많이 있을 수 있습니다. 이해해주세요..😂😂프로메테우스는 메트릭 기반의 오픈소스 모니터링 시스템이다.모니터링 하면 아마

velog.io

'INFRA > DevOps' 카테고리의 다른 글

Akamai CDN 이란?  (0) 2022.12.10
Prometheus & Grafana 연동  (0) 2022.12.10
Grafana 란?  (0) 2022.12.10
Kibana 란?  (0) 2022.12.10
Kong API Gateway가 뭐예요?  (0) 2022.12.10

댓글