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에 등록
'Database General' 카테고리의 다른 글
Oracle PostgreSQL MySQL 데이터 타입 비교 (0) | 2021.04.04 |
---|---|
Oracle / PostgreSQL / MySQL MVCC 매커니즘 비교 (0) | 2021.04.04 |
데이터베이스 HA(고가용성)와 Sharding(샤딩) (0) | 2021.04.04 |