Getting started visualizing IOT data with Grafana

A friend asked for help getting his “IOT” sensor data into Grafana for visualization, so I wrote up this minimal, bare-bones process, which is applicable to CentOS6/7

Install influxDB

Add the influxdb repository:

cat <<EOF | tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/centos/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

Then install influxdb:

yum -y install influxdb

Set influxdb to start on boot, and start it now manually:

chkconfig influxdb on
/etc/init.d/influxdb start

Create your first database using the influx command. In the example below, I created database “powerstuff”:

influx
Connected to http://localhost:8086 version 1.3.1
InfluxDB shell version: 1.3.1
> CREATE DATABASE powerstuff
> quit

That’s it, you’re done. You have a basic InfluxDB installed.

Install Grafana

Install the Grafana repository:

curl -s \ https://packagecloud.io/install/repositories/grafana/stable/script.rpm.sh.rpm | \
 sudo bash

Then install grafana:

yum -y install grafana

Set grafana-server to start on boot, and start it now manually:

chkconfig grafana-server on
/etc/init.d/grafana-server start

By default, Grafana-server listens on localhost:3000. You can proxy this behind apache (with ProxyPass) or nginx as required. For a POC however, you could simple SSH-tunnel port 3000 as illustrated below:

ssh <server IP> -L 3000:127.0.0.1:3000

Access the local grafana interface on http://localhost:3000/, (user admin, password admin)

Create a datasource, with access type set to “Proxy”

Add some data

The simplest way to add data to the database is after retrieving it from the IOT sensors, using the “influx” CLI command:

[root@grafanademo ~]# influx -database powerstuff -execute 'INSERT sensors,sensor=Out1 value=4.38'
[root@grafanademo ~]#

Theoretically, you can also import old data (provided you have the timestamp entries) by formatting the data into a file (demo.txt) like this:

# DML
# CONTEXT-DATABASE:powerstuff
# CONTEXT-RETENTION-POLICY:autogen
sensors,sensor=Out1 value=801 1439856000
sensors,sensor=Out1 value=29 1439856000
sensors,sensor=Out1 value=38 1439856000
sensors,sensor=Out1 value=47 1439856000
sensors,sensor=Out1 value=109 1439858880

And then importing it like this:

influx  -import -path=demo.txt -precision=s

The import result should look something like this:

2017/08/08 09:41:33 Processed 0 commands
2017/08/08 09:41:33 Processed 5 inserts
2017/08/08 09:41:33 Failed 0 inserts

Add a dashboard

Having added (a) the data source in Grafana, and (b) some actual data to influx, you can start creating dashboard(s) with the recorded data, as illustrated below (it’ll look more interesting when you actually have real data to display!)