본문 바로가기

개발 지식

Prometheus 프로메테우스 란?

반응형

Prometheus 프로메테우스 란?

회사에서 주어진 연구과제의 주제가 될수도 있을 것 같은 무서움 때문에 뭔지 알아보는 포스팅.

Prometheus is an open-source systems monitoring and alerting toolkit originally built at SoundCloud. Since its inception in 2012, many companies and organizations have adopted Prometheus, and the project has a very active developer and user community. It is now a standalone open source project and maintained independently of any company. To emphasize this, and to clarify the project's governance structure, Prometheus joined the Cloud Native Computing Foundation in 2016 as the second hosted project, after Kubernetes.

- 원문 : https://prometheus.io/docs/introduction/overview/

프로메테우스는 음원 스트리밍 서비스 업체인 SoundCloud에서 만든 오픈소스 시스템 모니터링 및 알림 툴이다. 2012년에 시초가 된 이후로 많은 회사들과 조직들이 프로메테우스를 채택했고, 이 프로젝트에는 매우 활성화된 개발자와 사용자 커뮤니티가 있다. 이제는 독립적인 오픈 소스 프로젝트이고, 모든 회사와 독립적으로 유지가 된다. 이것을 강조하고 프로젝트의 거버넌스(관리) 구조를 명확히 하기 위해서 프로메테우스는 쿠버네티스에 이어 두번째로 Cloud Native Coumputing Foundation에 조인했다.

 

특징

  • metric 이름과 key/value 쌍으로 식별되는 시계열 데이터를 포함하는 다차원의 데이터 모델이다. (정확히 뭔말인지 모르겠다. 알려주실분 구함;)
  • 이러한 다차원성의 지렛대 역할을 해줄수 있는 유연한 query language가 PromQL(Prometheus Query Language)다.
  • 분산 스토리지에 의존하지 않는다; 단일 서버 노드는 자율적이다.
  • 각 역할별 노드들이 있으며 해당 노드들을 이용해서 원하는 정보 확인이 가능하다.
  • HTTP를 통한 풀 모델을 통해 시계열 컬렉션이 발생한다. (웹 브라우저를 통해서도 접근이 가능함)
  • pushing time series 은 중계 게이트웨이를 통해 지원받는다.
  • 타겟들은 서비스 검색이나 정적인 설정(static configuration)을 통해 검색된다.
  • 시각화와 대시보드 기능등의 다양한 모드들이 있다.

 

구성요소

프로메테우스 생태계는 다수의 component들로 구성되어있지만, 그 중 대다수는 optional하다.

  • the main Prometheus server : time series data(시계열 데이터)를 스크랩하고 저장함
  • client libraries : 어플리케이션 코드를 측정함
  • push gateway : 짧은 주기를 가진 jobs들을 지원함
  • special-purpose exporters : HAProxy, StatsD, Graphite 등등의 서비스들을 지원함
  • alertmanager : 알림들을 관리함
  • 그외 다양한 지원 툴들..

대부분의 프로메테우스 component들은 static binary로 쉽게 만들고 배포할 수 있는 Go 언어로 작성되었다.

 

아키텍쳐

보통의 모니터링 도구는 Push 방식이다. 즉, 각 서버에 클라이언트를 설치하고 이 클라이언트가 metric data를 수집해서 서버로 보내면 서버가 모니터링 상태를 보여준다. 하지만 Prometheus는 Pull 방식이다. 그래서 서버가 각 클라이언트를 알고 있어야 하는게 아니라 서버에 클라이언트가 떠 있으면 서버가 주기적으로 클라이언트에 접속해서 데이터를 가져오는 방식이다.

프로메테우스는 직접적 혹은 수명이 짧은 jobs을 위해 중개 push gateway를 통해 metrics을 수집한다. 스크랩된 모든 샘플들을 로컬에 저장하고 이 데이터에 대한 규칙을 실행하여 기존 데이터에서 새로운 time series를 기록하고너 알림(경고)를 생성한다. Grafna나 기타 API consumer를 사용하여 수집된 데이터를 시각화 할 수 있다.

 

언제 적합한지?

  • 프로메테우스는 순수한 numeric time series를 기록하는데 작동을 잘한다.
  • 기계 중심 모니터링과 역동적인 서비스 지향 아키텍처의 모니터링 모두에 적합하다.
  • 마이크로서비스 내에서 다차원 데이터 수집과 쿼리에 대한 지원은 특별한 강점이다.

 

언제 적합하지 않은지?

  • 100%의 정확성, 예를 들어 request 당 청구와 같은 것에 있어서는 수집된 데이터가 디테일 하지 않고 완전하지 않을 수 있으므로 프로메테우스는 적절한 선택이 아닐 것이다.

 


 

 

반응형

'개발 지식' 카테고리의 다른 글

GET POST 차이점  (0) 2020.01.26