반응형

프로메테우스란 무엇인가?


 프로메테우스는 메트릭 기반의 오픈소스 모니터링 시스템이다. 2012년 사운드클라우드사에서 개발을 시작한 후, 프로메테우스와 연관된 관련 커뮤니티와 생태계는 꾸준히 성장해 왔다. 프로메테우스는 주로 Go 언어로 작성되었으며 아파치 2.0 라이센스를 따른다. 또한 프로메테우스 프로젝트는 2016년에 클라우드 네이티브 컴퓨팅 재단의 두 번째 멤버가 되었다.

 

 

프로메테우스의 특징


  • a multi-dimensional data model with time series data identified by metric name and key/value pairs
    • 키/값 쌍의 메트릭이름으로 된 시계열데이터가 포함된 다차원-데이터-모델
  • PromQL, a flexible query language to leverage this dimensionality
    • 이러한 차원을 이용하는 유연한-질의-언어
  • no reliance on distributed storage; single server nodes are autonomous
    • 분산 저장장치에 의존하지않는;단일-서버-노드는 자율적이다.
  • time series collection happens via a pull model over HTTP
    • HTTP를 통한 pull-방식을 통해 시계열 수집이 발생한다.
  • pushing time series is supported via an intermediary gateway
    • 중계-게이트웨이를 통해 시계열 푸시가 지원된다.
  • targets are discovered via service discovery or static c도onfiguration
    • service-discovery와 정적구성을 통해 대상들이 발견된다.
  • multiple modes of graphing and dashboarding support
    • 다양한 그래프 모드와 대시보드를 지원한다.

 

 

프로메테우스의 구성요소


The Prometheus ecosystem consists of multiple components, many of which are optional:

Most Prometheus components are written in Go, making them easy to build and deploy as static binaries.

 

프로메테우스 아키텍쳐


 

프로메테우스 알림


 프로메테우스의 알림은 두부분으로 나누어져 있다. 프로메테우스의 알림규칙은 알림(경고)을 알림메니저로 보낸다. 그런다음 알림메니저는 사일런싱(silencing), 금지/억제(inhibition), 집계(aggregation)을 포함하여 알림 발송(email, slack, chat)을 관리한다.

 

따라서 알림과 통지를 설정을 구성해야 한다.

  • 알림메니저를 구성한다.
  • 알림메니저와 통신하도록 프로메테우스를 구성한다.
  • 프로메테우스에 알림규칙을 생성한다.

 

기록 규칙


 프로메테우스가 정기적으로 PromQL 표현식을 수행하고 결과를 수집하도록 기록규칙(recoring rules)을 사용할 수 있다. 기록규칙은 대시보드의 속도를 높이고, 다른 곳에 사용하기 위해 집계된 결과를 제공하며 범위 벡터 함수를 작성하는 데 유용하다. 알림규칙도 기록규칙의 변형이다.  기록규칙은 쿼리를 더 효율적으로 만들기 위해 카디널리티를 감소시키는 데 주로 사용된다. 기록 규칙은 대시보드와 페더레이션, 그리고 장기 저장소에 메트릭을 저장하기 전에 일반적으로 사용된다. 범위 벡터 함수를 작성하고 메트릭에 대한 API를 다른 팀에 제공하는 경우에도 기록 규칙을 사용할 수 있다.

 

알림이란?


문제가 발생했을 때 사람에게 통보해주는 기능이다. 프로메테우스는 지속적으로 계산이 수행되는 PromQL 형식으로 알림이 발생할 수 있는 조건을 정의할 수 있으며, 그 결과에 대한 시계열이 바로 알림이 된다. 

 

알림규칙


기록규칙과 동일한 규칙 그룹에 배치하고 원하는 방식으로 조화시킬 수 있다. 일반적으로 임의의 작업에 대한 모든 규칙과 알림을 하나의 그룹으로 표시한다. 만약 한 주기에 계산되기 어려울 정도로 그룹이 커지면, 그룹을 줄이는 것이 옵션이 아닐 경우, 그룹을 분할해야 할 수도 있다.

 

 알림매니저가 시간에 따른 알림 통보를 제공하지 않기 때문에 특정 시간에만 받기 원하는 경우 날짜함수를 사용해서 알림규칙을 설정해야 한다. 일반적으로 모든 알림에 대해 최소 5부의 for 값을 사용하는 것을 권장한다. 이렇게 하면 간단한 플랩을 포함한 대다수의 산출물에서 양성(false positive) 문제를 제거할 수 있다.(폭탄 알림 방지) 알림레이블을 추가해서 알림매니저를 구성할 때 사용할 수 있게 한다.

 

알림매니저


모든 프로메테우스 서버에서 알림을 모두 전달 받아 이메일이나 채팅 메시지, 또는 호출 등의 통보로 변환하는 것이 알림 매니저의 역할이다. 다시 말해서 알림이 통보로 변환되는 방법에 대해 제어 가능한 파이프라인을 사용자에게 제공한다.  파이프라인은 다음과 같다. 억제/금지(inhibition), 사일런싱(silencing), 라우팅(routing), 그룹화(grouping), 조절과 반복(throttling, repitition), 통보(notification)의 단계가 있다.

 

Tip


  • 프로메테우스의 구성 새로 로딩하기
  • kill -HUP <pid>--web.enable-lifecycle 플래그 지정 후 HTTP POST로 /-/reload 엔드포인트 보내기

 

반응형

+ Recent posts