본문 바로가기

카테고리 없음

Grafana 설치 및 InfluxDB 연동

Grafana란?

" Grafana is the open source analytics & monitoring solution for every database."라고 공식 홈페이지에서 소개하고 있다.

InfluxDB, Prometheus, Elasticsearch, MySQL등과 연동하여 실시간 데이터를 시각적으로 표현할 수 있다.

주요 기능으로는 대시보드 생성, 알림 설정등이 있으며,  이를 통해 시스템 성능 모니터링, 지표 추적 등에 활용한다.

Grafana는 커스터마이징이 가능하고 다양한 플러그인도 지원하고 있다.

 

(Grafana의 Frontend는 typescript, Backend는 Go언어로 작성되었다고 한다.)

 

Grafana 설치

 

Download Grafana | Grafana Labs

Overview of how to download and install different versions of Grafana on different operating systems.

grafana.com

공식홈페이지에서 가장 최신버전, Enterprise, window를 클릭 후 Download the installer를 눌러 다운로드를 진행해 주었다.

 

그렇게 다운로드가 완료된 후  (필자는 시간이 10분정도 걸린 것 같다.)

grafana-enterprise-11.2.0.windows-amd64 해당 파일을 열어주면 아래와 같이 나오는데,

당황하지 말고 왼쪽 사진의 More info를 누르면 우측의 사진처럼 Run anyway 버튼이 나오게 되고,

이를 클릭해주면 본격적인 설치가 진행된다.

이후로는 Next..... 눌러주도록 하자...!

 

 

Grafana 접속 및 InfluxDB 연동

Grafana 로그인 화면

이후 http://localhost:3000 에 접속하면 Grafana Login 화면을 마주할 수 있다.

초기 아이디 및 비밀번호는 모두 admin이다. 작성 후 로그인 해주도록 하자.

처음 로그인 했다면, 비밀번호 변경 화면을 마주할 것이다. 각자 설정해주도록 하자.

 

이후 다음과 같은 메인 화면을 볼 수 있다!!

이제 화면에 보이는 Add your first data source나 왼쪽에서 Connections -> Data sources를 통해 

연결할 DB를 추가할 수 있다. 

 

현재 influxdb 2.x 를 사용하고 있기에, 

Query language는 Flux를 선택해 주었고, 

HTTP URL : http://localhost:8086 (influxdb)

Auth : Basic, With Credentials 

Basic Auth Details : influxdb의 User/Password작성

InfluxDB Details : Organization, Token, Default Bucket을 작성해주었다. 

 

이 후, Save & test 버튼을 통해 DB와 연결이 잘 되었는지 확인해 볼 수 있다.

 

Dashboard만들기

간단한 Dashboard를 만들어 보았다. 방법은 정말! 어렵지 않다!

 

Share버튼 좌측의 Add버튼을 통해 Visualization을 눌러 새로운 시각화 패널을 생성할 수 있다.

(Dashboard에서의 패널 이동 및 크기 조정은 모두 마우스 드래그를 통해 가능하다.)

 

이러한 화면을 마주하게 되는데, (DB연동이 안되어있다면 먼저 꼭 해주자..!)

Data source를 influxdb로 설정해준다. 

Flux쿼리를 아래에 작성 후, Query inspector을 눌러주도록 하자. 

 

아래는 필자가 사용한 FLUX 쿼리이다.

from(bucket: "AMPds2")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "Electricity_B2E.csv_measurements")
  |> filter(fn: (r) => r["_field"] == "active_power")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

 

윗부분에서 기간 설정 및 Table view를 보도록 할 수도 있다.

(최근 사용한 custom기간을 기억해주는것도 좋다..) 

우측에서는 그래프의 title, description, 선의 굵기 그래프 종류등을 설정할 수 있는데.... 

꽤나 세부적으로 설정이 가능해서 놀랐고,

무엇보다 시각화 방법에 대한 Suggestions과 그에 대한 미리보기가 가능했다!

(우측의 suggestions 사진)

이 부분이 정말 마음에 들었던 것 같다. 

 

사실 어떤 데이터를 시각화하는데에 있어서, 어떤 방법이 가장 잘 보여질까...

고민하는 것도 꽤 시간이 소요되는데,

제안을 받을 수 있을 뿐더러,

우측에서 바로바로 그 모습을 확인해 볼 수 있어 좋았던 것 같다. 

 

이외에도 이렇게 작성한 패널들에 대해 쉽게 저장하고,

(git commit처럼 update시마다  comment를 남길 수도 있다.)

여러 방식으로 export할 수 있다는 점도 장점인 것 같다. 

또한 Snapshots을 찍어 바로 내보낼 수 있는 기능도 내재되어 있었다. 

 

보통 포로메테우스와 많이 사용한다는 이야기는 들었지만,
InfluxDB를 시각화함에 있어도 정말 좋은 tool이라는 생각을 했다.

비록 Node-RED나 influxDB에서도 시각화가 가능하지만,

시각화에 특화된 Grafana를 이길 수는 없다는 생각이 들었다.

 

이후에는 Grafana의 기능들을 (특히 알람기능) 더 속속히 파헤쳐보도록 하겠다.

 


공식 홈페이지에서 보여주는 DashBoard 예시인데, 정말 디자인이 깔끔한것 같다..! 와우...