make luci-app-statistics more extensible

This commit is contained in:
Matthias Berndt 2019-07-04 00:40:58 +02:00
parent f56a6df49c
commit c1380ab367
35 changed files with 301 additions and 226 deletions

View file

@ -22,53 +22,25 @@ function index()
s_output = _("Output plugins"),
s_general = _("General plugins"),
s_network = _("Network plugins"),
apcups = _("APC UPS"),
conntrack = _("Conntrack"),
contextswitch = _("Context Switches"),
cpu = _("Processor"),
cpufreq = _("CPU Frequency"),
csv = _("CSV Output"),
curl = _("cUrl"),
df = _("Disk Space Usage"),
disk = _("Disk Usage"),
dns = _("DNS"),
email = _("Email"),
entropy = _("Entropy"),
exec = _("Exec"),
interface = _("Interfaces"),
iptables = _("Firewall"),
irq = _("Interrupts"),
iwinfo = _("Wireless"),
load = _("System Load"),
memory = _("Memory"),
netlink = _("Netlink"),
network = _("Network"),
nut = _("UPS"),
olsrd = _("OLSRd"),
openvpn = _("OpenVPN"),
ping = _("Ping"),
processes = _("Processes"),
rrdtool = _("RRDTool"),
sensors = _("Sensors"),
splash_leases = _("Splash Leases"),
tcpconns = _("TCP Connections"),
thermal = _("Thermal"),
unixsock = _("UnixSock"),
uptime = _("Uptime")
}
-- our collectd menu
local collectd_menu = {
output = { "csv", "network", "rrdtool", "unixsock" },
general = { "apcups", "contextswitch", "cpu", "cpufreq", "df",
"disk", "email", "entropy", "exec", "irq", "load", "memory",
"nut", "processes", "sensors", "thermal", "uptime" },
network = { "conntrack", "curl", "dns", "interface", "iptables",
"netlink", "olsrd", "openvpn", "ping",
"splash_leases", "tcpconns", "iwinfo" }
output = { },
general = { },
network = { }
}
local plugin_dir = "/usr/lib/lua/luci/statistics/plugins/"
for filename in nixio.fs.dir(plugin_dir) do
local plugin_fun = loadfile(plugin_dir .. filename)
setfenv(plugin_fun, { _ = luci.i18n.translate })
local plugin = plugin_fun()
local name = filename:gsub("%.lua", "")
table.insert(collectd_menu[plugin.category], name)
labels[name] = plugin.label
end
-- create toplevel menu nodes
local st = entry({"admin", "statistics"}, template("admin_statistics/index"), _("Statistics"), 80)
st.index = true

View file

@ -0,0 +1,9 @@
return {
legend = {
{ "Host", "Port" },
{ },
{ }
},
label = _("APC UPS"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("Conntrack"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("Context Switches"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("Processor"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("CPU Frequency"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ "DataDir" },
{ "StoreRates" },
{ }
},
label = _("CSV Output"),
category = "output"
}

View file

@ -0,0 +1,4 @@
return {
label = _("cUrl"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "IgnoreSelected" },
{ "Devices", "MountPoints", "FSTypes" }
},
label = _("Disk Space Usage"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "IgnoreSelected" },
{ "Disks" }
},
label = _("Disk Usage"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ "Interfaces", "IgnoreSources" }
},
label = _("DNS"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ "SocketFile", "SocketGroup", "SocketPerms", "MaxConns" },
{ },
{ }
},
label = _("Email"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("Entropy"),
category = "general"
}

View file

@ -0,0 +1,4 @@
return {
label = _("Exec"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "IgnoreSelected" },
{ "Interfaces" }
},
label = _("Interfaces"),
category = "network"
}

View file

@ -0,0 +1,4 @@
return {
label = _("Firewall"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "IgnoreSelected" },
{ "Irqs" }
},
label = _("Interrupts"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "IgnoreSelected" },
{ "Interfaces" }
},
label = _("Wireless"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("System Load"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("Memory"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "IgnoreSelected" },
{ "Interfaces", "VerboseInterfaces", "QDiscs", "Classes", "Filters" }
},
label = _("Netlink"),
category = "network"
}

View file

@ -0,0 +1,4 @@
return {
label = _("Network"),
category = "output"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ "UPS" }
},
label = _("UPS"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ "Host", "Port", "CollectLinks","CollectRoutes","CollectTopology"},
{ },
{ }
},
label = _("OLSRd"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "CollectIndividualUsers", "CollectUserCount", "CollectCompression", "ImprovedNamingSchema" },
{ "StatusFile" }
},
label = _("OpenVPN"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ "TTL", "Interval", "AddressFamily" },
{ },
{ "Hosts" }
},
label = _("Ping"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ "Processes" }
},
label = _("Processes"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ "DataDir", "StepSize", "HeartBeat", "RRARows", "XFF", "CacheFlush", "CacheTimeout" },
{ "RRASingle" },
{ "RRATimespans" }
},
label = _("RRDTool"),
category = "output"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "IgnoreSelected" },
{ "Sensor" }
},
label = _("Sensors"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("Splash Leases"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "ListeningPorts" },
{ "LocalPorts", "RemotePorts" }
},
label = _("TCP Connections"),
category = "network"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ "IgnoreSelected" },
{ "Device" }
},
label = _("Thermal"),
category = "general"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ "SocketFile", "SocketGroup", "SocketPerms" },
{ },
{ }
},
label = _("UnixSock"),
category = "output"
}

View file

@ -0,0 +1,9 @@
return {
legend = {
{ },
{ },
{ }
},
label = _("Uptime"),
category = "general"
}

View file

@ -19,6 +19,7 @@ $Id$
require("luci.model.uci")
require("luci.sys.iptparser")
require("luci.util")
require("nixio.fs")
local ipt = luci.sys.iptparser.IptParser()
local uci = luci.model.uci.cursor()
@ -270,207 +271,32 @@ end
plugins = {
apcups = {
{ "Host", "Port" },
{ },
{ }
},
collectd = {
{ "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads", "Hostname" },
{ },
{ }
},
conntrack = {
{ },
{ },
{ }
},
cpu = {
{ },
{ },
{ }
},
cpufreq = {
{ },
{ },
{ }
},
contextswitch = {
{ },
{ },
{ }
},
csv = {
{ "DataDir" },
{ "StoreRates" },
{ }
},
curl = config_curl,
df = {
{ },
{ "IgnoreSelected" },
{ "Devices", "MountPoints", "FSTypes" }
},
disk = {
{ },
{ "IgnoreSelected" },
{ "Disks" }
},
dns = {
{ },
{ },
{ "Interfaces", "IgnoreSources" }
},
email = {
{ "SocketFile", "SocketGroup", "SocketPerms", "MaxConns" },
{ },
{ }
},
entropy = {
{ },
{ },
{ }
},
exec = config_exec,
interface = {
{ },
{ "IgnoreSelected" },
{ "Interfaces" }
},
iptables = config_iptables,
irq = {
{ },
{ "IgnoreSelected" },
{ "Irqs" }
},
iwinfo = {
{ },
{ "IgnoreSelected" },
{ "Interfaces" }
},
load = {
{ },
{ },
{ }
},
logfile = {
{ "LogLevel", "File" },
{ "Timestamp" },
{ }
},
memory = {
{ },
{ },
{ }
},
netlink = {
{ },
{ "IgnoreSelected" },
{ "Interfaces", "VerboseInterfaces", "QDiscs", "Classes", "Filters" }
},
network = config_network,
nut = {
{ },
{ },
{ "UPS" }
},
olsrd = {
{ "Host", "Port", "CollectLinks","CollectRoutes","CollectTopology"},
{ },
{ }
},
openvpn = {
{ },
{ "CollectIndividualUsers", "CollectUserCount", "CollectCompression", "ImprovedNamingSchema" },
{ "StatusFile" }
},
ping = {
{ "TTL", "Interval", "AddressFamily" },
{ },
{ "Hosts" }
},
processes = {
{ },
{ },
{ "Processes" }
},
rrdtool = {
{ "DataDir", "StepSize", "HeartBeat", "RRARows", "XFF", "CacheFlush", "CacheTimeout" },
{ "RRASingle" },
{ "RRATimespans" }
},
sensors = {
{ },
{ "IgnoreSelected" },
{ "Sensor" }
},
splash_leases = {
{ },
{ },
{ }
},
tcpconns = {
{ },
{ "ListeningPorts" },
{ "LocalPorts", "RemotePorts" }
},
thermal = {
{ },
{ "IgnoreSelected" },
{ "Device" }
},
unixsock = {
{ "SocketFile", "SocketGroup", "SocketPerms" },
{ },
{ }
},
uptime = {
{ },
{ },
{ }
},
wireless = {
{ },
{ },
{ }
},
}
local plugin_dir = "/usr/lib/lua/luci/statistics/plugins/"
for filename in nixio.fs.dir(plugin_dir) do
local plugin_fun = loadfile(plugin_dir .. filename)
setfenv(plugin_fun, { _ = luci.i18n.translate })
local plugin = plugin_fun()
local name = filename:gsub("%.lua", "")
plugins[name] = plugin.legend
end
preprocess = {
RRATimespans = function(val)
local rv = { }