今天介紹有了儀表板平台,那所儲存資料因該如何存?除了一般 MySQL,Microsoft SQL Server,PostgreSQL 之外。
InfluxDB
InfluxDB是一個由 InfluxData 開發的開源時序型資料庫 time series database (TSDB)。它由 Go 寫成,著力於高性能地查詢與存儲時序型數據。
因為是 Go 寫成可以跨平台速度快資料有壓縮等特點。
這裡我們一樣使用 Dockr 來做使用。
先建立目錄 influxdb 存放 influxdb 的資料。
$ mkdir influxdb
$ cd influxdb
$ docker run --rm \
-e INFLUXDB_DB=db0 -e INFLUXDB_ADMIN_ENABLED=true \
-e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=admin \
-e INFLUXDB_USER=telegraf -e INFLUXDB_USER_PASSWORD=telegraf \
-v /home/pi/influxdb:/var/lib/influxdb \
influxdb /init-influxdb.sh
執行結果:
pi@ras2:~/influxdb $ docker run -d --name=influxdb \
> -e INFLUXDB_DB=db0 -e INFLUXDB_ADMIN_ENABLED=true \
> -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=admin \
> -e INFLUXDB_USER=telegraf -e INFLUXDB_USER_PASSWORD=telegraf \
> -v /home/pi/influxdb:/var/lib/influxdb \
> influxdb /init-influxdb.sh
Unable to find image 'influxdb:latest' locally
latest: Pulling from library/influxdb
cc2e500f6b65: Pull complete
2e6cdcabf7c2: Pull complete
2ab3d8012daa: Pull complete
733644d1c82a: Pull complete
3f1bf43e236d: Pull complete
27603cef2713: Pull complete
9ecab9f3d7f0: Pull complete
9b7a13772d5a: Pull complete
Digest: sha256:f0b7acde2d7fa215576a9f83abbf363b6f5641896535a01dbaf62299ab2272f9
Status: Downloaded newer image for influxdb:latest
4268d7b41e9b43ef7b723917ee5bccf45452a6f4737277d3a71a6c738ef8346b
pi@ras2:~/influxdb $
剛剛只是籲先建立不是真正的執行。
現在來啟動!
$ docker run -d --name=influxdb \
-e INFLUXDB_ADMIN_ENABLED=true \
-e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=admin \
-p 8086:8086 \
-p 8083:8083 \
-p 2003:2003 \
-v /home/pi/influxdb:/var/lib/influxdb \
influxdb
執行結果:
pi@ras2:~/influxdb $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7e7d4e25875e influxdb "/entrypoint.sh infl…" 7 minutes ago Up 7 minutes 0.0.0.0:2003->2003/tcp, 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb
97cad68c9dac grafana/grafana "/run.sh" 5 hours ago Up 5 hours 0.0.0.0:3000->3000/tcp grafana
479698322a6d emqx/emqx:v3.2.3-alpine3.9-arm32v7 "/usr/bin/docker-ent…" 24 hours ago Up 24 hours 4369/tcp, 5369/tcp, 6369/tcp, 8080/tcp, 8083-8084/tcp, 8883/tcp, 0.0.0.0:1883->1883/tcp, 0.0.0.0:18083->18083/tcp, 11883/tcp emqx
pi@ras2:~/influxdb $
InfluxDB 資料庫設定 按下 Save & Test
我們的圖表 Grafana 已經有了資料庫但是沒有資料所以現在就只剩資料的寫入這項作業。
一般來說會要你寫程式想辦法從 MQTT 接收資料,再把收到資料寫入 InfluxDB 其中還會遇到很多問題。
跟你說不用!!現在介紹一套超強的資料收集與輸出工具!Telegraf與 InfluxDB 一樣是 influxdata 公司所開源的套件。
Telegraf
直接定義好輸入輸出即可!
這裡就是我的設定檔 telegraf.conf
[[inputs.mqtt_consumer]]
## MQTT broker URLs to be used. The format should be scheme://host:port,
## schema can be tcp, ssl, or ws.
servers = ["tcp://192.168.0.51:1883"]
## Topics that will be subscribed to.
topics = [
"home/#",
]
data_format = "value"
data_type = "float"
[[outputs.influxdb]]
urls = ["http://192.168.0.51:8086"]
database = "db0"
username = "telegraf"
password = "telegraf"
數入重點部分就是這個設定可以參考連結。
https://docs.influxdata.com/telegraf/v1.12/data_formats/input/
data_format = "value"
https://docs.influxdata.com/telegraf/v1.12/data_formats/input/value/
data_type = "integer"
那我們直接使用 Docker 啟動。
docker run -d --name=telegraf \
-v \$PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \
arm32v7/telegraf
這邊就看圖說故事。
![dashboard]
Dashboard 新增一個 Query 如果資料順利進來,如果資料順利進來,WHERE 後面指結可以點選到我們設定的資料。現在點選溫度。
Dashboard 設定 左方點選中間圖示設定樣式。中間輸入標題與單位,右邊輸入區段顏色是不是很簡單啊。
Dashboard 新增一個 Query 後面直接可以點選到我們設定的資料。現在點選濕度。
Dashboard 設定 左方點選中間圖示設定樣式。中間輸入標題與單位,右邊輸入區段顏色。
Dashboard 新增一個 Query 後面直接可以點選到我們設定的資料。現在點選溫度。
Dashboard 設定 左方點選中間圖示設定樣式。中間輸入標題與單位。
Dashboard 新增一個 Query 後面直接可以點選到我們設定的資料。現在點選濕度。
Dashboard 設定 左方點選中間圖示設定樣式。中間輸入標題與單位。
最後呈現!
Dashboard 設定
今天介紹 Grafana 與 InfluxDB 還有 Telegraf 這樣的組合完美演繹了精美儀表板!是不是與之前開源的平台差很多呢!。