diff options
Diffstat (limited to 'applications/luci-app-statistics/luasrc')
9 files changed, 235 insertions, 26 deletions
diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua index 36c5554d35..ec26f02d0d 100644 --- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua +++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua @@ -23,7 +23,9 @@ function index() s_general = _("General plugins"), s_network = _("Network plugins"), + apcups = _("APC UPS"), conntrack = _("Conntrack"), + contextswitch = _("Context Switches"), cpu = _("Processor"), cpufreq = _("CPU Frequency"), csv = _("CSV Output"), @@ -58,8 +60,8 @@ function index() -- our collectd menu local collectd_menu = { output = { "csv", "network", "rrdtool", "unixsock" }, - general = { "cpu", "cpufreq", "df", "disk", "email", - "entropy", "exec", "irq", "load", "memory", + general = { "apcups", "contextswitch", "cpu", "cpufreq", "df", + "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "sensors", "thermal", "uptime" }, network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "openvpn", "ping", @@ -87,7 +89,7 @@ function index() _entry( { "admin", "statistics", "collectd", section, plugin }, cbi("luci_statistics/" .. plugin ), - labels[plugin], j * 10 + labels[plugin] or plugin, j * 10 ) end diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua new file mode 100644 index 0000000000..49e28c7cfd --- /dev/null +++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua @@ -0,0 +1,28 @@ +-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org> +-- Licensed to the public under the Apache License 2.0. + +m = Map("luci_statistics", + translate("APCUPS Plugin Configuration"), + translate( + "The APCUPS plugin collects statistics about the APC UPS." + )) + +-- collectd_apcups config section +s = m:section( NamedSection, "collectd_apcups", "luci_statistics" ) + +-- collectd_apcups.enable +enable = s:option( Flag, "enable", translate("Enable this plugin") ) +enable.default = 0 + +-- collectd_apcups.host (Host) +host = s:option( Value, "Host", translate("Monitor host"), translate ("Add multiple hosts separated by space.")) +host.default = "localhost" +host:depends( "enable", 1 ) + +-- collectd_apcups.port (Port) +port = s:option( Value, "Port", translate("Port for apcupsd communication") ) +port.isinteger = true +port.default = 3551 +port:depends( "enable", 1 ) + +return m diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua new file mode 100644 index 0000000000..7ae6b24ba1 --- /dev/null +++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua @@ -0,0 +1,14 @@ +-- Licensed to the public under the Apache License 2.0. + +m = Map("luci_statistics", + translate("CPU Context Switches Plugin Configuration"), + translate("This plugin collects statistics about the processor context switches.")) + +-- collectd_contextswitch config section +s = m:section( NamedSection, "collectd_contextswitch", "luci_statistics" ) + +-- collectd_contextswitch.enable +enable = s:option( Flag, "enable", translate("Enable this plugin") ) +enable.default = 0 + +return m diff --git a/applications/luci-app-statistics/luasrc/statistics/datatree.lua b/applications/luci-app-statistics/luasrc/statistics/datatree.lua index 806b054cb6..5176a19a22 100644 --- a/applications/luci-app-statistics/luasrc/statistics/datatree.lua +++ b/applications/luci-app-statistics/luasrc/statistics/datatree.lua @@ -13,9 +13,17 @@ local sections = uci:get_all("luci_statistics") Instance = util.class() function Instance.__init__( self, host ) - self._host = host or sections.collectd.Hostname or sys.hostname() - self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd" - self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd" + self._host = host or sys.hostname() + self._libdir = "/usr/lib/collectd" + self._rrddir = "/tmp/rrd" + + if sections and sections.collectd then + self._host = host or sections.collectd.Hostname or sys.hostname() + self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd" + end + if sections and sections.collectd_rrdtool then + self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd" + end self._libdir = self._libdir:gsub("/$","") self._rrddir = self._rrddir:gsub("/$","") diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua index 4e00e7f1fc..e29a2e17d9 100644 --- a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua @@ -278,7 +278,7 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index ) -- create line1 statement _tif( _args, "LINE%d:%s_%s#%s:%s", - source.noarea and 2 or 1, + source.width or (source.noarea and 2 or 1), source.sname, var, line_color, legend ) end diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua new file mode 100644 index 0000000000..2a8aceec08 --- /dev/null +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua @@ -0,0 +1,117 @@ +-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org> +-- Licensed to the public under the Apache License 2.0. + +module("luci.statistics.rrdtool.definitions.apcups",package.seeall) + +function rrdargs( graph, plugin, plugin_instance, dtype ) + + local voltagesdc = { + title = "%H: Voltages on APC UPS - Battery", + vlabel = "Volts DC", + alt_autoscale = true, + number_format = "%5.1lfV", + data = { + instances = { + voltage = { "battery" } + }, + + options = { + voltage = { title = "Battery voltage", noarea=true } + } + } + } + + local voltages = { + title = "%H: Voltages on APC UPS - AC", + vlabel = "Volts AC", + alt_autoscale = true, + number_format = "%5.1lfV", + data = { + instances = { + voltage = { "input", "output" } + }, + + options = { + voltage_output = { color = "00e000", title = "Output voltage", noarea=true, overlay=true }, + voltage_input = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true } + } + } + } + + local percentload = { + title = "%H: Load on APC UPS ", + vlabel = "Percent", + y_min = "0", + y_max = "100", + number_format = "%5.1lf%%", + data = { + sources = { + percent_load = { "value" } + }, + instances = { + percent = "load" + }, + options = { + percent_load = { color = "00ff00", title = "Load level" } + } + } + } + + local charge_percent = { + title = "%H: Battery charge on APC UPS ", + vlabel = "Percent", + y_min = "0", + y_max = "100", + number_format = "%5.1lf%%", + data = { + types = { "charge" }, + options = { + charge = { color = "00ff0b", title = "Charge level" } + } + } + } + + local temperature = { + title = "%H: Battery temperature on APC UPS ", + vlabel = "\176C", + number_format = "%5.1lf\176C", + data = { + types = { "temperature" }, + options = { + temperature = { color = "ffb000", title = "Battery temperature" } } + } + } + + local timeleft = { + title = "%H: Time left on APC UPS ", + vlabel = "Minutes", + number_format = "%.1lfm", + data = { + sources = { + timeleft = { "value" } + }, + options = { + timeleft = { color = "0000ff", title = "Time left" } + } + } + } + + local frequency = { + title = "%H: Incoming line frequency on APC UPS ", + vlabel = "Hz", + number_format = "%5.0lfhz", + data = { + sources = { + frequency_input = { "value" } + }, + instances = { + frequency = "frequency" + }, + options = { + frequency_frequency = { color = "000fff", title = "Line frequency" } + } + } + } + + return { voltages, voltagesdc, percentload, charge_percent, temperature, timeleft, frequency } +end diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua new file mode 100644 index 0000000000..6826e12adb --- /dev/null +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua @@ -0,0 +1,23 @@ +-- Licensed to the public under the Apache License 2.0. + +module("luci.statistics.rrdtool.definitions.contextswitch",package.seeall) + +function rrdargs( graph, plugin, plugin_instance, dtype ) + + return { + title = "%H: Context switches", + alt_autoscale = true, + vlabel = "Switches/s", + number_format = "%5.0lf", + data = { + types = { "contextswitch" }, + sources = { + contextswitch = { "value" } + }, + options = { + contextswitch = { color = "0000ff", title = "Context switches", noarea=true, overlay=true } + } + } + } +end + diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua index d48441abd2..62d0545973 100644 --- a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua @@ -5,28 +5,30 @@ module("luci.statistics.rrdtool.definitions.processes", package.seeall) function rrdargs( graph, plugin, plugin_instance, dtype ) + if plugin_instance == "" then return { - { title = "%H: Processes", vlabel = "Processes/s", data = { instances = { ps_state = { - "sleeping", "running", "paging", "blocked", "stopped", "zombies" + "sleeping", "running", "paging", + "blocked", "stopped", "zombies" } }, options = { - ps_state_sleeping = { color = "0000ff" }, - ps_state_running = { color = "008000" }, - ps_state_paging = { color = "ffff00" }, - ps_state_blocked = { color = "ff5000" }, - ps_state_stopped = { color = "555555" }, - ps_state_zombies = { color = "ff0000" } + ps_state_sleeping = { color = "0000ff", title = "Sleeping" }, + ps_state_running = { color = "008000", title = "Running" }, + ps_state_paging = { color = "ffff00", title = "Paging" }, + ps_state_blocked = { color = "ff5000", title = "Blocked" }, + ps_state_stopped = { color = "555555", title = "Stopped" }, + ps_state_zombies = { color = "ff0000", title = "Zombies" } } } - }, - + } + else + return { { title = "%H: CPU time used by %pi", vlabel = "Jiffies", @@ -38,11 +40,13 @@ function rrdargs( graph, plugin, plugin_instance, dtype ) options = { ps_cputime__user = { color = "0000ff", + title = "User", overlay = true }, ps_cputime__syst = { color = "ff0000", + title = "System", overlay = true } } @@ -59,15 +63,15 @@ function rrdargs( graph, plugin, plugin_instance, dtype ) }, options = { - ps_count__threads = { color = "00ff00" }, - ps_count__processes = { color = "0000bb" } + ps_count__threads = { color = "00ff00", title = "Threads" }, + ps_count__processes = { color = "0000bb", title = "Processes" } } } }, { title = "%H: Page faults in %pi", - vlabel = "Pagefaults", + vlabel = "Page faults", detail = true, data = { sources = { @@ -75,14 +79,14 @@ function rrdargs( graph, plugin, plugin_instance, dtype ) }, options = { - ps_pagefaults__minflt = { color = "ff0000" }, - ps_pagefaults__majflt = { color = "ff5500" } + ps_pagefaults__minflt = { color = "0000ff", title = "Minor" }, + ps_pagefaults__majflt = { color = "ff0000", title = "Major" } } } }, { - title = "%H: Virtual memory size of %pi", + title = "%H: Resident segment size (RSS) of %pi", vlabel = "Bytes", detail = true, number_format = "%5.1lf%sB", @@ -90,9 +94,24 @@ function rrdargs( graph, plugin, plugin_instance, dtype ) types = { "ps_rss" }, options = { - ps_rss = { color = "0000ff" } + ps_rss = { color = "0000ff", title = "Resident segment" } + } + } + }, + + { + title = "%H: Virtual memory size (VSZ) of %pi", + vlabel = "Bytes", + detail = true, + number_format = "%5.1lf%sB", + data = { + types = { "ps_vm" }, + + options = { + ps_vm = { color = "0000ff", title = "Virtual memory" } } } } } + end end diff --git a/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm b/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm index ebc78badb0..85a20d993a 100644 --- a/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm +++ b/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm @@ -29,9 +29,7 @@ <div style="text-align: center"> <% for i, img in ipairs(images) do %> - <% if is_index then %><a href="<%=pcdata(images[img])%>"><% end %> <img src="<%=REQUEST_URI%>?img=<%=img%>&host=<%=current_host%>" /> - <% if is_index then %></a><% end %> <br /> <% end %> </div> |