#1 라즈베리파이에서 데이터를 시각화해보자(Node-RED + Influx + Grafana)

prasowa
7 min readOct 30, 2020

--

이 포스팅에서는 시계열 데이터베이스에 특화된 Influxdb 와 Grafana를 사용해서, 라즈베리파이에서 수집한 데이터의 시각화를 목표로 합니다.

먼저 센서의 데이터를 수집가능한 라즈베리파이가 있다는 가정하에, 작업순서는 크게 3가지로 나뉩니다.

  1. 라즈베라파이에 Influx, Grafana 인스톨 및 초기설정.
  2. Node-RED에서 플로우 작성.
  3. Grafana에서 대시보드 생성.
두번째줄 보드버전, 세번째줄 os버전

제가 사용한 라즈베리파이 보드 버전과 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노드를 인스톨합니다.

메뉴-팔렛트관리-설치가능한 노드-influx검색

센서데이터를 influxdb노드로 전달

저는 가속도와 온습도 센서데이터를 아두이노에서 전달받아 왔습니다. influxdb로 전달할때 만약 데이터가 형식이 문자열이라면 숫자로 바꿔어야합니다.

갈색노드가 influxdb노드. 플로우가 너무 조잡하네요 ㅠㅠ
influxdb out 노드 수정1
influxdb out 노드 수정2

influxdb out를 수정할때, HOST(라즈베리파이의 ip 또는 localhost입력), database(생성한 데이터베이스와 동일하게), 포트번호를 확인하고 변경해줍니다. 이후 플로우를 배포하면 influxdb내에서 테이블과 필드가 생성됩니다.

3. Grafana에서 대시보드 생성.

Grafana 접속

http://<라즈베리파이ip>:3000 주소로 Grafana에 접속하고 로그인 합니다.(디폴트는 ID:admin, PW:admin)

로그인 화면

데이터소스 추가

아래 내용을 참고로 데이터소스를 추가하고 셋팅을 해주세요.

메뉴에서 data sources로
셋팅화면

user는 라즈베리파이의 유저명과 패스워드, influxDB Details 의 database는 생성했던 데이터베이스를 입력후 보존.

데이터소스 추가 완료.

대시보드 생성

메뉴 — 대쉬보드 — manage — 폴더 선택후 — 대시보드 추가. Graph 선택하여 패널을 생성합니다.

타이틀에서 Edit로 그래프 편집가능.
기압데이터를 Graph패널로 출력

각 패널 별로 필드선택, 데이터를 시간별로 평균화, 쿼리추가로 복수의 데이터 표시등 상세설정이 가능합니다.

마치며..

샘플을 참고하면서 사용방법에 익숙해지면 누구라도 아래와 같이 멋지게 시각화된 보드를 손쉽게 만들 수 있는 점이 Grafana의 최고 장점이 아닐까요?

Grafana plat home 샘플 대시보드

--

--

No responses yet