아두이노 온습도 센서에서 수집된 데이터로 대시보드를 구성하는 과정을 살펴보겠습니다
총 7개의 포스트로 이루어지며 아래 글목록을 보시면 확인이 가능합니다.
- 시스템 개요
- [Mosquitto] MQTT 프로토콜로 데이터를 발행 및 구독하기 위한 MQTT broker 를 구성합니다.
- [Arduino] 아두이노 보드에 온습도 센서를 연결해서 MQTT 프로토콜로 발행하는 코드를 작성합니다.
- (Docker-compose) [Influxdb+Telegraf+Grafana] 대시보드 구성을 위한 시스템은 도커 컴포즈로 일괄 관리합니다.
- [Influxdb] 온습도 데이터를 저장할 데이터베이스를 구성합니다.
- [Telegraf] MQTT broker 의 데이터를 수신해서 Influx DB 에 저장할 Agent 를 구성합니다.
- [Grafana] 데이터베이스에 저장된 데이터를 사용해서 대시보드를 구성합니다.
Setup
컨테이너가 실행된 상태에서 Grafana UI(http://xxx.xxx.xxx.xxx:43000) 에 접속합니다
기본 사용자 계정 과 비밀번호는 admin 입니다.(Sign in to Grafana | Grafana documentation)
Log in 버튼을 클릭하면 나타나는 다음 화면에서 비밀번호를 변경합니다.
비밀번호 변경 후 Submit 버튼을 클릭하면 Grafana Home 화면이 나타납니다.
Data Source 추가
좌측 메뉴에서 Connections -> Data sources 메뉴를 클릭해서 페이지를 이동한 다음
Add data source 버튼을 클릭합니다.
InfluxDB 선택합니다.
Name 과 Influxdb URL 을 입력합니다.
Query language 를 Flux 로 변경합니다.
InfluxDB Details 에 Influxdb 에서 생성한 Organization, Bucket 이름을 입력하고 Token 의 경우 Influxdb 초기 설정시 생성된 Token 을 입력합니다.
Save & Test 버튼을 클릭하면 다음과 같이 연결 성공 메세지를 확인할 수 있습니다.
대시보드 추가
좌측 메뉴에서 Dashboards 를 클릭해서 페이지를 이동한 다음 + Create dashboard 버튼을 클릭합니다.
다음 페이지에서 + Add visualization 버튼을 클릭합니다.
추가된 Data Source 가 좌측에 표시가 되면 좀 전에 추가한 Data Source 를 선택합니다.
Edit panel 화면으로 전환이 되면 하단 쿼리 편집기에 다음 쿼리를 붙여넣기 합니다.
from(bucket: "Telegraf")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "mqtt_consumer")
|> filter(fn: (r) => r["topic"] == "DRS/R1/HUM")
|> filter(fn: (r) => r["_field"] == "value")
|> toFloat()
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
조회 범위나 차트 형식을 변환해 가면서 데이터를 조회할 수 있습니다.
새로고침 버튼이 상단에 있어 설정을 변경해서 바로 조회가 가능합니다.
Apply 버튼을 클릭해서 저장하면 신규 대시보드에 패널이 추가된 것을 확인할 수 있습니다.
Save dashboard 버튼을 클릭해서 우측 패널이 표시가 되면 대시보드 이름을 입력한 다음 Save 버튼을 눌러서 대시보드를 저장할 수 있습니다.
좌측 메뉴에서 Dashboards 페이지로 이동하면 다음과 같이 추가된 대시보드를 확인할 수 있습니다.
지금은 온도 데이터를 차트 형식으로 보여주는 패널 1개만 추가해 보았습니다.
다음과 같이 패널을 여러개 조합해서 대시보드를 구성할 수 있습니다.
0 Comments