# 오픈소스 모니터링 시스템 Prometheus, 시각화 소프트웨어 Grafana

2020. 3. 6. 00:38 개발 이야기/오픈소스

 

오늘은 오픈소스 모니터링 시스템프로메테우스시각화 소프트웨어인 Grafana 소개해드리겠습니다.

 

 

 

 

 

프로메테우스Apache2 라이선스를 가진 완전한 오픈소스이고 모니터링 솔루션에서 많이 쓰이고 있다고 합니다.

 

다른 모니터링 솔루션과 다른 점이 한 가지 있는데요!

 

 

 

프로메테우스 아키텍처

 

바로 모니터링 대상이 되는 서버에 agent를 설치하고 이 agent가 메트릭 데이터를 수집해서 서버로 보내는 push방식이 아닌, Prometheus가 원할 때 agent에서 가지고 오는 pull 방식이라는 점인데요!

 

왜 이런 방식을 채택했고 왜 이런 방식을 가진 프로메테우스가 많이 사용되는 것일까요?

바로 모니터링 대상이 되는 서버들의 부하 문제 때문인데요 모니터링 대상이 되는 서버들은 계속해서 모니터링 정보인 메트릭 데이터를 보내게 됩니다. 이를 모니터링을 하는 주체가 원할 때만 가져갈 수 있게 해주는 pull 방식을 채용해 모니터링 대상의 부하 부담을 줄여주고 있기 때문입니다.

 

먼저 프로메테우스에는 몇 가지 구성이 존재하는데요! 이 구성의 소개와 간략하게 실제 설치 및 사용 방법을 알아보겠습니다.

 

먼저 당연히 필요한 Prometheus Server 입니다. 프로메테우스 서버는 다양한 OS로 배포되고 위에서 말씀드렸듯이 오픈소스이기 때문에 유료, 과금 걱정 없이 사용할 수 있습니다.

다운로드를 해보겠습니다.

https://prometheus.io/download/

 

Download | Prometheus

Download We provide precompiled binaries and Docker images for most officially maintained Prometheus components. If a component is not listed here, check the respective repository on Github for further instructions. There is also a constantly growing numbe

prometheus.io

 

 

 

위 URL을 통해 들어가서 Operating system을 windows로 변경해서 다운로드를 받습니다! 다운로드 후 압축을 풀어주면 다음과 같은 모습일 텐데요!

 

 

 

 

여기서 중요한 것은 prometheus.exeprometheus.yml 파일입니다. exe는 프로메테우스 서버이구요! yml 파일은 프로메테우스의 설정 파일로 프로메테우스가 바라보게 될 exporter(agent)의 설정을 해주게 됩니다!

우선 제가 설정한 부분들을 보겠습니다. 주석 부분을 간단하게 번역기를 돌려서 가독성을 올려봤습니다. 

# my global config
global:
  scrape_interval:     15s # 15 초마다 스크랩 간격을 설정하십시오. 기본값은 1 분입니다.
  evaluation_interval: 15s # 15 초마다 규칙을 평가하십시오. 기본값은 1 분입니다.
  # scrape_timeout이 전역 기본값 (10 초)으로 설정되어 있습니다.

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# 규칙을 한 번로드하고 전역 'evaluation_interval'에 따라 규칙을 정기적으로 평가하십시오.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# 긁을 엔드 포인트가 정확히 하나 인 스크랩 구성 :
# 여기는 프로 메테우스 자체입니다.
scrape_configs:
# 작업 이름은이 설정에서 스크랩 된 시계열에`job = <job_name>`레이블로 추가됩니다.
 - job_name: 'prometheus'

    # metrics_path의 기본값은 '/ metrics'입니다.
    # scheme의 기본값은 'http'입니다.

    static_configs:
    - targets: ['localhost:9090']
    
    #개인 추가 부분
  - job_name: 'jaeger-ingester-local'
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:14270']
    

 

설정 부분은 간단합니다. 하지만 그냥 다 수집되는 것은 아닙니다. 수집하고자 하는 정보에 맞는 exporter를 실행해주고 이 exporter의 정보를 입력해주면 되는데요. exporter는 시스템의 혹은 app의 메트릭 정보를 프로메테우스가 가져갈 수 있도록 해주는 부분입니다.

https://prometheus.io/docs/instrumenting/exporters/#databases

 

다양한 exporter가 존재하고 있고 모니터링하고자 하는 exporter를 다운받아 실행해주시면 됩니다.

 

포스트그리SQL의 exporter

 

 

 

자 이렇게 모니터링하고자 하는 exporter의 정보를 기입하고 프로메테우스 서버를 실행시켜보겠습니다.

 

 

.\prometheus.exe --config.file=prometheus.yml

cmd 혹은 powershell에서 컨피그 파일 옵션과 합께 실행을 시켜주면

 

 

 

위 그림과 같이 로그가 찍히면서 실행이 됩니다. 그러면 이제 실행이 된 건데요! 웹을 통해 접근할 수 있습니다. 디폴트 포트는 9090입니다

 

 

 

 

자 이 모습이 프로메테우스의 데이터를 모니터링할 수 있는 페이지의 모습인데요! 살짝~~~ 허접한 느낌이 있죠?

프로메테우스는 promQL이라는 메트릭 조회 구문으로 정보를 조회할 수 있는데요

 

 

 

 

메트릭 정보를 가져와서 rate 함수, sum 함수와 같은 어렵지 않고 직관적인 함수를 이용해 데이터를 가공할 수 있습니다.

이 부분은 https://devthomas.tistory.com/15

 

Prometheus Query(PromQL) 기본 이해하기

Prometheus Query(이하 PromQL)는 SQL과는 달라 처음 접하게 되면 이해하는데 조금 어려움을 겪을 수 있다. 하지만 제대로 이해하고 나면 정말 잘 만들어진 언어라는 것을 알 수 있다. 여기서는 PromQL의 기본 문..

devthomas.tistory.com

 

이 블로그에서 참고하시면 좋을 것 같습니다 정리가 잘되어 있더라고요~! 그리고 targets 페이지로 이동을 하면 연동된 targets의 상태를 확인할 수 있습니다.

 

 

 

이렇게 모니터링을 해줄 수 있는데요! 하지만 너무 단순해 보이고 가독성이 떨어진다고 생각이 드는 것이 사실입니다. 이를 위해 프로메테우스는 시각화 소프트웨어인 grafana를 사용하는 것을 권장하고 있는데요

 

 


Grafana 는 2014 년부터 제공 되는 다중 플랫폼 오픈 소스 분석 및 대화 형 시각화 소프트웨어입니다. 지원되는 데이터 소스에 연결될 때 웹에 대한 차트, 그래프 및 경고를 제공합니다. 플러그인 시스템을 통해 확장 할 수 있습니다 . 최종 사용자는 대화식 쿼리 작성기를 사용하여 복잡한 모니터링 대시 보드를 만들 수 있습니다 .

시각화 도구 인 Grafana는 모니터링 스택에서 널리 사용되는 구성 요소입니다. 종종 Prometheus 및 Graphite 와 같은 시계열 데이터베이스 와 함께 사용됩니다


이 그라파나를 연동하는 것도 손쉽기 때문에 함께 연동해보도록 하겠습니다.

https://grafana.com/grafana/download?platform=windows

 

Download Grafana

Grafana Feature overview, screenshots, videos, feature tours

grafana.com

 

 

 

위의 URL에서 다운로드 후 인스톨러를 이용해 설치합니다. 그라파나를 설치 후 디폴트 포트인 3000 포트로 접근해보겠습니다

 

 

그라파나 로그인 페이지

 

그라파나 로그인 페이지가 뜨고 디폴트 계정admin/admin 입니다!

 

 

로그인을 완료하면 다음과 같은 setting 페이지가 나오는데요 굳이 매뉴얼을 찾아보지 않더라도 쉽게 설정할 수 있습니다.

 

 

data sources를 누른 후 여기서 프로메테우스의 url만 넣어주면 끝이 납니다. 이렇게 설정을 하고 대시보드 만들기 후 

아래의 버튼을 눌러

 

 

 

 

 

 

직관적으로 promql 쿼리를 써볼 수 있는 페이지가 열리는데 여기서 원하는 데로 메트릭 데이터를 수정해 그래프로 그려줍니다.

 

 

 

이렇게 가독성이 뛰어난 그래프로 확인할 수 있고 설정에 따라 자동 갱신이 되기 때문에 지속적인 모니터링이 가능합니다.

그라파나에는 다양한 모듈이 있기 때문에 다양한 그래프를 다운받아서 확인할 수도 있는데요 저는 디폴트도 훌륭하기 때문에 디폴트로만 사용을 했습니다. 

 

여기까지 오픈소스 모니터링 시스템인 프로메테우스시각화 소프트웨어인 그라파나의 소개 및 간단한 사용방법이었습니다.