Smokeping + rrdcached integration


I’m using LibreNMS with distributed pollers (about 600 devices, 6000 ports). For graphing I’m using a separate virtual with rrdcached daemon. Native LibreNMS graphs works great with this setup, but I’ve got problems with Smokeping integration.

Because my rrdcached deamon + rrd-storage are on a different host than my web server, using local paths to rrd files is not working very well (I get it working using a shared storage), but there seems to be a cleaner way.

I’ve experimented with Smokeping. It is not documented at all, but it is possible (and not so difficult) to run it also with an external rrdcached (just by creating suitable path for “data dirs” and setting env variable to communicate with rrdcached = RRDCACHED_ADDRESS). Viewing graphs using Smokeping GUI also works (nearly the same approach - nginx+fastcgi+passing fastcgi_param RRDCACHED_ADDRESS). There is no need to alter Smokeping code - just run it in a suitable environment :slight_smile:

With this setup, I’ve got Smokeping graphs accessible in LibreNMS by link in Latency Device tab.

Not so bad, but it would be great to support this type of integration inside LibreNMS. Current code relies on local placed RRD files. To allow using an external rrdcached to create these graphs it would be better not to list files, but use a reverse logic (ie calculate path to rrd and try to open it using RRD library [with possible rrdcached support] just like other LibreNMS graphs do.

I’m not a skilled php programmer, so modifying this by myself is out of my scope. But hopefully my experience with Smokeping+rrdcached could be an inspiration for someone else, that can use it and implement this feature inside LibreNMS.

Thanks in advance


Hi Skudlik,

Was going to open a separate ticket but noticed your request is similar to mine.

Smoking Server installation:

  • 1x master,
  • 3x slaves

LibreNMS server installation:

  • 3x distributed pollers
  • 1x RRD Cached server
  • 1x DB Server

Smokeping slave servers are configured on the 3x librenms distributed pollers and this is functioning as expected when looking at the Smokeping graphs on the master smokeping server URL.

RRD Graphing however fails (does not display) on LibreNMS because LibreNMS is configured on a remote-daemon and is attemping to Graph Smokeping graphs on a ‘localdir’… the output is as below:

‘ERROR: absolute path names not allowed when talking to a remote daemon’

Could the above be worked so that LibreNMS identifies whether Smokeping RRD is using external RRD Cached server (perhaps using a FQDN) and the relative path i.e

  • smokeping.dir (absolute if rrddaemon is not set; relative if rrdaemon is set) : /dir/to/smoking/rrd
  • smokeping.url : http://nms-smokeping/smokeping/sm.cgi
  • smokeping.rrdcacheddaemon: yes|no
  • smokeping.rrdcacheddaemonurl : <nms-rrdcached.hostname>

and have the Librenms graphing files use the smokeping ‘rrdcachedaeamon variable’ if set?

1 Like