본문 바로가기

Database General

Grafana & Prometheus (그라파나, 프로메테우스)

Grafana

  • 시계열 매트릭 데이터를 시각화 하는데 가장 최적화된 대시보드를 제공해주는 오픈소스 툴킷이다.
  • 다양한 DB를 연결하여 DB의 데이터를 가져와 시각화 할 수 있다.
  • 그래프를 그리는 방법도 간단히 마우스 클릭으로 완료할 수 있다.
  • 시계열 매트릭 데이터 수집에 강한 모습을 보이는 만큼, 활용하는 부분도 서버 리소스의 매트릭 정보나 로그 같은 데이터를 시각화는 데 많이 사용한다.
  • 시각화한 그래프에서 특정 수치 이상으로 값이 치솟을 때(예를 들어 CPU 사용량 80% 이상) 알림을 전달받을 수 있는 기능도 제공한다. 이러한 기능은 인프라 운영 관점에서 굉장히 중요한 기능이라고 할 수 있다.
  • 그리고 오픈소스 툴킷인 만큼, 커뮤니티도 많이 활성화 되어있는데, 일반 사용자들이 만들어놓은 대시보드를 import해서 사용할 수도 있고 import한 대시보드를 내 입맛에 맞게 커스터마이징 할 수도 있다.
  • 또한 다양한 플러그인이 있어 Grafana 내부적으로 기능 확장도 쉽게 가능하다.

 

 

시계열

  • 시계열에서의 샘플들은 x1, ..., xn까지 있다고 할 때, 각각의 샘플들은 특정한 시간 t에서 측정된 데이터들이다.
  • 예를 들어 x1은 1초에 생성된 정보, x2는 2초 때에 생성된 정보... 등으로 말이다.
  • 시계열에서의 데이터는 보통 iid(독립이면서 동일한 에러) 상태가 아니고, 시간적으로 상관성이 있다.
  • 고정된 시간 범위에서 샘플들은 만들어지고, 연속이거나, 불규칙적인 수열은 취급하지 않는다.

 

설치

# wget https://s3-us-wers-2.amazonaws.com/grafana-releases/release/grafana-5.1.3-1.x86_64.rpm

# yum localinstall grafana-5.1.3-1.x86_64.rpm

http://설치 ip주소:3000 로 접속

초기화면에서 로그인은 admin / admin으로 접속한다.

Grafana 초기 화면

 

Data Source

  • 먼저 Grafana를 통해 매트릭 정보를 수집하기 위해서는 Data Source를 추가해야 한다.
  • Data Source란, Grafana가 매트릭 정보를 수집하기 위해서 어떤 DB를 바라봐야 하는지 설정하는 것이라고 이해하면 된다.
  • 여기에선 Prometheus를 사용하여 Data Source를 가져오고자 한다.

 

Prometheus

  • Prometheus는 SoundCloud사에서 만든 오픈소스 시스템 모니터링 및 경고 툴킷이다.
  • 지금은 독립형 오픈소스 프로젝트이며 많은 회사들이 사용하고 있다
  • 또한 kubernetes에서도 Prometheus를 사용하여 매트릭 수집 및 대시보드 구축하는 방식을 장려하고 있다.
  • 작동 구조는 아래와 같다.
  • Jobs/exporters는 실제로 매트릭을 수집하는 프로세스라고 보면 된다.
  • exporter가 매트릭을 수집하고 HTTP 통신을 통해 매트릭 데이터를 가져갈 수 있게 /metrics 라는 HTTP 엔드포인트를 제공한다.
  • Prometheus server가 exporter의 엔드포인트로 HTTP GET 요청을 날려 매트릭 정보를 수집(Pull)한다.
  • 수집한 정보를 Prometheus가 제공하는 간단한 웹 뷰를 통해 조회할 수 있고 그 안에서 테이블 및 그래프 형태로 볼 수 있다.
  • 시각화 도구가 부족해서 이를 직접 사용하지는 않고 대게 Grafana라는 Data Visualization tool을 이용하여 시각화하고 있다.

 

Prometheus 실행

# ./prometheus --config.file=prometheus.yml

Prometheus 접속 화면 ( http://설치된 곳 IP주소:9090 )

Prometheus를 Grafana Data Source로 등록

 Prometheus를 Grafana Dashboard에 등록