Docker-Pi – DB and Visualisation
Posted: December 8, 2016 Filed under: docker, pi2, Uncategorized Comments Off on Docker-Pi – DB and VisualisationDuring my docker trials and tribulations, I found two great tools for storing measurement and then displaying them..
InfluxDB
It’s not a complex database like MySQL – it’s a simple way of storing time-lapse measurements. I’ll late use it for storing temperature and humidity measurements, but for now we’ll get it setup and drop in some resource stats from the Pi.
Thankfully, someone’s already compiled Influx for the Raspberry Pi and Docker..
HypriotOS/armv7: pirate@black-pearl in ~
$ docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 -v /var/docker_data/influxdb:/data --name influxsrv sbiermann/rpi-influxdb
InfluxDB exposes two webports:
- 8083 – is a web-based UI for basic DB administration and querying
- 8086 – is a HTTP API for posting/getting data
The default username and password for influx is root/root.
Getting System Stats
It’s useful to know what your Pi is up to and how the resource utilisation looks, especially if you start pushing some heavy scripts or apps to it. Telegraf has been compiled for the Pi architecture here. Don’t follow the instructions about creating a dedicated data folder.. let Docker do this for you.
Now- the default rpi-telegraf configuration tries to send data to influx using localhost:8086 – this will fail as we’re not running influx inside the same container. To fix this we need to do two things..
Firstly – add the ‘–link’ command to the docker run CLI to link the influxdb container to the telegraf container.
- –link influxsrv:influxsrv – docker will create a DNS entry internally and map the influxsrv hostname to the dynamic IP of the influx container
Secondly – modify the telegraf configuration to point to the right influx hostname. To do this, you’ll need to run telegraf once and then use the docker inspect to find the data directory and edit the telegraf.conf file.
Run telegraf with the link:
HypriotOS/armv7: pirate@black-pearl in /var/docker_data
$ docker run -ti -v /data –link influxsrv:influxsrv –name telegraf apicht/rpi-telegraf
And then kill the process
Find the config config:
As we’ve been creating a dedicated store for our container’s data, you should find the telegraf data in /var/docker_data/telegraf
Edit the telegraf.conf file and the influxdb section:
[[outputs.influxdb]] ## The full HTTP or UDP endpoint URL for your InfluxDB instance.
## Multiple urls can be specified as part of the same cluster,
## this means that only ONE of the urls will be written to each interval.
# urls = [“udp://localhost:8089”] # UDP endpoint example
urls = [“http://influxsrv:8086”] # required
## The target database for metrics (telegraf will create it if not exists).
database = “telegraf” # required
Now telegraf can be run as a daemon container:
HypriotOS/armv7: pirate@black-pearl in ~
$ docker run -d -v /data –link influxsrv:influxsrv –name telegraf apicht/rpi-telegraf