Collectd-mod-exex/luci-app-statistics: "Exec" tab not showing up


there's a good chance I'm being particularly thick today, but I can't make a graph tab showing up in LuCI after installing collectd-mod-exec.

So far I have a shell script successfully producing values, and collectd storing them in /tmp/rrd/<myhostname>/exec-lantiqdsl/* ... so far so good.

I made a quick and dirty LUA definition file in /usr/lib/lua/luci/statistics/rrdtool/definitions/exec.lua with the following content:

module("luci.statistics.rrdtool.definitions.exec", package.seeall)

function item()
	return luci.i18n.translate("Exec")

function rrdargs(graph, plugin, plugin_instance)

	return {
		title = "%H: SNR",
		vlabel = "SNR",
		data = {
			 types = { "signal_noise-downstream_snr" },
			 options = {
				  signal_noise-downstream_snr = {
						title  = "SNR",
						color  = "ff0000"


This LUA is not very sophisticated, of course, it's only supposed to get any statistics to show in a graph, and I plan to do much more later. However, do as I might, I cannot even make a tab show up in LuCI > Statistics > Graphs, there's only the ones that come by default. Neither emptying modulecaches on the device nor the browser cache, nor restarting uhttpd or anything else I tried makes a tab for "Exec" show up.

Halp. What am I missing?

Edit: Reboot didn't help, tab is still not showing up. :confused:
Edit²: In return, tabs for disabled modules still do show up. What is going on? What does one have to do to "refresh" the tabs in graphs?

Very reluctantly, I bump and ask: Anyone? Please?

You are trying to do this in 19.07, right?
It is more difficult there than on master.
(LuCI expects to find a corresponding collectd module in 19.07.)

See the discussion and PR about sqm reporting.

Visibility of disabled tabs depends on the existence of accumulated rrd data for them. If there is data, the tab is shown, even if no new data is collected.

Yes, I'm doing this in 19.07, and the collectd module is present.

I took another stab at it, from scratch. I started with the "dummy temperature" example in the wiki, supplemented the item() function, and then all of a sudden everything just ... started working. Building from there I re-inserted all the things I did before. Both my data collecting and my definitions file are essentially unchanged, for the life of me I can't tell you what I did differently this time, but it's working now.

So I will mark this closed and award you the solution. Because why not. :wink:

I now have a completely different problem with gathering DSL data (namely that collectd refuses to run scripts with root user, which results in locking problems in the shell script), but that is an entirely different story.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.