Grafana란?

ShinChul Bang
finda 기술 블로그
11 min readApr 23, 2020

시계열 데이터에 대한 대시보드를 제공해주는 Data Visualization Tool인 Grafana에 대해 알아보자.

Grafana?

Grafana란, 시계열 매트릭 데이터를 시각화 하는데 가장 최적화된 대시보드를 제공해주는 오픈소스 툴킷이다.

다양한 DB를 연결하여 DB의 데이터를 가져와 시각화 할 수 있으며, 그래프를 그리는 방법도 간단히 마우스 클릭으로 완료할 수 있다.

Grafana에 대해 궁금하다면 아래 링크를 통해 맛보기로 경험해봐도 좋을 것 같다.

Grafana는 시계열 매트릭 데이터 수집에 강한 모습을 보이는 만큼, 활용하는 부분도 서버 리소스의 매트릭 정보나 로그 같은 데이터를 시각화는 데 많이 사용한다.

시각화한 그래프에서 특정 수치 이상으로 값이 치솟을 때(예를 들어 CPU 사용량 80% 이상) 알림을 전달받을 수 있는 기능도 제공한다. 이러한 기능은 인프라 운영 관점에서 굉장히 중요한 기능이라고 할 수 있다.

그리고 오픈소스 툴킷인 만큼, 커뮤니티도 많이 활성화 되어있는데, 일반 사용자들이 만들어놓은 대시보드를 import해서 사용할 수도 있고 import한 대시보드를 내 입맛에 맞게 커스터마이징 할 수도 있다.

또한 다양한 플러그인이 있어 Grafana 내부적으로 기능 확장도 쉽게 가능하다.

자, 그럼 Grafana를 어떻게 설치하고 사용하는지 한번 알아보자.

Grafana 설치

Grafana를 설치하기 위한 자세한 정보는 아래 링크를 통해 확인할 수 있다.

해당 포스트에서는 Red Hat, CentOS, RHEL, and Fedora(64 Bit) 계열의 리눅스 환경에서 설치하는 것을 바탕으로 설명하겠다.

먼저 공식 문서에서 제공하는 것 처럼 아래 명령어를 실행한다.

$ wget https://dl.grafana.com/oss/release/grafana-6.7.2-1.x86_64.rpm $ sudo yum install grafana-6.7.2-1.x86_64.rpm

Grafana 설치를 완료한 뒤에 아래 명령어를 통해 Grafana 서버를 시작한다.

# 새로운 데몬 리로드 
$ sudo systemctl daemon-reload
# grafana-server 시작
$ sudo systemctl start grafana-server
# grafana-server가 잘 시작되고 있는지 확인
$ sudo systemctl status grafana-server
● grafana-server.service - Grafana instance
Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; enabled; vendor preset: disabled)
Active: active (running) since 목 2020-04-09 09:12:22 UTC; 1 weeks 6 days ago
Docs: <http://docs.grafana.org>
Main PID: 9597 (grafana-server)
CGroup: /system.slice/grafana-server.service
└─9597 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid --packagi...
...
...
# 부팅 시 자동으로 grafana-server가 시작되도록 하려면 아래 명령어 실행
$ sudo systemctl enable grafana-server.service

Grafana를 간단하게 설치하고 실행했다.

이제 실제 Grafana를 사용해보자.

Grafana를 사용하여 대시보드를 구성하기 위해서는 실제 매트릭을 수집하고 있는 데이터베이스가 필요하다.(Elasticsearch 혹은 Prometheus같은 DB)

만약 매트릭을 수집하고 있는 데이터베이스가 없다면 아래 링크를 참고하여 Prometheus에 대해서도 알아보기를 바란다.

브라우저를 열어, Grafana를 설치한 서버의 Public IP와 3000번 포트를 통해 Grafana 대시보드에 접속할 수 있다.

(http://<public-ip>:3000/ 혹은 https://<public-ip>:3000/)

대시보드에 접속하면 아래와 같은 화면을 볼 수 있다.

Grafana를 설치하고나서 대시보드에 처음 들어가면 볼 수 있는 화면. ADMIN 계정의 초기 비밀번호를 설정하는 페이지이다.
Grafana 대시보드의 ADMIN 계정의 비밀번호를 지정하고 ‘Save’ 버튼을 클릭한다.

ADMIN 계정의 초기 비밀번호를 지정하고나면 아래와 같이 대시보드 메인 페이지를 볼 수 있다.

왼쪽에는 메뉴바가 있다.

Grafana 대시보드의 메인 화면

Data Source

먼저 Grafana를 통해 매트릭 정보를 수집하기 위해서는 Data Source를 추가해야 한다.

Data Source란, Grafana가 매트릭 정보를 수집하기 위해서 어떤 DB를 바라봐야 하는지 설정하는 것 이라고 이해하면 된다.

Data Source를 추가하기 위해서는 메인 화면의 ‘Add data source’라고 하는 버튼을 클릭 한다.

다른 방법으로는, 왼쪽 메뉴의 톱니바퀴같이 생긴 아이콘(밑에서 2번째)에 마우스를 올려놓으면 Data Sources라는 메뉴를 확인할 수 있다. 그 버튼을 클릭하면 동일하게 동작한다.

아래 화면은 Data Source를 추가하는 페이지이다.

화면에서 볼 수 있듯이 Grafana에서는 여러가지 데이터베이스를 지원한다.

Prometheus를 선택해보자.

Prometheus에 마우스를 올려놓으면 아래와 같이 ‘Select’ 버튼을 확인할 수 있다.

‘Select’ 버튼을 클릭하여 Data Source를 만들어보자.

아래는 ‘Select’ 버튼을 클릭했을 때 볼 수 있는 화면이다.

이 페이지에서 Data Source로 등록할 데이터베이스의 정보를 입력한다.

모두 입력한 뒤 아래 ‘Save & Test’ 버튼을 클릭하면 Grafana에서 데이터베이스에 잘 붙을 수 있는지(통신이 가능한 지)확인한 후 Data Source를 생성 완료한다.

Data Source 설정이 잘 완료되었을 경우

만약 Grafana가 데이터베이스에 접근하지 못하면 아래와 같이 에러 문구를 출력해준다.

에러 문구를 잘 파악하여 해결하도록 한다.

아래 에러 문구는 Grafana와 데이터베이스가 서로 HTTP 통신이 안되어서 발생한 Bad Gateway 에러이다. 따라서 Grafana 혹은 데이터베이스 서버의 네트워크 설정 & 방화벽 설정을 적절히 잘 조정하여 Grafana와 데이터베이스가 잘 통신할 수 있도록 해주자.

Data Source 설정이 잘 안되었을 경우, 위 이미지는 HTTP 통신 에러가 원인이다.

Dashboard

이제 Data Source를 추가했으니 대시보드를 생성해보자.

메인 화면으로 다시 돌아가서 ‘New dashboard’ 버튼을 클릭하자.

마찬가지로 Dashboard를 생성하기 위한 동작으로는 왼쪽 메뉴바에 네모 모양(위에서 2번째) 아이콘의 ‘Manage’ 버튼을 클릭한 뒤, ‘New Dashboard’라는 버튼을 클릭하는 것과 동일하게 동작한다.

‘New Dashboard’ 버튼을 클릭하면 아래와 같은 화면을 볼 수 있다.

‘Add Query’버튼 혹은 ‘Choose Visualization’버튼을 클릭하여 그래프를 그릴 수 있다.

이 때 어떤 데이터베이스에서 매트릭 정보를 가져올 것인지는 ‘Query’ 부분의 Select box에서 기존에 등록해놓았던 Data Source를 선택하여 가능하다.

Prometheus Data Source를 선택하여 그래프를 그리는 화면

아래 예시들은 Prometheus에서 기본적으로 수집하는 매트릭 정보를 그래프로 나타낸 것이다.

이렇게 만든 그래프를 대시보드에서 한번에 볼 수 있다.

그래프를 시각화하는 도구는 아래와 같이 다양한 종류를 지원한다.

추가적으로 더 기능을 확장하고 싶다면, Grafana 플러그인을 설치하여 가능하다.

더욱 많은 Data Source와 다양한 매트릭을 수집하여 여러가지 종류의 그래프를 그린다면 아래 그림처럼 그럴싸한 대시보드를 만들 수 있을 것이다.

--

--