[smokeping-users] Adding InfluxDB support to smokeping
Adrian Popa
adrian_gh.popa at telekom.ro
Fri Oct 4 09:20:26 CEST 2019
Hello all!
I know the list is mostly idle/shutting down, but I'm following the
recommendation on github (HACKING) to discuss new potentially disruptive
changes on the mailing list. If I get no replies I will open a ticket on
github.
We're using smokeping to do some automated network parameter
measurements to check on the perceived service quality we offer our end
customers. We're using remote probes/slaves to do measurements from
different points in the network and aggregating the data on the master.
I've also created some plugins in the past few years, so we want to
stick with smokeping for the measurements.
However, the web GUI is not really suitable for large scale data
analysis. It's ok for historical analysis only. So, I'm planning on
making a few (hopefully small) changes to smokeping to add support to
write the measurements in an influxdb database, in addition to storing
them as RRD. I hope to be able to push the changes (once they're
working) to the main Smokeping branch. Having data in influxdb allows
easier automated analysis (e.g. using an sql-like language to get the
latest measurements for a destination from all the slaves, without
having to parse the RRD files). It also opens up the possibility to have
views exposed in Grafana and other more modern data visualization tools.
Here's what I'm planning:
1. Allow the addition of custom configuration options to the config file
so that those options can be mapped to influxdb tags (so that they are
easily searchable in influxdb). For instance, something like this:
+ Hosts_in_region_A
menu = Hosts in region A
title = Hosts in region A
++ client1
host = 192.168.1.1
probe = fping
influx_download = 100Mbps
influx_upload = 10Mbps
influx_service_type = FTTB
For now, when I try to add configuration options that are not defined, I
get the error:
ERROR: /opt/smokeping/bin/../etc/config, line 144: unknown variable
'influx_download'
I'm guessing I need to bypass or extend the parser so that such errors
are ignored, or become warnings. Or, better yet, if I stick with the
prefix influx_ I can make it accept any influx_ parameter, but complain
on other typos (which is useful). I'll need to do some reading on the
Grammar module...
2. Add a new config section that defines connectivity to influxdb (URL,
user, password)
3. Add a hook inside update_rrds() to intercept the data before being
written to the RRD (before or after the call to RRDs::update). Push the
raw data to influxdb (either inline for efficiency, or with a new
function call for readability).
I'm not 100% certain that the update_rrds() from Smokeping.pm gets
called for slave updates as well, or there is an equivalent in the CGI
interface. I'm guessing it's the same, but I will do some tests when I
get there.
So - what are your thoughts on this? Are there better/easier ways of
doing it?
Thanks!
More information about the smokeping-users
mailing list