I just started looking to InfluxDB and Telegraf for collecting data on a Linux machine, then visualizing it with Grafana . I’ve historically used collectd , statsite , and graphite to accomplish the same sort of task, but wanted to see how some of the new software compares.
I’m running a Ubuntu 14.04 LTS virtual machine, so feel free to follow along.
I managed to install the packages from the InfluxDB ubuntu repositories :
$ cat /etc/apt/sources.list.d/influxdb.list deb https://repos.influxdata.com/ubuntu trusty stable
After adding the repo, and their GPG key, update and install the packages:
$ sudo apt-get update $ sudo apt-get install influxdb telegraf
At the time of this writing Grafana just released 3.0 beta, but the packages are not yet in the repositories. I went ahead and followed the debian documentation to install directly from .deb .
$ dpkg -l grafana ||/ Name Version Architecture Description +++-======-=====================-=====-======= ii grafana 3.0.0-beta21459801392 amd64 Grafana
Next I made sure my services were running for these three bad boys:
$ service influxdb status $ service telegraf status $ service grafana-server status
At this point you should be able to hit the Grafana on the Linux machine, the service listens on tcp port 3000, so something like the following url should work:
On the login screen login using the following credentials:
username: admin password: admin
Add your InfluxDB service as a Datasource in Grafana:
Next go ahead and create a new dashboard by clicking the Home dropdown on the top toolbar. Next from the left green widget create a new Graph Panel :
If Telegrapf is running and collecting you should be able to see a few options in your FROM select measurements Graph options:
What we are going to do now is add a new measurement to this section by using the Telegraf exec plugin :
$ cat /etc/telegraf/telegraf.d/custom.conf [[inputs.exec]] command = "/silly.py" data_format = "json" name_suffix = "_custom" interval = "10s"
This plugin will call a silly Python script that returns the current second /silly.py :
#!/usr/bin/env python import json from datetime import datetime s = datetime.now().second print json.dumps(dict(seconds=s))
Once we have these in place we can restart the Telegraf service and should start to see some metrics:
$ telegraf -config /etc/telegraf/telegraf.conf -test $ service telegraf restart
Lets use this new measurement , and tweak the Display a little bit:
Now just for fun lets alter the Interval of our plugin from 10 seconds to 1 seconds:
$ cat /etc/telegraf/telegraf.d/custom.conf [[inputs.exec]] command = "/silly.py" data_format = "json" name_suffix = "_custom" interval = "1s"
And of course restart Telegraf:
$ telegraf -config /etc/telegraf/telegraf.conf -test $ sudo service telegraf restart
After letting it run for about a minute you should get something like this:
Told you it was Silly :)