summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-statistics
diff options
context:
space:
mode:
authorFlorian Eckert <fe@dev.tdt.de>2019-09-13 11:55:36 +0200
committerFlorian Eckert <fe@dev.tdt.de>2019-09-13 12:58:57 +0200
commit2be8aefe7f7a7e368d82d332b1aeb5494aefa9b5 (patch)
treef7eef2f173d48a4cc883097c0b11fff9076ac606 /applications/luci-app-statistics
parent6482e48ac6aa3bd0f0af7fda7fb52d50bcae79e3 (diff)
luci-app-statistics: add new cpu plugin options
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Diffstat (limited to 'applications/luci-app-statistics')
-rw-r--r--applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua21
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/plugins/cpu.lua2
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua176
3 files changed, 177 insertions, 22 deletions
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua
index ee3fd254f..56af1cc96 100644
--- a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua
+++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpu.lua
@@ -12,4 +12,25 @@ s = m:section( NamedSection, "collectd_cpu", "luci_statistics" )
enable = s:option( Flag, "enable", translate("Enable this plugin") )
enable.default = 0
+-- collectd_cpu.reportbycpu (ReportByCpu)
+reportbycpu = s:option( Flag, "ReportByCpu",
+ translate("Report by CPU"),
+ translate("By setting this, CPU is not aggregate of all processors on the system"))
+reportbycpu.default = 1
+reportbycpu:depends( "enable", 1 )
+
+-- collectd_cpu.reportbystate (ReportByState)
+reportbystate = s:option( Flag, "ReportByState",
+ translate("Report by state"),
+ translate("When set to true, reports per-state metric (system, user, idle)"))
+reportbystate.default = 1
+reportbystate:depends( "enable", 1 )
+
+-- collectd_cpu.valuespercentage (ValuesPercentage)
+valuespercentage = s:option( Flag, "ValuesPercentage",
+ translate("Report in percent"),
+ translate("When set to true, we request percentage values"))
+valuespercentage.default = 0
+valuespercentage:depends({ enable = 1, ReportByCpu = 1, ReportByState = 1 })
+
return m
diff --git a/applications/luci-app-statistics/luasrc/statistics/plugins/cpu.lua b/applications/luci-app-statistics/luasrc/statistics/plugins/cpu.lua
index 004a450ee..bae325990 100644
--- a/applications/luci-app-statistics/luasrc/statistics/plugins/cpu.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/plugins/cpu.lua
@@ -1,7 +1,7 @@
return {
legend = {
{ },
- { },
+ { "ValuesPercentage" , "ReportByCpu", "ReportByState" },
{ }
},
label = _("Processor"),
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua
index 226c84ee9..3f8910722 100644
--- a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua
@@ -3,33 +3,167 @@
module("luci.statistics.rrdtool.definitions.cpu",package.seeall)
+local uci = require("luci.model.uci").cursor()
+local reportbystate = uci:get("luci_statistics", "collectd_cpu", "ReportByState") or "0"
+
function item()
return luci.i18n.translate("Processor")
end
function rrdargs( graph, plugin, plugin_instance, dtype )
+ local p = {}
+
+ local title = "%H: Processor usage"
+ if #plugin_instance > 0 then
+ title = "%H: Processor usage on core #%pi"
+ end
+
+ if reportbystate == "1" then
+ local cpu = {
+ title = title,
+ y_min = "0",
+ alt_autoscale_max = true,
+ vlabel = "Jiffies",
+ number_format = "%5.1lf",
+ data = {
+ instances = {
+ cpu = {
+ "idle",
+ "interrupt",
+ "nice",
+ "softirq",
+ "steal",
+ "system",
+ "user",
+ "wait"
+ }
+ },
+ options = {
+ cpu_idle = {
+ color = "ffffff",
+ title = "Idle"
+ },
+ cpu_interrupt = {
+ color = "a000a0",
+ title = "Interrupt"
+ },
+ cpu_nice = {
+ color = "00e000",
+ title = "Nice"
+ },
+ cpu_softirq = {
+ color = "ff00ff",
+ title = "Softirq"
+ },
+ cpu_steal = {
+ color = "000000",
+ title = "Steal"
+ },
+ cpu_system = {
+ color = "ff0000",
+ title = "System"
+ },
+ cpu_user = {
+ color = "0000ff",
+ title = "User"
+ },
+ cpu_wait = {
+ color = "ffb000",
+ title = "Wait"
+ }
+ }
+ }
+ }
- return {
- title = "%H: Processor usage on core #%pi",
- y_min = "0",
- alt_autoscale_max = true,
- vlabel = "Percent",
- number_format = "%5.1lf%%",
- data = {
- instances = {
- cpu = { "user", "nice", "system", "softirq", "interrupt" }
- },
-
- options = {
- cpu_idle = { color = "ffffff", title = "Idle" },
- cpu_nice = { color = "00e000", title = "Nice" },
- cpu_user = { color = "0000ff", title = "User" },
- cpu_wait = { color = "ffb000", title = "Wait" },
- cpu_system = { color = "ff0000", title = "System" },
- cpu_softirq = { color = "ff00ff", title = "Softirq" },
- cpu_interrupt = { color = "a000a0", title = "Interrupt" },
- cpu_steal = { color = "000000", title = "Steal" }
+ local percent = {
+ title = title,
+ y_min = "0",
+ alt_autoscale_max = true,
+ vlabel = "Percent",
+ number_format = "%5.1lf%%",
+ data = {
+ instances = {
+ percent = {
+ "idle",
+ "interrupt",
+ "nice",
+ "softirq",
+ "steal",
+ "system",
+ "user",
+ "wait"
+ }
+ },
+ options = {
+ percent_idle = {
+ color = "ffffff",
+ title = "Idle"
+ },
+ percent_interrupt = {
+ color = "a000a0",
+ title = "Interrupt"
+ },
+ percent_nice = {
+ color = "00e000",
+ title = "Nice"
+ },
+ percent_softirq = {
+ color = "ff00ff",
+ title = "Softirq"
+ },
+ percent_steal = {
+ color = "000000",
+ title = "Steal"
+ },
+ percent_system = {
+ color = "ff0000",
+ title = "System"
+ },
+ percent_user = {
+ color = "0000ff",
+ title = "User"
+ },
+ percent_wait = {
+ color = "ffb000",
+ title = "Wait"
+ }
+ }
}
}
- }
+
+ local types = graph.tree:data_types( plugin, plugin_instance )
+
+ for _, t in ipairs(types) do
+ if t == "cpu" then
+ p[#p+1] = cpu
+ end
+
+ if t == "percent" then
+ p[#p+1] = percent
+ end
+ end
+ else
+ p = {
+ title = title,
+ y_min = "0",
+ alt_autoscale_max = true,
+ vlabel = "Percent",
+ number_format = "%5.1lf%%",
+ data = {
+ instances = {
+ percent = {
+ "active",
+ }
+ },
+ options = {
+ percent_active = {
+ color = "00e000",
+ title = "Active"
+ }
+ }
+ }
+ }
+ end
+
+ return p
end