pp-statistics: add support for cUrl 2209/head
authorChizhong Jin <pjincz@gmail.com>
Sat, 13 Oct 2018 18:34:49 +0000 (02:34 +0800)
committerChizhong Jin <pjincz@gmail.com>
Sat, 13 Oct 2018 18:34:49 +0000 (02:34 +0800)
Add collectd-mod-curl plugin support. Which can do some complex track,
such as grab stock, but by now, only response time are supported.

Signed-off-by: Chizhong Jin <pjincz@gmail.com>
applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/curl.lua [new file with mode: 0644]
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/curl.lua [new file with mode: 0644]
applications/luci-app-statistics/root/etc/config/luci_statistics
applications/luci-app-statistics/root/usr/bin/stat-genconfig

index ec26f02d0db9e46bfe882cb37e2ed8d7292fff63..b722341fcad5a4c342ea5af36feac10f49c55aba 100644 (file)
@@ -29,6 +29,7 @@ function index()
                cpu                     = _("Processor"),
                cpufreq         = _("CPU Frequency"),
                csv                     = _("CSV Output"),
+               curl            = _("cUrl"),
                df                      = _("Disk Space Usage"),
                disk            = _("Disk Usage"),
                dns                     = _("DNS"),
@@ -63,7 +64,7 @@ function index()
                general = { "apcups", "contextswitch", "cpu", "cpufreq", "df",
                        "disk", "email", "entropy", "exec", "irq", "load", "memory",
                        "nut", "processes", "sensors", "thermal", "uptime" },
-               network = { "conntrack", "dns", "interface", "iptables",
+               network = { "conntrack", "curl", "dns", "interface", "iptables",
                        "netlink", "olsrd", "openvpn", "ping",
                        "splash_leases", "tcpconns", "iwinfo" }
        }
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/curl.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/curl.lua
new file mode 100644 (file)
index 0000000..606e1cb
--- /dev/null
@@ -0,0 +1,24 @@
+-- Copyright 2018 Chizhong Jin <pjincz@gmail.com>
+-- Licensed to the public under the BSD 3-clause license
+
+m = Map("luci_statistics",
+               translate("cUrl Plugin Configuration"))
+
+s = m:section(NamedSection, "collectd_curl")
+s_enable = s:option(Flag, "enable", translate("Enable this plugin"))
+s_enable.default = 0
+
+page = m:section(TypedSection, "collectd_curl_page")
+page.addremove = true
+page.anonymous = true
+page.template = "cbi/tblsection"
+page.sortable = true
+
+page_enable = page:option(Flag, "enable", translate("Enable"))
+page_enable.default = 1
+
+page_name = page:option(Value, "name", translate("Name"))
+
+page_addr = page:option(Value, "url", translate("URL"))
+
+return m
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/curl.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/curl.lua
new file mode 100644 (file)
index 0000000..89a65a6
--- /dev/null
@@ -0,0 +1,22 @@
+-- Copyright 2018 Chizhong Jin <pjincz@gmail.com>
+-- Licensed to the public under the BSD 3-clause license
+
+module("luci.statistics.rrdtool.definitions.curl", package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+       return {
+               title = "%H: cUrl Response Time for #%pi",
+               y_min = "0",
+               alt_autoscale_max = true,
+               vlabel = "Response Time",
+               number_format = "%5.1lf%Ss",
+               data = {
+                       types = { "response_time" },
+                       options = {
+                               response_time = {
+                                       title = ""
+                               }
+                       }
+               }
+       }
+end
index 8cc918e3db8409a638dfcd99528e98a347c7a26c..1e841fec8aa9bb4dff35e628ef04a5f1fa6c77e3 100644 (file)
@@ -66,6 +66,9 @@ config statistics 'collectd_cpu'
 config statistics 'collectd_cpufreq'
        option enable '0'
 
+config statistics 'collectd_curl'
+       option enable '0'
+
 config statistics 'collectd_df'
        option enable '0'
        option Devices '/dev/mtdblock/4'
index 2bf63c1fe668081e9f5c6e6ea8530cb3d45b8a26..7d1349b249939ce2cebde7c0363c6821ad6edc48 100755 (executable)
@@ -117,6 +117,21 @@ function config_exec( c )
        return str
 end
 
+function config_curl( c )
+       local str = ""
+
+       for s in pairs(sections) do
+               if sections[s][".type"] == "collectd_curl_page" then
+                       str = str .. "\t<Page \"" .. sections[s].name .. "\">\n" ..
+                                                "\t\tURL \"" .. sections[s].url .. "\"\n" ..
+                                                "\t\tMeasureResponseTime true\n" ..
+                                                "\t</Page>\n"
+               end
+       end
+
+       return str
+end
+
 function config_iptables( c )
        local str = ""
 
@@ -297,6 +312,8 @@ plugins = {
                { }
        },
 
+       curl = config_curl,
+
        df      = {
                { },
                { "IgnoreSelected" },