이 포스팅에서는 시계열 데이터베이스에 특화된 Influxdb 와 Grafana를 사용해서, 라즈베리파이에서 수집한 데이터의 시각화를 목표로 합니다.
먼저 센서의 데이터를 수집가능한 라즈베리파이가 있다는 가정하에, 작업순서는 크게 3가지로 나뉩니다.
- 라즈베라파이에 Influx, Grafana 인스톨 및 초기설정.
- Node-RED에서 플로우 작성.
- Grafana에서 대시보드 생성.
제가 사용한 라즈베리파이 보드 버전과 OS버전입니다.
1. 라즈베라파이에 Influx, Grafana 인스톨 및 설정
influxDB 설치
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apt-transport-https
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update
sudo apt-get install influxdb
기존 설치된 패키지들을 최신으로 업데이트 후, influxdb패키지 다운로드 링크를 추가, influxdb설치.
influxDB 설정
설치후 /etc/influxdb/influxdb.conf 의 http부분을 다음과 같이 수정해 줍니다. [;] 부분을 삭제.
[http]
# Determines whether HTTP endpoint is enabled.
enabled = true
# The bind address used by the HTTP service.
bind-address = ":8086"
# Determines whether user authentication is enabled over HTTP/HTTPS.
auth-enabled = false
influxDB에 database 추가
influxdb는 데이터를 저장할 데이터베이스만 생성하면, sql처럼 테이블과 필드를 생성하고 정의할 필요 없이 inset시에 자동으로 생성됩니다. (SUN72E_DB2는 임의로 만든 데이터베이스입니다.)
influx -precision rfc3339
Connected to http://localhost:8086 version 1.4.2
InfluxDB shell version: 1.4.2
> create database SUN72E_DB2
> show databases
name: databases
name
----
_internal
SUN72E_DB2
influxdb 재시작
sudo service influxdb restart
Grafana 설치
sudo apt-get install apt-transport-https curl
curl https://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -
echo "deb https://dl.bintray.com/fg2it/deb jessie main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
Grafana 설정
/etc/grafana/grafana.ini를 다음과 같이 수정합니다.
[server]
# Protocol (http, https, socket)
protocol = http# The ip address to bind to, empty will bind to all interfaces
;http_addr =# The http port to use
http_port = 3000
grafana를 재시작하면 http://<라즈베리파이의ip>:3000 으로 grafana 웹페이지에 접속할 수 있습니다.
sudo service grafana-service restart
2. Node-RED에서 플로우 작성.
influxdb 노드 설치
노드레드에서 아래의 influxdb노드를 인스톨합니다.
센서데이터를 influxdb노드로 전달
저는 가속도와 온습도 센서데이터를 아두이노에서 전달받아 왔습니다. influxdb로 전달할때 만약 데이터가 형식이 문자열이라면 숫자로 바꿔어야합니다.
influxdb out를 수정할때, HOST(라즈베리파이의 ip 또는 localhost입력), database(생성한 데이터베이스와 동일하게), 포트번호를 확인하고 변경해줍니다. 이후 플로우를 배포하면 influxdb내에서 테이블과 필드가 생성됩니다.
3. Grafana에서 대시보드 생성.
Grafana 접속
http://<라즈베리파이ip>:3000 주소로 Grafana에 접속하고 로그인 합니다.(디폴트는 ID:admin, PW:admin)
데이터소스 추가
아래 내용을 참고로 데이터소스를 추가하고 셋팅을 해주세요.
user는 라즈베리파이의 유저명과 패스워드, influxDB Details 의 database는 생성했던 데이터베이스를 입력후 보존.
대시보드 생성
메뉴 — 대쉬보드 — manage — 폴더 선택후 — 대시보드 추가. Graph 선택하여 패널을 생성합니다.
각 패널 별로 필드선택, 데이터를 시간별로 평균화, 쿼리추가로 복수의 데이터 표시등 상세설정이 가능합니다.
마치며..
샘플을 참고하면서 사용방법에 익숙해지면 누구라도 아래와 같이 멋지게 시각화된 보드를 손쉽게 만들 수 있는 점이 Grafana의 최고 장점이 아닐까요?