Prometheus란?

이동구·2023년 7월 4일
0

NMS

목록 보기
1/1

Prometheus란?

프로메테우스(Prometheus)는 오픈소스 시스템 모니터링 및 경고 도구
대규모 분산 시스템에서 메트릭, 로그 및 이벤트 데이터를
수집, 저장, 분석, 시각화하기 위해 설계됨


프로메테우스 구성도 예시프로메테우스 구성도 예시

프로메테우스의 특징

  1. 메트릭 수집
    • 프로메테우스는 다양한 소스로부터 시스템 및 애플리케이션의 메트릭 데이터를 수집
    • 이를 위해 클라이언트 라이브러리를 사용하여 애플리케이션에 메트릭 수집 코드를 추가할 수 있으며, 수집 대상에 따라 Exporter를 사용/설치
  2. 데이터 저장
    • 수집한 메트릭 데이터는 로컬 디스크에 저장
    • 이러한 저장 방식은 효율적인 읽기 및 쿼리 작업을 가능하게하며
      데이터를 압축하고 롤링 기반의 시간 계획을 사용하여 오래된 데이터를 정리
  3. 쿼리 및 분석
    • 프로메테우스는 내장된 쿼리 언어인 PromQL을 사용하여 저장된 데이터에 대한 강력한 쿼리 및 분석 기능을 제공함 이로 인해 데이터를 검색, 집계, 그룹화하고, 경고 규칙을 정의하고, 대시보드와 그래프를 생성
  4. 경고 및 알림
    • 프로메테우스는 사용자가 정의한 경고 규칙에 따라 시스템 및 애플리케이션의 비정상적인 동작을 탐지하고 알림을 생성. 이를 통해 잠재적인 문제 상황을 신속하게 감지하고 대응함
  5. 시각화
    • 프로메테우스는 내장된 그래프 및 대시보드 기능을 제공하지 않음
      하지만, 수집한 데이터를 외부 시각화 도구인 Grafana와 통합하여 시각화 가능.
    • Grafana는 프로메테우스 데이터를 사용하여 다양한 형태의 그래프와 대시보드를 생성할 수 있는 도구
  6. 추가 사항
    • 프로메테우스는 클라우드 네이티브 환경에서 많은 사용 사례를 가지고 있으며,
      Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼과의 통합이 잘 구성되어 잇음
      따라서 대규모 분산 시스템의 모니터링 및 경고에 매우 유용한 도구
  • 사용하는 프로토콜
    • 프로메테우스 자체 프로토콜
      프로메테우스는 자체적으로 정의한 프로토콜을 사용하여 메트릭 데이터를 수집함
      서버와 클라이언트 및 기타 데이터 수집 도구 간에 메트릭을 전송하는 데 사용

프로메테우스 원리 / 설명

  • 수집하려는 대상 서버에 Exporter를 설치하여, Prometheus 중앙 서버에서 메트릭을 수집
    데이터 수집은 Pulling 방식으로 이루어지며, 수집하려는 데이터에 따라 여러 Exporter가 서드파티앱으로 존재한다.
  • 풀링 방식이란, 중앙 서버가 수집 대상 서버에서 데이터를 긁어가는 것을 뜻한다.
    (Exporter가 열어놓은 HTTP 엔드포인트에 접속해서 Metric을 수집)
  • 각 운영체제에 따른 익스포터가 다 다름
    • 윈도우 → WMI Exporter
    • Linux → Node Exporter
  • Alertmanager를 통해 알람 또한 발송이 가능하다.
(**관제 서버)        (Manager)
	익스포터   ⇒   프로메테우스 ⇒  그라파나(시각화툴) ⇒ 브라우저**    
										 

장점

  • 수집된 정보는 프로메테우스 내의 메모리와 로컬디스크에 저장된다. 뒷단에 별도의 데이타 베이스등을 사용하지 않고, 그냥 로컬 디스크에 저장가능하고, 그로 인해서 설치가 매우 쉽다.
  • Kubernetes 환경에서 설치가 간단하고, grafana와의 연동을 통한 운영이 쉽다.

단점

  • 스케일링이 불가능하다는 단점을 가지고 있다. 대상 시스템이 늘어날 수록 메트릭 저장 공간이 많이 필요한데, 단순히 디스크를 늘리는 방법 밖에 없다.
  • 프로메테우스는 구조상 HA를 위한 이중화나 클러스터링등이 불가능하다. (클러스터링 대신 샤딩을 사용한다. HA는 복제가 아니라 프로메테우스를 두개를 띄워서 같은 타겟을 동시에 같이 저장 하는 방법을 사용한다. 이 문제에 대한 해결 방법은 Thanos 라는 오픈 소스를 사용하면 된다고 한다.)
  • 풀링 주기를 기반으로 메트릭을 수집하기에, 수집된 데이터는 풀링하는 순간의 스냅샷이다. 풀링이 수행되지 않는 시점에 메모리 사용률이 한번 튀었더라도 해당 상황을 잡아내지는 못한다. 즉, 정밀함이 떨어질 가능성이 존재

실습

관련링크

  1. 윈도우에서 설치하기
    a. Prometheus Manager(https://stdhsw.tistory.com/entry/Prometheus-%EC%9C%88%EB%8F%84%EC%9A%B0-%EC%84%A4%EC%B9%98)
    b. Client / Windows Exporter(Msi / exe)
    https://github.com/prometheus-community/windows_exporter/releases
    c. Grafana
    https://blog.naver.com/PostView.naver?blogId=only012boa&logNo=221926825666&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView

Client 쪽

  1. msi / exe를 통해 실행한다.
  2. win + R / services.msc 에서 WMI … 확인
  1. 이후 http://localhost:9182/ 에 접속하여 데이터가 제대로 꼽히는지 확인한다.
  1. 만약 안된다면 방화벽 역시 확인해야 한다.

Manager 쪽

  1. http://localhost:9090/ 에 접속하여 데이터를 확인 할 수 있다.
  1. Status - Target 으로 대상 서버를 확인한다. (예시는 70서버)

Grafana

  • 연동 부분은 위에 링크를 참고

연 이후 화면

  • UI의 경우 언제든지 바꿀수 있기 때문에 편리
  • Grafana는 설치형으로써, 설치시 서비스에 등록이 되는데, 기본포트는 3000번 포트를 사용한다.
    기존에 만약 3000번을 사용하고 있다면, configuration 파일에서 포트를 수정해 주어야 한다.

추가적인 생각

  • 프로메테우스는 주로 메트릭 데이터 수집 및 분석에 초점을 맞춘 도구이기 때문에 로그패턴 분석에 직접적으로 사용되지는 않는다. 그렇기에 대체 할 수 있는 것을 찾아 보았다.
    • ElasticSearch
      • 유료로 전환됨
    • Loki + Promtail 조합으로 커버를 할 수 있다
  • Scale-out에 약점을 보이는 측면이 있는데 이는 다른 오픈소스로 어느정도 해결 가능하다고 함
    • thanos
  • 최근 고객사에 방문하여 NMS 툴로 Zabbix를 사용하는 것을 봤는데 생각보다 괜찮아 보였다.
    해당 솔루션 역시 오픈소스 임으로 고려해 보는것도 좋다고 생각된다.
    - Zabbix는 Prometheus와 달리 시각화도 상당히 볼만함
    - But, 설정해줘야 하는 부분이 많음

참고한 자료들

profile
나 이동구

0개의 댓글