summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-statistics/luasrc/statistics
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-05-27 12:23:39 +0000
committerSteven Barth <steven@midlink.org>2008-05-27 12:23:39 +0000
commitd35a620e9f5665a94967f4bd02c93581a1dd7e00 (patch)
treecbe7a9b9fe71e40d850c649361c87608d56ea48b /applications/luci-statistics/luasrc/statistics
parent5df565faba5eb0c26a7ce0e2d6e9092bf71cb1e8 (diff)
commit 4f6198094cf4134179d1f9c9fa8f79759a27c87e
Author: Felix Fietkau <nbd@openwrt.org> Date: Tue May 27 13:56:12 2008 +0200 rename src/ to luasrc/
Diffstat (limited to 'applications/luci-statistics/luasrc/statistics')
-rw-r--r--applications/luci-statistics/luasrc/statistics/datatree.lua134
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool.lua264
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/colors.lua59
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/definitions.lua3177
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/definitions/cpu/cpu.lua31
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/definitions/iptables/ipt_packets.lua26
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua163
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/definitions/ping/ping.lua23
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/definitions/processes/ps_state.lua31
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/definitions/tcpconns/tcp_connections.lua27
-rw-r--r--applications/luci-statistics/luasrc/statistics/rrdtool/definitions/wireless.lua25
11 files changed, 3960 insertions, 0 deletions
diff --git a/applications/luci-statistics/luasrc/statistics/datatree.lua b/applications/luci-statistics/luasrc/statistics/datatree.lua
new file mode 100644
index 0000000000..957b230a96
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/datatree.lua
@@ -0,0 +1,134 @@
+module("luci.statistics.datatree", package.seeall)
+
+local util = require("luci.util")
+local sys = require("luci.sys")
+local fs = require("luci.fs")
+local uci = require("luci.model.uci").Session()
+local sections, names = uci:sections( "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"
+
+ self._libdir = self._libdir:gsub("/$","")
+ self._rrddir = self._rrddir:gsub("/$","")
+ self._plugins = { }
+
+ self:_scan()
+end
+
+function Instance._mkpath( self, plugin, pinstance )
+ local dir = self._rrddir .. "/" .. self._host
+
+ if type(plugin) == "string" and plugin:len() > 0 then
+ dir = dir .. "/" .. plugin
+
+ if type(pinstance) == "string" and pinstance:len() > 0 then
+ dir = dir .. "-" .. pinstance
+ end
+ end
+
+ return dir
+end
+
+function Instance._notzero( self, table )
+ for k in pairs(table) do
+ return true
+ end
+
+ return false
+end
+
+function Instance._scan( self )
+ for i, plugin in ipairs( fs.dir( self._libdir ) ) do
+ if plugin:match("%w+.so") then
+ self._plugins[ plugin:gsub(".so", "") ] = { }
+ end
+ end
+
+ for plugin, instances in pairs( self._plugins ) do
+ for i, dir in ipairs( fs.dir( self:_mkpath() ) ) do
+ if dir:find( plugin .. "%-" ) or dir == plugin then
+ local instance = ""
+
+ if dir ~= plugin then
+ instance = dir:gsub( plugin .. "%-", "", 1 )
+ end
+
+ instances[instance] = { }
+ end
+ end
+
+ for instance, data_instances in pairs( instances ) do
+ for i, file in ipairs( fs.dir( self:_mkpath( plugin, instance ) ) ) do
+ if file:find("%.rrd") then
+ file = file:gsub("%.rrd","")
+
+ local data_type
+ local data_instance
+
+ if file:find("%-") then
+ data_type = file:gsub( "%-.+","" )
+ data_instance = file:gsub( "[^%-]-%-", "", 1 )
+ else
+ data_type = file
+ data_instance = ""
+ end
+
+ if not data_instances[data_type] then
+ data_instances[data_type] = { data_instance }
+ else
+ table.insert( data_instances[data_type], data_instance )
+ end
+ end
+ end
+ end
+ end
+end
+
+
+function Instance.plugins( self )
+ local rv = { }
+
+ for plugin, val in pairs( self._plugins ) do
+ if self:_notzero( val ) then
+ table.insert( rv, plugin )
+ end
+ end
+
+ return rv
+end
+
+function Instance.plugin_instances( self, plugin )
+ local rv = { }
+
+ for instance, val in pairs( self._plugins[plugin] ) do
+ table.insert( rv, instance )
+ end
+
+ return rv
+end
+
+function Instance.data_types( self, plugin, instance )
+ local rv = { }
+
+ for type, val in pairs( self._plugins[plugin][instance] ) do
+ table.insert( rv, type )
+ end
+
+ return rv
+end
+
+function Instance.data_instances( self, plugin, instance, type )
+ local rv = { }
+
+ for i, instance in ipairs( self._plugins[plugin][instance][type] ) do
+ table.insert( rv, instance )
+ end
+
+ return rv
+end
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool.lua b/applications/luci-statistics/luasrc/statistics/rrdtool.lua
new file mode 100644
index 0000000000..b399866a85
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool.lua
@@ -0,0 +1,264 @@
+module("luci.statistics.rrdtool", package.seeall)
+
+require("luci.statistics.datatree")
+require("luci.statistics.rrdtool.colors")
+require("luci.statistics.rrdtool.definitions")
+require("luci.util")
+require("luci.bits")
+require("luci.fs")
+
+
+Graph = luci.util.class()
+
+function Graph.__init__( self, timespan, opts )
+
+ opts = opts or { }
+ opts.width = opts.width or "400"
+
+ self.colors = luci.statistics.rrdtool.colors.Instance()
+ self.defs = luci.statistics.rrdtool.definitions.Instance()
+ self.tree = luci.statistics.datatree.Instance()
+
+ -- rrdtool defalt args
+ self.args = {
+ "-a", "PNG",
+ "-s", "NOW-" .. ( timespan or 900 ),
+ "-w", opts.width
+ }
+end
+
+function Graph.mktitle( self, host, plugin, plugin_instance, dtype, dtype_instance )
+ local t = host .. "/" .. plugin
+ if type(plugin_instance) == "string" and plugin_instance:len() > 0 then
+ t = t .. "-" .. plugin_instance
+ end
+ t = t .. "/" .. dtype
+ if type(dtype_instance) == "string" and dtype_instance:len() > 0 then
+ t = t .. "-" .. dtype_instance
+ end
+ return t
+end
+
+function Graph.mkrrdpath( self, ... )
+ return string.format( "/tmp/%s.rrd", self:mktitle( ... ) )
+end
+
+function Graph.mkpngpath( self, ... )
+ return string.format( "/tmp/rrdimg/%s.png", self:mktitle( ... ) )
+end
+
+function Graph._push( self, elem )
+
+ if type(elem) == "string" then
+ table.insert( self.args, elem )
+ else
+ for i, item in ipairs(elem) do
+ table.insert( self.args, item )
+ end
+ end
+
+ return( self.args )
+end
+
+function Graph._clearargs( self )
+ for i = #self.args, 7, -1 do
+ table.remove( self.args, i )
+ end
+end
+
+function Graph._forcelol( self, list )
+ if type(list[1]) ~= "table" then
+ return( { list } )
+ end
+ return( list )
+end
+
+function Graph._rrdtool( self, png, rrd )
+
+ -- prepare directory
+ local dir = png:gsub("/[^/]+$","")
+ luci.fs.mkdir( dir, true )
+
+ -- construct commandline
+ local cmdline = "rrdtool graph " .. png
+
+ for i, opt in ipairs(self.args) do
+
+ opt = opt .. "" -- force string
+
+ if rrd then
+ opt = opt:gsub( "{file}", rrd )
+ end
+
+ if opt:match("[^%w]") then
+ cmdline = cmdline .. " '" .. opt .. "'"
+ else
+ cmdline = cmdline .. " " .. opt
+ end
+ end
+
+ -- execute rrdtool
+ local rrdtool = io.popen( cmdline )
+ rrdtool:close()
+end
+
+function Graph._generic( self, opts )
+
+ local images = { }
+
+ -- remember images
+ table.insert( images, opts.image )
+
+ -- insert provided addition rrd options
+ self:_push( { "-t", opts.title or "Unknown title" } )
+ self:_push( opts.rrd )
+
+ -- construct an array of safe instance names
+ local inst_names = { }
+ for i, source in ipairs(opts.sources) do
+ inst_names[i] = i .. source.name:gsub("[^A-Za-z0-9%-_]","_")
+ end
+
+ -- create DEF statements for each instance, find longest instance name
+ local longest_name = 0
+ for i, source in ipairs(opts.sources) do
+ if source.name:len() > longest_name then
+ longest_name = source.name:len()
+ end
+
+ local ds = source.ds or "value"
+
+ self:_push( "DEF:" .. inst_names[i] .. "_min=" ..source.rrd .. ":" .. ds .. ":MIN" )
+ self:_push( "DEF:" .. inst_names[i] .. "_avg=" ..source.rrd .. ":" .. ds .. ":AVERAGE" )
+ self:_push( "DEF:" .. inst_names[i] .. "_max=" ..source.rrd .. ":" .. ds .. ":MAX" )
+ self:_push( "CDEF:" .. inst_names[i] .. "_nnl=" .. inst_names[i] .. "_avg,UN,0," .. inst_names[i] .. "_avg,IF" )
+ end
+
+ -- create CDEF statement for last instance name
+ self:_push( "CDEF:" .. inst_names[#inst_names] .. "_stk=" .. inst_names[#inst_names] .. "_nnl" )
+
+ -- create CDEF statements for each instance
+ for i, source in ipairs(inst_names) do
+ if i > 1 then
+ self:_push(
+ "CDEF:" ..
+ inst_names[1 + #inst_names - i] .. "_stk=" ..
+ inst_names[1 + #inst_names - i] .. "_nnl," ..
+ inst_names[2 + #inst_names - i] .. "_stk,+"
+ )
+ end
+ end
+
+ -- create LINE and GPRINT statements for each instance
+ for i, source in ipairs(opts.sources) do
+
+ local legend = string.format(
+ "%-" .. longest_name .. "s",
+ source.name
+ )
+
+ local numfmt = opts.number_format or "%6.1lf"
+
+ local line_color
+ local area_color
+
+ -- find color: try source, then opts.colors; fall back to random color
+ if type(source.color) == "string" then
+ line_color = source.color
+ area_color = self.colors:from_string( line_color )
+ elseif type(opts.colors[source.name:gsub("[^%w]","_")]) == "string" then
+ line_color = opts.colors[source.name:gsub("[^%w]","_")]
+ area_color = self.colors:from_string( line_color )
+ else
+ area_color = self.colors:random()
+ line_color = self.colors:to_string( area_color )
+ end
+
+ -- derive area background color from line color
+ area_color = self.colors:to_string( self.colors:faded( area_color ) )
+
+
+ self:_push( "AREA:" .. inst_names[i] .. "_stk#" .. area_color )
+ self:_push( "LINE1:" .. inst_names[i] .. "_stk#" .. line_color .. ":" .. legend )
+ self:_push( "GPRINT:" .. inst_names[i] .. "_min:MIN:" .. numfmt .. " Min" )
+ self:_push( "GPRINT:" .. inst_names[i] .. "_avg:AVERAGE:" .. numfmt .. " Avg" )
+ self:_push( "GPRINT:" .. inst_names[i] .. "_max:MAX:" .. numfmt .. " Max" )
+ self:_push( "GPRINT:" .. inst_names[i] .. "_avg:LAST:" .. numfmt .. " Last\\l" )
+ end
+
+ return images
+end
+
+function Graph.render( self, host, plugin, plugin_instance )
+
+ dtype_instances = dtype_instances or { "" }
+ local pngs = { }
+
+ -- check for a whole graph handler
+ local plugin_def = "luci.statistics.rrdtool.definitions." .. plugin
+ local stat, def = pcall( require, plugin_def )
+
+ if stat and def and type(def.rrdargs) == "function" then
+ for i, opts in ipairs( self:_forcelol( def.rrdargs( self, host, plugin, plugin_instance, dtype ) ) ) do
+ for i, png in ipairs( self:_generic( opts ) ) do
+ table.insert( pngs, png )
+
+ -- exec
+ self:_rrdtool( png )
+
+ -- clear args
+ self:_clearargs()
+ end
+ end
+ else
+
+ -- no graph handler, iterate over data types
+ for i, dtype in ipairs( self.tree:data_types( plugin, plugin_instance ) ) do
+
+ -- check for data type handler
+ local dtype_def = plugin_def .. "." .. dtype
+ local stat, def = pcall( require, dtype_def )
+
+ if stat and def and type(def.rrdargs) == "function" then
+ for i, opts in ipairs( self:_forcelol( def.rrdargs( self, host, plugin, plugin_instance, dtype ) ) ) do
+ for i, png in ipairs( self:_generic( opts ) ) do
+ table.insert( pngs, png )
+
+ -- exec
+ self:_rrdtool( png )
+
+ -- clear args
+ self:_clearargs()
+ end
+ end
+ else
+
+ -- no data type handler, fall back to builtin definition
+ if type(self.defs.definitions[dtype]) == "table" then
+
+ -- iterate over data type instances
+ for i, inst in ipairs( self.tree:data_instances( plugin, plugin_instance, dtype ) ) do
+
+ local title = self:mktitle( host, plugin, plugin_instance, dtype, inst )
+ local png = self:mkpngpath( host, plugin, plugin_instance, dtype, inst )
+ local rrd = self:mkrrdpath( host, plugin, plugin_instance, dtype, inst )
+
+ self:_push( { "-t", title } )
+ self:_push( self.defs.definitions[dtype] )
+
+ table.insert( pngs, png )
+
+ -- exec
+ self:_rrdtool( png, rrd )
+
+ -- clear args
+ self:_clearargs()
+ end
+ end
+ end
+ end
+ end
+
+ return pngs
+end
+
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/colors.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/colors.lua
new file mode 100644
index 0000000000..cdd6f71057
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/colors.lua
@@ -0,0 +1,59 @@
+module("luci.statistics.rrdtool.colors", package.seeall)
+
+require("luci.util")
+require("luci.bits")
+
+
+Instance = luci.util.class()
+
+function Instance.from_string( self, s )
+ return {
+ luci.bits.Hex2Dec(s:sub(1,2)),
+ luci.bits.Hex2Dec(s:sub(3,4)),
+ luci.bits.Hex2Dec(s:sub(5,6))
+ }
+end
+
+function Instance.to_string( self, c )
+ return string.format(
+ "%02x%02x%02x",
+ math.floor(c[1]),
+ math.floor(c[2]),
+ math.floor(c[3])
+ )
+end
+
+function Instance.random( self )
+ local r = math.random(255)
+ local g = math.random(255)
+ local min = 0
+ local max = 255
+
+ if ( r + g ) < 255 then
+ min = 255 - r - g
+ else
+ max = 511 - r - g
+ end
+
+ local b = min + math.floor( math.random() * ( max - min ) )
+
+ return { r, g, b }
+end
+
+function Instance.faded( self, fg, opts )
+ opts = opts or {}
+ opts.background = opts.background or { 255, 255, 255 }
+ opts.alpha = opts.alpha or 0.25
+
+ if type(opts.background) == "string" then
+ opts.background = _string_to_color(opts.background)
+ end
+
+ local bg = opts.background
+
+ return {
+ ( opts.alpha * fg[1] ) + ( ( 1.0 - opts.alpha ) * bg[1] ),
+ ( opts.alpha * fg[2] ) + ( ( 1.0 - opts.alpha ) * bg[2] ),
+ ( opts.alpha * fg[3] ) + ( ( 1.0 - opts.alpha ) * bg[3] )
+ }
+end
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions.lua
new file mode 100644
index 0000000000..add69e4b64
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions.lua
@@ -0,0 +1,3177 @@
+module("luci.statistics.rrdtool.definitions", package.seeall)
+
+require("luci.util")
+require("luci.fs")
+
+
+Instance = luci.util.class()
+
+function Instance.__init__( self, ... )
+
+ -- used color palette
+ self.palette = {
+ Canvas = "FFFFFF",
+ FullRed = "FF0000",
+ FullGreen = "00E000",
+ FullBlue = "0000FF",
+ FullYellow = "F0A000",
+ FullCyan = "00A0FF",
+ FullMagenta = "A000FF",
+ HalfRed = "F7B7B7",
+ HalfGreen = "B7EFB7",
+ HalfBlue = "B7B7F7",
+ HalfYellow = "F3DFB7",
+ HalfCyan = "B7DFF7",
+ HalfMagenta = "DFB7F7",
+ HalfBlueGreen = "89B3C9"
+ }
+
+ -- plotting arguments for each defined datasource
+ self.definitions = {
+ apache_bytes = {
+ "DEF:min_raw={file}:count:MIN",
+ "DEF:avg_raw={file}:count:AVERAGE",
+ "DEF:max_raw={file}:count:MAX",
+ "CDEF:min=min_raw,8,*",
+ "CDEF:avg=avg_raw,8,*",
+ "CDEF:max=max_raw,8,*",
+ "CDEF:mytime=avg_raw,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:avg_sample=avg_raw,UN,0,avg_raw,IF,sample_len,*",
+ "CDEF:avg_sum=PREV,UN,0,PREV,IF,avg_sample,+",
+ "AREA:avg#" .. self.palette.HalfBlue,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bit/s",
+ "GPRINT:min:MIN:%5.1lf%s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ apache_requests = {
+ "DEF:min={file}:count:MIN",
+ "DEF:avg={file}:count:AVERAGE",
+ "DEF:max={file}:count:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Requests/s",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ apache_scoreboard = {
+ "DEF:min={file}:count:MIN",
+ "DEF:avg={file}:count:AVERAGE",
+ "DEF:max={file}:count:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Processes",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ bitrate = {
+ "-v", "Bits/s",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bits/s",
+ "GPRINT:min:MIN:%5.1lf%s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Average,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ charge = {
+ "-v", "Ah",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Charge",
+ "GPRINT:min:MIN:%5.1lf%sAh Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sAh Avg,",
+ "GPRINT:max:MAX:%5.1lf%sAh Max,",
+ "GPRINT:avg:LAST:%5.1lf%sAh Last\\l"
+ },
+
+ __cpu = {
+ "-v", "CPU load",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Percent",
+ "GPRINT:min:MIN:%6.2lf%% Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf%% Avg,",
+ "GPRINT:max:MAX:%6.2lf%% Max,",
+ "GPRINT:avg:LAST:%6.2lf%% Last\\l"
+ },
+
+ current = {
+ "-v", "Ampere",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Current",
+ "GPRINT:min:MIN:%5.1lf%sA Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sA Avg,",
+ "GPRINT:max:MAX:%5.1lf%sA Max,",
+ "GPRINT:avg:LAST:%5.1lf%sA Last\\l"
+ },
+
+ df = {
+ "-v", "Percent", "-l", "0",
+ "DEF:free_avg={file}:free:AVERAGE",
+ "DEF:free_min={file}:free:MIN",
+ "DEF:free_max={file}:free:MAX",
+ "DEF:used_avg={file}:used:AVERAGE",
+ "DEF:used_min={file}:used:MIN",
+ "DEF:used_max={file}:used:MAX",
+ "CDEF:total=free_avg,used_avg,+",
+ "CDEF:free_pct=100,free_avg,*,total,/",
+ "CDEF:used_pct=100,used_avg,*,total,/",
+ "CDEF:free_acc=free_pct,used_pct,+",
+ "CDEF:used_acc=used_pct",
+ "AREA:free_acc#" .. self.palette.HalfGreen,
+ "AREA:used_acc#" .. self.palette.HalfRed,
+ "LINE1:free_acc#" .. self.palette.FullGreen .. ":Free",
+ "GPRINT:free_min:MIN:%5.1lf%sB Min,",
+ "GPRINT:free_avg:AVERAGE:%5.1lf%sB Avg,",
+ "GPRINT:free_max:MAX:%5.1lf%sB Max,",
+ "GPRINT:free_avg:LAST:%5.1lf%sB Last\\l",
+ "LINE1:used_acc#" .. self.palette.FullRed .. ":Used",
+ "GPRINT:used_min:MIN:%5.1lf%sB Min,",
+ "GPRINT:used_avg:AVERAGE:%5.1lf%sB Avg,",
+ "GPRINT:used_max:MAX:%5.1lf%sB Max,",
+ "GPRINT:used_avg:LAST:%5.1lf%sB Last\\l"
+ },
+
+ disk = {
+ "DEF:rtime_avg={file}:rtime:AVERAGE",
+ "DEF:rtime_min={file}:rtime:MIN",
+ "DEF:rtime_max={file}:rtime:MAX",
+ "DEF:wtime_avg={file}:wtime:AVERAGE",
+ "DEF:wtime_min={file}:wtime:MIN",
+ "DEF:wtime_max={file}:wtime:MAX",
+ "CDEF:rtime_avg_ms=rtime_avg,1000,/",
+ "CDEF:rtime_min_ms=rtime_min,1000,/",
+ "CDEF:rtime_max_ms=rtime_max,1000,/",
+ "CDEF:wtime_avg_ms=wtime_avg,1000,/",
+ "CDEF:wtime_min_ms=wtime_min,1000,/",
+ "CDEF:wtime_max_ms=wtime_max,1000,/",
+ "CDEF:total_avg_ms=rtime_avg_ms,wtime_avg_ms,+",
+ "CDEF:total_min_ms=rtime_min_ms,wtime_min_ms,+",
+ "CDEF:total_max_ms=rtime_max_ms,wtime_max_ms,+",
+ "AREA:total_max_ms#" .. self.palette.HalfRed,
+ "AREA:total_min_ms#" .. self.palette.Canvas,
+ "LINE1:wtime_avg_ms#" .. self.palette.FullGreen .. ":Write",
+ "GPRINT:wtime_min_ms:MIN:%5.1lf%s Min,",
+ "GPRINT:wtime_avg_ms:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:wtime_max_ms:MAX:%5.1lf%s Max,",
+ "GPRINT:wtime_avg_ms:LAST:%5.1lf%s Last\n",
+ "LINE1:rtime_avg_ms#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:rtime_min_ms:MIN:%5.1lf%s Min,",
+ "GPRINT:rtime_avg_ms:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rtime_max_ms:MAX:%5.1lf%s Max,",
+ "GPRINT:rtime_avg_ms:LAST:%5.1lf%s Last\n",
+ "LINE1:total_avg_ms#" .. self.palette.FullRed .. ":Total",
+ "GPRINT:total_min_ms:MIN:%5.1lf%s Min,",
+ "GPRINT:total_avg_ms:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:total_max_ms:MAX:%5.1lf%s Max,",
+ "GPRINT:total_avg_ms:LAST:%5.1lf%s Last\\l"
+ },
+
+ disk_octets = {
+ "-v", "Bytes/s",
+ "DEF:out_min={file}:write:MIN",
+ "DEF:out_avg={file}:write:AVERAGE",
+ "DEF:out_max={file}:write:MAX",
+ "DEF:inc_min={file}:read:MIN",
+ "DEF:inc_avg={file}:read:AVERAGE",
+ "DEF:inc_max={file}:read:MAX",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "CDEF:mytime=out_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:out_avg_sample=out_avg,UN,0,out_avg,IF,sample_len,*",
+ "CDEF:out_avg_sum=PREV,UN,0,PREV,IF,out_avg_sample,+",
+ "CDEF:inc_avg_sample=inc_avg,UN,0,inc_avg,IF,sample_len,*",
+ "CDEF:inc_avg_sum=PREV,UN,0,PREV,IF,inc_avg_sample,+",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:out_max:MAX:%5.1lf%s Max,",
+ "GPRINT:out_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:out_avg_sum:LAST:(ca. %5.1lf%sB Total)",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:inc_max:MAX:%5.1lf%s Max,",
+ "GPRINT:inc_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:inc_avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ disk_merged = {
+ "-v", "Merged Ops/s",
+ "DEF:out_min={file}:write:MIN",
+ "DEF:out_avg={file}:write:AVERAGE",
+ "DEF:out_max={file}:write:MAX",
+ "DEF:inc_min={file}:read:MIN",
+ "DEF:inc_avg={file}:read:AVERAGE",
+ "DEF:inc_max={file}:read:MAX",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:out_max:MAX:%6.2lf Max,",
+ "GPRINT:out_avg:LAST:%6.2lf Last\\l",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:inc_max:MAX:%6.2lf Max,",
+ "GPRINT:inc_avg:LAST:%6.2lf Last\\l"
+ },
+
+ disk_ops = {
+ "-v", "Ops/s",
+ "DEF:out_min={file}:write:MIN",
+ "DEF:out_avg={file}:write:AVERAGE",
+ "DEF:out_max={file}:write:MAX",
+ "DEF:inc_min={file}:read:MIN",
+ "DEF:inc_avg={file}:read:AVERAGE",
+ "DEF:inc_max={file}:read:MAX",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:out_max:MAX:%6.2lf Max,",
+ "GPRINT:out_avg:LAST:%6.2lf Last\\l",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:inc_max:MAX:%6.2lf Max,",
+ "GPRINT:inc_avg:LAST:%6.2lf Last\\l"
+ },
+
+ disk_time = {
+ "-v", "Seconds/s",
+ "DEF:out_min_raw={file}:write:MIN",
+ "DEF:out_avg_raw={file}:write:AVERAGE",
+ "DEF:out_max_raw={file}:write:MAX",
+ "DEF:inc_min_raw={file}:read:MIN",
+ "DEF:inc_avg_raw={file}:read:AVERAGE",
+ "DEF:inc_max_raw={file}:read:MAX",
+ "CDEF:out_min=out_min_raw,1000,/",
+ "CDEF:out_avg=out_avg_raw,1000,/",
+ "CDEF:out_max=out_max_raw,1000,/",
+ "CDEF:inc_min=inc_min_raw,1000,/",
+ "CDEF:inc_avg=inc_avg_raw,1000,/",
+ "CDEF:inc_max=inc_max_raw,1000,/",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_avg:AVERAGE:%5.1lf%ss Avg,",
+ "GPRINT:out_max:MAX:%5.1lf%ss Max,",
+ "GPRINT:out_avg:LAST:%5.1lf%ss Last\\l",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_avg:AVERAGE:%5.1lf%ss Avg,",
+ "GPRINT:inc_max:MAX:%5.1lf%ss Max,",
+ "GPRINT:inc_avg:LAST:%5.1lf%ss Last\\l"
+ },
+
+ dns_octets = {
+ "DEF:rsp_min_raw={file}:responses:MIN",
+ "DEF:rsp_avg_raw={file}:responses:AVERAGE",
+ "DEF:rsp_max_raw={file}:responses:MAX",
+ "DEF:qry_min_raw={file}:queries:MIN",
+ "DEF:qry_avg_raw={file}:queries:AVERAGE",
+ "DEF:qry_max_raw={file}:queries:MAX",
+ "CDEF:rsp_min=rsp_min_raw,8,*",
+ "CDEF:rsp_avg=rsp_avg_raw,8,*",
+ "CDEF:rsp_max=rsp_max_raw,8,*",
+ "CDEF:qry_min=qry_min_raw,8,*",
+ "CDEF:qry_avg=qry_avg_raw,8,*",
+ "CDEF:qry_max=qry_max_raw,8,*",
+ "CDEF:overlap=rsp_avg,qry_avg,GT,qry_avg,rsp_avg,IF",
+ "CDEF:mytime=rsp_avg_raw,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:rsp_avg_sample=rsp_avg_raw,UN,0,rsp_avg_raw,IF,sample_len,*",
+ "CDEF:rsp_avg_sum=PREV,UN,0,PREV,IF,rsp_avg_sample,+",
+ "CDEF:qry_avg_sample=qry_avg_raw,UN,0,qry_avg_raw,IF,sample_len,*",
+ "CDEF:qry_avg_sum=PREV,UN,0,PREV,IF,qry_avg_sample,+",
+ "AREA:rsp_avg#" .. self.palette.HalfGreen,
+ "AREA:qry_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:rsp_avg#" .. self.palette.FullGreen .. ":Responses",
+ "GPRINT:rsp_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rsp_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rsp_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:rsp_avg_sum:LAST:(ca. %5.1lf%sB Total)",
+ "LINE1:qry_avg#" .. self.palette.FullBlue .. ":Queries ",
+ #"GPRINT:qry_min:MIN:%5.1lf %s Min,",
+ "GPRINT:qry_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:qry_max:MAX:%5.1lf%s Max,",
+ "GPRINT:qry_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:qry_avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ dns_opcode = {
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Queries/s",
+ "GPRINT:min:MIN:%9.3lf Min,",
+ "GPRINT:avg:AVERAGE:%9.3lf Average,",
+ "GPRINT:max:MAX:%9.3lf Max,",
+ "GPRINT:avg:LAST:%9.3lf Last\\l"
+ },
+
+ email_count = {
+ "-v", "Mails",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfMagenta,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullMagenta .. ":Count ",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ email_size = {
+ "-v", "Bytes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfMagenta,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullMagenta .. ":Count ",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ spam_score = {
+ "-v", "Score",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Score ",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ spam_check = {
+ "DEF:avg={file}:hits:AVERAGE",
+ "DEF:min={file}:hits:MIN",
+ "DEF:max={file}:hits:MAX",
+ "AREA:max#" .. self.palette.HalfMagenta,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullMagenta .. ":Count ",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ entropy = {
+ "-v", "Bits",
+ "DEF:avg={file}:entropy:AVERAGE",
+ "DEF:min={file}:entropy:MIN",
+ "DEF:max={file}:entropy:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bits",
+ "GPRINT:min:MIN:%4.0lfbit Min,",
+ "GPRINT:avg:AVERAGE:%4.0lfbit Avg,",
+ "GPRINT:max:MAX:%4.0lfbit Max,",
+ "GPRINT:avg:LAST:%4.0lfbit Last\\l"
+ },
+
+ fanspeed = {
+ "-v", "RPM",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfMagenta,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullMagenta .. ":RPM",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ frequency = {
+ "-v", "Hertz",
+ "DEF:avg={file}:frequency:AVERAGE",
+ "DEF:min={file}:frequency:MIN",
+ "DEF:max={file}:frequency:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Frequency [Hz]",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ frequency_offset = {
+ "DEF:ppm_avg={file}:ppm:AVERAGE",
+ "DEF:ppm_min={file}:ppm:MIN",
+ "DEF:ppm_max={file}:ppm:MAX",
+ "AREA:ppm_max#" .. self.palette.HalfBlue,
+ "AREA:ppm_min#" .. self.palette.Canvas,
+ "LINE1:ppm_avg#" .. self.palette.FullBlue .. ":{inst}",
+ "GPRINT:ppm_min:MIN:%5.2lf Min,",
+ "GPRINT:ppm_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:ppm_max:MAX:%5.2lf Max,",
+ "GPRINT:ppm_avg:LAST:%5.2lf Last\\l"
+ },
+
+ gauge = {
+ "-v", "Exec value",
+ "DEF:temp_avg={file}:value:AVERAGE",
+ "DEF:temp_min={file}:value:MIN",
+ "DEF:temp_max={file}:value:MAX",
+ "AREA:temp_max#" .. self.palette.HalfBlue,
+ "AREA:temp_min#" .. self.palette.Canvas,
+ "LINE1:temp_avg#" .. self.palette.FullBlue .. ":Exec value",
+ "GPRINT:temp_min:MIN:%6.2lf Min,",
+ "GPRINT:temp_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:temp_max:MAX:%6.2lf Max,",
+ "GPRINT:temp_avg:LAST:%6.2lf Last\\l"
+ },
+
+ hddtemp = {
+ "DEF:temp_avg={file}:value:AVERAGE",
+ "DEF:temp_min={file}:value:MIN",
+ "DEF:temp_max={file}:value:MAX",
+ "AREA:temp_max#" .. self.palette.HalfRed,
+ "AREA:temp_min#" .. self.palette.Canvas,
+ "LINE1:temp_avg#" .. self.palette.FullRed .. ":Temperature",
+ "GPRINT:temp_min:MIN:%4.1lf Min,",
+ "GPRINT:temp_avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:temp_max:MAX:%4.1lf Max,",
+ "GPRINT:temp_avg:LAST:%4.1lf Last\\l"
+ },
+
+ humidity = {
+ "-v", "Percent",
+ "DEF:temp_avg={file}:value:AVERAGE",
+ "DEF:temp_min={file}:value:MIN",
+ "DEF:temp_max={file}:value:MAX",
+ "AREA:temp_max#" .. self.palette.HalfGreen,
+ "AREA:temp_min#" .. self.palette.Canvas,
+ "LINE1:temp_avg#" .. self.palette.FullGreen .. ":Temperature",
+ "GPRINT:temp_min:MIN:%4.1lf%% Min,",
+ "GPRINT:temp_avg:AVERAGE:%4.1lf%% Avg,",
+ "GPRINT:temp_max:MAX:%4.1lf%% Max,",
+ "GPRINT:temp_avg:LAST:%4.1lf%% Last\\l"
+ },
+
+ if_errors = {
+ "-v", "Errors/s",
+ "DEF:tx_min={file}:tx:MIN",
+ "DEF:tx_avg={file}:tx:AVERAGE",
+ "DEF:tx_max={file}:tx:MAX",
+ "DEF:rx_min={file}:rx:MIN",
+ "DEF:rx_avg={file}:rx:AVERAGE",
+ "DEF:rx_max={file}:rx:MAX",
+ "CDEF:overlap=tx_avg,rx_avg,GT,rx_avg,tx_avg,IF",
+ "CDEF:mytime=tx_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:tx_avg_sample=tx_avg,UN,0,tx_avg,IF,sample_len,*",
+ "CDEF:tx_avg_sum=PREV,UN,0,PREV,IF,tx_avg_sample,+",
+ "CDEF:rx_avg_sample=rx_avg,UN,0,rx_avg,IF,sample_len,*",
+ "CDEF:rx_avg_sum=PREV,UN,0,PREV,IF,rx_avg_sample,+",
+ "AREA:tx_avg#" .. self.palette.HalfGreen,
+ "AREA:rx_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:tx_avg#" .. self.palette.FullGreen .. ":TX",
+ "GPRINT:tx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:tx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:tx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:tx_avg_sum:LAST:(ca. %4.0lf%s Total)",
+ "LINE1:rx_avg#" .. self.palette.FullBlue .. ":RX",
+ #"GPRINT:rx_min:MIN:%5.1lf %s Min,",
+ "GPRINT:rx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:rx_avg_sum:LAST:(ca. %4.0lf%s Total)"
+ },
+
+ if_collisions = {
+ "-v", "Collisions/s",
+ "DEF:min_raw={file}:value:MIN",
+ "DEF:avg_raw={file}:value:AVERAGE",
+ "DEF:max_raw={file}:value:MAX",
+ "CDEF:min=min_raw,8,*",
+ "CDEF:avg=avg_raw,8,*",
+ "CDEF:max=max_raw,8,*",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Collisions/s",
+ "GPRINT:min:MIN:%5.1lf %s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ if_dropped = {
+ "-v", "Packets/s",
+ "DEF:tx_min={file}:tx:MIN",
+ "DEF:tx_avg={file}:tx:AVERAGE",
+ "DEF:tx_max={file}:tx:MAX",
+ "DEF:rx_min={file}:rx:MIN",
+ "DEF:rx_avg={file}:rx:AVERAGE",
+ "DEF:rx_max={file}:rx:MAX",
+ "CDEF:overlap=tx_avg,rx_avg,GT,rx_avg,tx_avg,IF",
+ "CDEF:mytime=tx_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:tx_avg_sample=tx_avg,UN,0,tx_avg,IF,sample_len,*",
+ "CDEF:tx_avg_sum=PREV,UN,0,PREV,IF,tx_avg_sample,+",
+ "CDEF:rx_avg_sample=rx_avg,UN,0,rx_avg,IF,sample_len,*",
+ "CDEF:rx_avg_sum=PREV,UN,0,PREV,IF,rx_avg_sample,+",
+ "AREA:tx_avg#" .. self.palette.HalfGreen,
+ "AREA:rx_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:tx_avg#" .. self.palette.FullGreen .. ":TX",
+ "GPRINT:tx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:tx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:tx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:tx_avg_sum:LAST:(ca. %4.0lf%s Total)",
+ "LINE1:rx_avg#" .. self.palette.FullBlue .. ":RX",
+ #"GPRINT:rx_min:MIN:%5.1lf %s Min,",
+ "GPRINT:rx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:rx_avg_sum:LAST:(ca. %4.0lf%s Total)"
+ },
+
+ if_packets = {
+ "-v", "Packets/s",
+ "DEF:tx_min={file}:tx:MIN",
+ "DEF:tx_avg={file}:tx:AVERAGE",
+ "DEF:tx_max={file}:tx:MAX",
+ "DEF:rx_min={file}:rx:MIN",
+ "DEF:rx_avg={file}:rx:AVERAGE",
+ "DEF:rx_max={file}:rx:MAX",
+ "CDEF:overlap=tx_avg,rx_avg,GT,rx_avg,tx_avg,IF",
+ "CDEF:mytime=tx_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:tx_avg_sample=tx_avg,UN,0,tx_avg,IF,sample_len,*",
+ "CDEF:tx_avg_sum=PREV,UN,0,PREV,IF,tx_avg_sample,+",
+ "CDEF:rx_avg_sample=rx_avg,UN,0,rx_avg,IF,sample_len,*",
+ "CDEF:rx_avg_sum=PREV,UN,0,PREV,IF,rx_avg_sample,+",
+ "AREA:tx_avg#" .. self.palette.HalfGreen,
+ "AREA:rx_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:tx_avg#" .. self.palette.FullGreen .. ":TX",
+ "GPRINT:tx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:tx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:tx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:tx_avg_sum:LAST:(ca. %4.0lf%s Total)",
+ "LINE1:rx_avg#" .. self.palette.FullBlue .. ":RX",
+ #"GPRINT:rx_min:MIN:%5.1lf %s Min,",
+ "GPRINT:rx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:rx_avg_sum:LAST:(ca. %4.0lf%s Total)"
+ },
+
+ if_rx_errors = {
+ "-v", "Errors/s",
+ "DEF:min={file}:value:MIN",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:max={file}:value:MAX",
+ "CDEF:mytime=avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:avg_sample=avg,UN,0,avg,IF,sample_len,*",
+ "CDEF:avg_sum=PREV,UN,0,PREV,IF,avg_sample,+",
+ "AREA:avg#" .. self.palette.HalfBlue,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Errors/s",
+ "GPRINT:avg:AVERAGE:%3.1lf%s Avg,",
+ "GPRINT:max:MAX:%3.1lf%s Max,",
+ "GPRINT:avg:LAST:%3.1lf%s Last\\l",
+ "GPRINT:avg_sum:LAST:(ca. %2.0lf%s Total)"
+ },
+
+ ipt_bytes = {
+ "-v", "Bits/s",
+ "DEF:min_raw={file}:value:MIN",
+ "DEF:avg_raw={file}:value:AVERAGE",
+ "DEF:max_raw={file}:value:MAX",
+ "CDEF:min=min_raw,8,*",
+ "CDEF:avg=avg_raw,8,*",
+ "CDEF:max=max_raw,8,*",
+ "CDEF:mytime=avg_raw,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:avg_sample=avg_raw,UN,0,avg_raw,IF,sample_len,*",
+ "CDEF:avg_sum=PREV,UN,0,PREV,IF,avg_sample,+",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bits/s",
+ #"GPRINT:min:MIN:%5.1lf %s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ ipt_packets = {
+ "-v", "Packets/s",
+ "DEF:min_raw={file}:value:MIN",
+ "DEF:avg_raw={file}:value:AVERAGE",
+ "DEF:max_raw={file}:value:MAX",
+ "CDEF:min=min_raw,8,*",
+ "CDEF:avg=avg_raw,8,*",
+ "CDEF:max=max_raw,8,*",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Packets/s",
+ "GPRINT:min:MIN:%5.1lf %s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ irq = {
+ "-v", "Issues/s",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Issues/s",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ load = {
+ "-v", "System load",
+ "DEF:s_avg={file}:shortterm:AVERAGE",
+ "DEF:s_min={file}:shortterm:MIN",
+ "DEF:s_max={file}:shortterm:MAX",
+ "DEF:m_avg={file}:midterm:AVERAGE",
+ "DEF:m_min={file}:midterm:MIN",
+ "DEF:m_max={file}:midterm:MAX",
+ "DEF:l_avg={file}:longterm:AVERAGE",
+ "DEF:l_min={file}:longterm:MIN",
+ "DEF:l_max={file}:longterm:MAX",
+ "AREA:s_max#" .. self.palette.HalfGreen,
+ "AREA:s_min#" .. self.palette.Canvas,
+ "LINE1:s_avg#" .. self.palette.FullGreen .. ": 1m average",
+ "GPRINT:s_min:MIN:%4.2lf Min,",
+ "GPRINT:s_avg:AVERAGE:%4.2lf Avg,",
+ "GPRINT:s_max:MAX:%4.2lf Max,",
+ "GPRINT:s_avg:LAST:%4.2lf Last\n",
+ "LINE1:m_avg#" .. self.palette.FullBlue .. ": 5m average",
+ "GPRINT:m_min:MIN:%4.2lf Min,",
+ "GPRINT:m_avg:AVERAGE:%4.2lf Avg,",
+ "GPRINT:m_max:MAX:%4.2lf Max,",
+ "GPRINT:m_avg:LAST:%4.2lf Last\n",
+ "LINE1:l_avg#" .. self.palette.FullRed .. ":15m average",
+ "GPRINT:l_min:MIN:%4.2lf Min,",
+ "GPRINT:l_avg:AVERAGE:%4.2lf Avg,",
+ "GPRINT:l_max:MAX:%4.2lf Max,",
+ "GPRINT:l_avg:LAST:%4.2lf Last\\l"
+ },
+
+ load_percent = {
+ "DEF:avg={file}:percent:AVERAGE",
+ "DEF:min={file}:percent:MIN",
+ "DEF:max={file}:percent:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Load",
+ "GPRINT:min:MIN:%5.1lf%s%% Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s%% Avg,",
+ "GPRINT:max:MAX:%5.1lf%s%% Max,",
+ "GPRINT:avg:LAST:%5.1lf%s%% Last\\l"
+ },
+
+ mails = {
+ "DEF:rawgood={file}:good:AVERAGE",
+ "DEF:rawspam={file}:spam:AVERAGE",
+ "CDEF:good=rawgood,UN,0,rawgood,IF",
+ "CDEF:spam=rawspam,UN,0,rawspam,IF",
+ "CDEF:negspam=spam,-1,*",
+ "AREA:good#" .. self.palette.HalfGreen,
+ "LINE1:good#" .. self.palette.FullGreen .. ":Good mails",
+ "GPRINT:good:AVERAGE:%4.1lf Avg,",
+ "GPRINT:good:MAX:%4.1lf Max,",
+ "GPRINT:good:LAST:%4.1lf Last\n",
+ "AREA:negspam#" .. self.palette.HalfRed,
+ "LINE1:negspam#" .. self.palette.FullRed .. ":Spam mails",
+ "GPRINT:spam:AVERAGE:%4.1lf Avg,",
+ "GPRINT:spam:MAX:%4.1lf Max,",
+ "GPRINT:spam:LAST:%4.1lf Last\\l",
+ "HRULE:0#000000"
+ },
+
+ memory = {
+ "-b", "1024", "-v", "Bytes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Memory",
+ "GPRINT:min:MIN:%5.1lf%sbyte Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sbyte Avg,",
+ "GPRINT:max:MAX:%5.1lf%sbyte Max,",
+ "GPRINT:avg:LAST:%5.1lf%sbyte Last\\l"
+ },
+
+ old_memory = {
+ "DEF:used_avg={file}:used:AVERAGE",
+ "DEF:free_avg={file}:free:AVERAGE",
+ "DEF:buffers_avg={file}:buffers:AVERAGE",
+ "DEF:cached_avg={file}:cached:AVERAGE",
+ "DEF:used_min={file}:used:MIN",
+ "DEF:free_min={file}:free:MIN",
+ "DEF:buffers_min={file}:buffers:MIN",
+ "DEF:cached_min={file}:cached:MIN",
+ "DEF:used_max={file}:used:MAX",
+ "DEF:free_max={file}:free:MAX",
+ "DEF:buffers_max={file}:buffers:MAX",
+ "DEF:cached_max={file}:cached:MAX",
+ "CDEF:cached_avg_nn=cached_avg,UN,0,cached_avg,IF",
+ "CDEF:buffers_avg_nn=buffers_avg,UN,0,buffers_avg,IF",
+ "CDEF:free_cached_buffers_used=free_avg,cached_avg_nn,+,buffers_avg_nn,+,used_avg,+",
+ "CDEF:cached_buffers_used=cached_avg,buffers_avg_nn,+,used_avg,+",
+ "CDEF:buffers_used=buffers_avg,used_avg,+",
+ "AREA:free_cached_buffers_used#" .. self.palette.HalfGreen,
+ "AREA:cached_buffers_used#" .. self.palette.HalfBlue,
+ "AREA:buffers_used#" .. self.palette.HalfYellow,
+ "AREA:used_avg#" .. self.palette.HalfRed,
+ "LINE1:free_cached_buffers_used#" .. self.palette.FullGreen .. ":Free ",
+ "GPRINT:free_min:MIN:%5.1lf%s Min,",
+ "GPRINT:free_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:free_max:MAX:%5.1lf%s Max,",
+ "GPRINT:free_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:cached_buffers_used#" .. self.palette.FullBlue .. ":Page cache ",
+ "GPRINT:cached_min:MIN:%5.1lf%s Min,",
+ "GPRINT:cached_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:cached_max:MAX:%5.1lf%s Max,",
+ "GPRINT:cached_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:buffers_used#" .. self.palette.FullYellow .. ":Buffer cache",
+ "GPRINT:buffers_min:MIN:%5.1lf%s Min,",
+ "GPRINT:buffers_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:buffers_max:MAX:%5.1lf%s Max,",
+ "GPRINT:buffers_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:used_avg#" .. self.palette.FullRed .. ":Used ",
+ "GPRINT:used_min:MIN:%5.1lf%s Min,",
+ "GPRINT:used_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:used_max:MAX:%5.1lf%s Max,",
+ "GPRINT:used_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ mysql_commands = {
+ "-v", "Issues/s",
+ "DEF:val_avg={file}:value:AVERAGE",
+ "DEF:val_min={file}:value:MIN",
+ "DEF:val_max={file}:value:MAX",
+ "AREA:val_max#" .. self.palette.HalfBlue,
+ "AREA:val_min#" .. self.palette.Canvas,
+ "LINE1:val_avg#" .. self.palette.FullBlue .. ":Issues/s",
+ "GPRINT:val_min:MIN:%5.2lf Min,",
+ "GPRINT:val_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:val_max:MAX:%5.2lf Max,",
+ "GPRINT:val_avg:LAST:%5.2lf Last\\l"
+ },
+
+ mysql_handler = {
+ "-v", "Issues/s",
+ "DEF:val_avg={file}:value:AVERAGE",
+ "DEF:val_min={file}:value:MIN",
+ "DEF:val_max={file}:value:MAX",
+ "AREA:val_max#" .. self.palette.HalfBlue,
+ "AREA:val_min#" .. self.palette.Canvas,
+ "LINE1:val_avg#" .. self.palette.FullBlue .. ":Issues/s",
+ "GPRINT:val_min:MIN:%5.2lf Min,",
+ "GPRINT:val_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:val_max:MAX:%5.2lf Max,",
+ "GPRINT:val_avg:LAST:%5.2lf Last\\l"
+ },
+
+ mysql_octets = {
+ "-v", "Bits/s",
+ "DEF:out_min={file}:tx:MIN",
+ "DEF:out_avg={file}:tx:AVERAGE",
+ "DEF:out_max={file}:tx:MAX",
+ "DEF:inc_min={file}:rx:MIN",
+ "DEF:inc_avg={file}:rx:AVERAGE",
+ "DEF:inc_max={file}:rx:MAX",
+ "CDEF:mytime=out_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:out_avg_sample=out_avg,UN,0,out_avg,IF,sample_len,*",
+ "CDEF:out_avg_sum=PREV,UN,0,PREV,IF,out_avg_sample,+",
+ "CDEF:inc_avg_sample=inc_avg,UN,0,inc_avg,IF,sample_len,*",
+ "CDEF:inc_avg_sum=PREV,UN,0,PREV,IF,inc_avg_sample,+",
+ "CDEF:out_bit_min=out_min,8,*",
+ "CDEF:out_bit_avg=out_avg,8,*",
+ "CDEF:out_bit_max=out_max,8,*",
+ "CDEF:inc_bit_min=inc_min,8,*",
+ "CDEF:inc_bit_avg=inc_avg,8,*",
+ "CDEF:inc_bit_max=inc_max,8,*",
+ "CDEF:overlap=out_bit_avg,inc_bit_avg,GT,inc_bit_avg,out_bit_avg,IF",
+ "AREA:out_bit_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_bit_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_bit_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_bit_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:out_bit_max:MAX:%5.1lf%s Max,",
+ "GPRINT:out_bit_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:out_avg_sum:LAST:(ca. %5.1lf%sB Total)",
+ "LINE1:inc_bit_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_bit_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:inc_bit_max:MAX:%5.1lf%s Max,",
+ "GPRINT:inc_bit_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:inc_avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ mysql_qcache = {
+ "-v", "Queries/s",
+ "DEF:hits_min={file}:hits:MIN",
+ "DEF:hits_avg={file}:hits:AVERAGE",
+ "DEF:hits_max={file}:hits:MAX",
+ "DEF:inserts_min={file}:inserts:MIN",
+ "DEF:inserts_avg={file}:inserts:AVERAGE",
+ "DEF:inserts_max={file}:inserts:MAX",
+ "DEF:not_cached_min={file}:not_cached:MIN",
+ "DEF:not_cached_avg={file}:not_cached:AVERAGE",
+ "DEF:not_cached_max={file}:not_cached:MAX",
+ "DEF:lowmem_prunes_min={file}:lowmem_prunes:MIN",
+ "DEF:lowmem_prunes_avg={file}:lowmem_prunes:AVERAGE",
+ "DEF:lowmem_prunes_max={file}:lowmem_prunes:MAX",
+ "DEF:queries_min={file}:queries_in_cache:MIN",
+ "DEF:queries_avg={file}:queries_in_cache:AVERAGE",
+ "DEF:queries_max={file}:queries_in_cache:MAX",
+ "CDEF:unknown=queries_avg,UNKN,+",
+ "CDEF:not_cached_agg=hits_avg,inserts_avg,+,not_cached_avg,+",
+ "CDEF:inserts_agg=hits_avg,inserts_avg,+",
+ "CDEF:hits_agg=hits_avg",
+ "AREA:not_cached_agg#" .. self.palette.HalfYellow,
+ "AREA:inserts_agg#" .. self.palette.HalfBlue,
+ "AREA:hits_agg#" .. self.palette.HalfGreen,
+ "LINE1:not_cached_agg#" .. self.palette.FullYellow .. ":Not Cached ",
+ "GPRINT:not_cached_min:MIN:%5.2lf Min,",
+ "GPRINT:not_cached_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:not_cached_max:MAX:%5.2lf Max,",
+ "GPRINT:not_cached_avg:LAST:%5.2lf Last\\l",
+ "LINE1:inserts_agg#" .. self.palette.FullBlue .. ":Inserts ",
+ "GPRINT:inserts_min:MIN:%5.2lf Min,",
+ "GPRINT:inserts_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:inserts_max:MAX:%5.2lf Max,",
+ "GPRINT:inserts_avg:LAST:%5.2lf Last\\l",
+ "LINE1:hits_agg#" .. self.palette.FullGreen .. ":Hits ",
+ "GPRINT:hits_min:MIN:%5.2lf Min,",
+ "GPRINT:hits_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:hits_max:MAX:%5.2lf Max,",
+ "GPRINT:hits_avg:LAST:%5.2lf Last\\l",
+ "LINE1:lowmem_prunes_avg#" .. self.palette.FullRed .. ":Lowmem Prunes ",
+ "GPRINT:lowmem_prunes_min:MIN:%5.2lf Min,",
+ "GPRINT:lowmem_prunes_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:lowmem_prunes_max:MAX:%5.2lf Max,",
+ "GPRINT:lowmem_prunes_avg:LAST:%5.2lf Last\\l",
+ "LINE1:unknown#" .. self.palette.Canvas .. ":Queries in cache",
+ "GPRINT:queries_min:MIN:%5.0lf Min,",
+ "GPRINT:queries_avg:AVERAGE:%5.0lf Avg,",
+ "GPRINT:queries_max:MAX:%5.0lf Max,",
+ "GPRINT:queries_avg:LAST:%5.0lf Last\\l"
+ },
+
+ mysql_threads = {
+ "-v", "Threads",
+ "DEF:running_min={file}:running:MIN",
+ "DEF:running_avg={file}:running:AVERAGE",
+ "DEF:running_max={file}:running:MAX",
+ "DEF:connected_min={file}:connected:MIN",
+ "DEF:connected_avg={file}:connected:AVERAGE",
+ "DEF:connected_max={file}:connected:MAX",
+ "DEF:cached_min={file}:cached:MIN",
+ "DEF:cached_avg={file}:cached:AVERAGE",
+ "DEF:cached_max={file}:cached:MAX",
+ "DEF:created_min={file}:created:MIN",
+ "DEF:created_avg={file}:created:AVERAGE",
+ "DEF:created_max={file}:created:MAX",
+ "CDEF:unknown=created_avg,UNKN,+",
+ "CDEF:cached_agg=connected_avg,cached_avg,+",
+ "AREA:cached_agg#" .. self.palette.HalfGreen,
+ "AREA:connected_avg#" .. self.palette.HalfBlue,
+ "AREA:running_avg#" .. self.palette.HalfRed,
+ "LINE1:cached_agg#" .. self.palette.FullGreen .. ":Cached ",
+ "GPRINT:cached_min:MIN:%5.1lf Min,",
+ "GPRINT:cached_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:cached_max:MAX:%5.1lf Max,",
+ "GPRINT:cached_avg:LAST:%5.1lf Last\\l",
+ "LINE1:connected_avg#" .. self.palette.FullBlue .. ":Connected",
+ "GPRINT:connected_min:MIN:%5.1lf Min,",
+ "GPRINT:connected_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:connected_max:MAX:%5.1lf Max,",
+ "GPRINT:connected_avg:LAST:%5.1lf Last\\l",
+ "LINE1:running_avg#" .. self.palette.FullRed .. ":Running ",
+ "GPRINT:running_min:MIN:%5.1lf Min,",
+ "GPRINT:running_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:running_max:MAX:%5.1lf Max,",
+ "GPRINT:running_avg:LAST:%5.1lf Last\\l",
+ "LINE1:unknown#" .. self.palette.Canvas .. ":Created ",
+ "GPRINT:created_min:MIN:%5.0lf Min,",
+ "GPRINT:created_avg:AVERAGE:%5.0lf Avg,",
+ "GPRINT:created_max:MAX:%5.0lf Max,",
+ "GPRINT:created_avg:LAST:%5.0lf Last\\l"
+ },
+
+ nfs_procedure = {
+ "-v", "Issues/s",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Issues/s",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ nfs3_procedures = {
+ "DEF:null_avg={file}:null:AVERAGE",
+ "DEF:getattr_avg={file}:getattr:AVERAGE",
+ "DEF:setattr_avg={file}:setattr:AVERAGE",
+ "DEF:lookup_avg={file}:lookup:AVERAGE",
+ "DEF:access_avg={file}:access:AVERAGE",
+ "DEF:readlink_avg={file}:readlink:AVERAGE",
+ "DEF:read_avg={file}:read:AVERAGE",
+ "DEF:write_avg={file}:write:AVERAGE",
+ "DEF:create_avg={file}:create:AVERAGE",
+ "DEF:mkdir_avg={file}:mkdir:AVERAGE",
+ "DEF:symlink_avg={file}:symlink:AVERAGE",
+ "DEF:mknod_avg={file}:mknod:AVERAGE",
+ "DEF:remove_avg={file}:remove:AVERAGE",
+ "DEF:rmdir_avg={file}:rmdir:AVERAGE",
+ "DEF:rename_avg={file}:rename:AVERAGE",
+ "DEF:link_avg={file}:link:AVERAGE",
+ "DEF:readdir_avg={file}:readdir:AVERAGE",
+ "DEF:readdirplus_avg={file}:readdirplus:AVERAGE",
+ "DEF:fsstat_avg={file}:fsstat:AVERAGE",
+ "DEF:fsinfo_avg={file}:fsinfo:AVERAGE",
+ "DEF:pathconf_avg={file}:pathconf:AVERAGE",
+ "DEF:commit_avg={file}:commit:AVERAGE",
+ "DEF:null_max={file}:null:MAX",
+ "DEF:getattr_max={file}:getattr:MAX",
+ "DEF:setattr_max={file}:setattr:MAX",
+ "DEF:lookup_max={file}:lookup:MAX",
+ "DEF:access_max={file}:access:MAX",
+ "DEF:readlink_max={file}:readlink:MAX",
+ "DEF:read_max={file}:read:MAX",
+ "DEF:write_max={file}:write:MAX",
+ "DEF:create_max={file}:create:MAX",
+ "DEF:mkdir_max={file}:mkdir:MAX",
+ "DEF:symlink_max={file}:symlink:MAX",
+ "DEF:mknod_max={file}:mknod:MAX",
+ "DEF:remove_max={file}:remove:MAX",
+ "DEF:rmdir_max={file}:rmdir:MAX",
+ "DEF:rename_max={file}:rename:MAX",
+ "DEF:link_max={file}:link:MAX",
+ "DEF:readdir_max={file}:readdir:MAX",
+ "DEF:readdirplus_max={file}:readdirplus:MAX",
+ "DEF:fsstat_max={file}:fsstat:MAX",
+ "DEF:fsinfo_max={file}:fsinfo:MAX",
+ "DEF:pathconf_max={file}:pathconf:MAX",
+ "DEF:commit_max={file}:commit:MAX",
+ "CDEF:other_avg=null_avg,readlink_avg,create_avg,mkdir_avg,symlink_avg,mknod_avg,remove_avg,rmdir_avg,rename_avg,link_avg,readdir_avg,readdirplus_avg,fsstat_avg,fsinfo_avg,pathconf_avg,+,+,+,+,+,+,+,+,+,+,+,+,+,+",
+ "CDEF:other_max=null_max,readlink_max,create_max,mkdir_max,symlink_max,mknod_max,remove_max,rmdir_max,rename_max,link_max,readdir_max,readdirplus_max,fsstat_max,fsinfo_max,pathconf_max,+,+,+,+,+,+,+,+,+,+,+,+,+,+",
+ "CDEF:stack_read=read_avg",
+ "CDEF:stack_getattr=stack_read,getattr_avg,+",
+ "CDEF:stack_access=stack_getattr,access_avg,+",
+ "CDEF:stack_lookup=stack_access,lookup_avg,+",
+ "CDEF:stack_write=stack_lookup,write_avg,+",
+ "CDEF:stack_commit=stack_write,commit_avg,+",
+ "CDEF:stack_setattr=stack_commit,setattr_avg,+",
+ "CDEF:stack_other=stack_setattr,other_avg,+",
+ "AREA:stack_other#" .. self.palette.HalfRed,
+ "AREA:stack_setattr#" .. self.palette.HalfGreen,
+ "AREA:stack_commit#" .. self.palette.HalfYellow,
+ "AREA:stack_write#" .. self.palette.HalfGreen,
+ "AREA:stack_lookup#" .. self.palette.HalfBlue,
+ "AREA:stack_access#" .. self.palette.HalfMagenta,
+ "AREA:stack_getattr#" .. self.palette.HalfCyan,
+ "AREA:stack_read#" .. self.palette.HalfBlue,
+ "LINE1:stack_other#" .. self.palette.FullRed .. ":Other ",
+ "GPRINT:other_max:MAX:%5.1lf Max,",
+ "GPRINT:other_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:other_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_setattr#" .. self.palette.FullGreen .. ":setattr",
+ "GPRINT:setattr_max:MAX:%5.1lf Max,",
+ "GPRINT:setattr_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:setattr_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_commit#" .. self.palette.FullYellow .. ":commit ",
+ "GPRINT:commit_max:MAX:%5.1lf Max,",
+ "GPRINT:commit_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:commit_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_write#" .. self.palette.FullGreen .. ":write ",
+ "GPRINT:write_max:MAX:%5.1lf Max,",
+ "GPRINT:write_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:write_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_lookup#" .. self.palette.FullBlue .. ":lookup ",
+ "GPRINT:lookup_max:MAX:%5.1lf Max,",
+ "GPRINT:lookup_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:lookup_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_access#" .. self.palette.FullMagenta .. ":access ",
+ "GPRINT:access_max:MAX:%5.1lf Max,",
+ "GPRINT:access_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:access_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_getattr#" .. self.palette.FullCyan .. ":getattr",
+ "GPRINT:getattr_max:MAX:%5.1lf Max,",
+ "GPRINT:getattr_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:getattr_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_read#" .. self.palette.FullBlue .. ":read ",
+ "GPRINT:read_max:MAX:%5.1lf Max,",
+ "GPRINT:read_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:read_avg:LAST:%5.1lf Last\\l"
+ },
+
+ partition = {
+ "DEF:rbyte_avg={file}:rbytes:AVERAGE",
+ "DEF:rbyte_min={file}:rbytes:MIN",
+ "DEF:rbyte_max={file}:rbytes:MAX",
+ "DEF:wbyte_avg={file}:wbytes:AVERAGE",
+ "DEF:wbyte_min={file}:wbytes:MIN",
+ "DEF:wbyte_max={file}:wbytes:MAX",
+ "CDEF:overlap=wbyte_avg,rbyte_avg,GT,rbyte_avg,wbyte_avg,IF",
+ "AREA:wbyte_avg#" .. self.palette.HalfGreen,
+ "AREA:rbyte_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:wbyte_avg#" .. self.palette.FullGreen .. ":Write",
+ "GPRINT:wbyte_min:MIN:%5.1lf%s Min,",
+ "GPRINT:wbyte_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:wbyte_max:MAX:%5.1lf%s Max,",
+ "GPRINT:wbyte_avg:LAST:%5.1lf%s Last\\l",
+ "LINE1:rbyte_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:rbyte_min:MIN:%5.1lf%s Min,",
+ "GPRINT:rbyte_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rbyte_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rbyte_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ percent = {
+ "-v", "Percent",
+ "DEF:avg={file}:percent:AVERAGE",
+ "DEF:min={file}:percent:MIN",
+ "DEF:max={file}:percent:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Percent",
+ "GPRINT:min:MIN:%5.1lf%% Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%% Avg,",
+ "GPRINT:max:MAX:%5.1lf%% Max,",
+ "GPRINT:avg:LAST:%5.1lf%% Last\\l"
+ },
+
+ ping = {
+ "DEF:ping_avg={file}:ping:AVERAGE",
+ "DEF:ping_min={file}:ping:MIN",
+ "DEF:ping_max={file}:ping:MAX",
+ "AREA:ping_max#" .. self.palette.HalfBlue,
+ "AREA:ping_min#" .. self.palette.Canvas,
+ "LINE1:ping_avg#" .. self.palette.FullBlue .. ":Ping",
+ "GPRINT:ping_min:MIN:%4.1lf ms Min,",
+ "GPRINT:ping_avg:AVERAGE:%4.1lf ms Avg,",
+ "GPRINT:ping_max:MAX:%4.1lf ms Max,",
+ "GPRINT:ping_avg:LAST:%4.1lf ms Last\\l"
+ },
+
+ power = {
+ "-v", "Watt",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Watt",
+ "GPRINT:min:MIN:%5.1lf%sW Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sW Avg,",
+ "GPRINT:max:MAX:%5.1lf%sW Max,",
+ "GPRINT:avg:LAST:%5.1lf%sW Last\\l"
+ },
+
+ _processes = {
+ "DEF:running_avg={file}:running:AVERAGE",
+ "DEF:running_min={file}:running:MIN",
+ "DEF:running_max={file}:running:MAX",
+ "DEF:sleeping_avg={file}:sleeping:AVERAGE",
+ "DEF:sleeping_min={file}:sleeping:MIN",
+ "DEF:sleeping_max={file}:sleeping:MAX",
+ "DEF:zombies_avg={file}:zombies:AVERAGE",
+ "DEF:zombies_min={file}:zombies:MIN",
+ "DEF:zombies_max={file}:zombies:MAX",
+ "DEF:stopped_avg={file}:stopped:AVERAGE",
+ "DEF:stopped_min={file}:stopped:MIN",
+ "DEF:stopped_max={file}:stopped:MAX",
+ "DEF:paging_avg={file}:paging:AVERAGE",
+ "DEF:paging_min={file}:paging:MIN",
+ "DEF:paging_max={file}:paging:MAX",
+ "DEF:blocked_avg={file}:blocked:AVERAGE",
+ "DEF:blocked_min={file}:blocked:MIN",
+ "DEF:blocked_max={file}:blocked:MAX",
+ "CDEF:paging_acc=sleeping_avg,running_avg,stopped_avg,zombies_avg,blocked_avg,paging_avg,+,+,+,+,+",
+ "CDEF:blocked_acc=sleeping_avg,running_avg,stopped_avg,zombies_avg,blocked_avg,+,+,+,+",
+ "CDEF:zombies_acc=sleeping_avg,running_avg,stopped_avg,zombies_avg,+,+,+",
+ "CDEF:stopped_acc=sleeping_avg,running_avg,stopped_avg,+,+",
+ "CDEF:running_acc=sleeping_avg,running_avg,+",
+ "CDEF:sleeping_acc=sleeping_avg",
+ "AREA:paging_acc#" .. self.palette.HalfYellow,
+ "AREA:blocked_acc#" .. self.palette.HalfCyan,
+ "AREA:zombies_acc#" .. self.palette.HalfRed,
+ "AREA:stopped_acc#" .. self.palette.HalfMagenta,
+ "AREA:running_acc#" .. self.palette.HalfGreen,
+ "AREA:sleeping_acc#" .. self.palette.HalfBlue,
+ "LINE1:paging_acc#" .. self.palette.FullYellow .. ":Paging ",
+ "GPRINT:paging_min:MIN:%5.1lf Min,",
+ "GPRINT:paging_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:paging_max:MAX:%5.1lf Max,",
+ "GPRINT:paging_avg:LAST:%5.1lf Last\\l",
+ "LINE1:blocked_acc#" .. self.palette.FullCyan .. ":Blocked ",
+ "GPRINT:blocked_min:MIN:%5.1lf Min,",
+ "GPRINT:blocked_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:blocked_max:MAX:%5.1lf Max,",
+ "GPRINT:blocked_avg:LAST:%5.1lf Last\\l",
+ "LINE1:zombies_acc#" .. self.palette.FullRed .. ":Zombies ",
+ "GPRINT:zombies_min:MIN:%5.1lf Min,",
+ "GPRINT:zombies_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:zombies_max:MAX:%5.1lf Max,",
+ "GPRINT:zombies_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stopped_acc#" .. self.palette.FullMagenta .. ":Stopped ",
+ "GPRINT:stopped_min:MIN:%5.1lf Min,",
+ "GPRINT:stopped_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:stopped_max:MAX:%5.1lf Max,",
+ "GPRINT:stopped_avg:LAST:%5.1lf Last\\l",
+ "LINE1:running_acc#" .. self.palette.FullGreen .. ":Running ",
+ "GPRINT:running_min:MIN:%5.1lf Min,",
+ "GPRINT:running_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:running_max:MAX:%5.1lf Max,",
+ "GPRINT:running_avg:LAST:%5.1lf Last\\l",
+ "LINE1:sleeping_acc#" .. self.palette.FullBlue .. ":Sleeping",
+ "GPRINT:sleeping_min:MIN:%5.1lf Min,",
+ "GPRINT:sleeping_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:sleeping_max:MAX:%5.1lf Max,",
+ "GPRINT:sleeping_avg:LAST:%5.1lf Last\\l"
+ },
+
+ ps_count = {
+ "-v", "Processes",
+ "DEF:procs_avg={file}:processes:AVERAGE",
+ "DEF:procs_min={file}:processes:MIN",
+ "DEF:procs_max={file}:processes:MAX",
+ "DEF:thrds_avg={file}:threads:AVERAGE",
+ "DEF:thrds_min={file}:threads:MIN",
+ "DEF:thrds_max={file}:threads:MAX",
+ "AREA:thrds_avg#" .. self.palette.HalfBlue,
+ "AREA:procs_avg#" .. self.palette.HalfRed,
+ "LINE1:thrds_avg#" .. self.palette.FullBlue .. ":Threads ",
+ "GPRINT:thrds_min:MIN:%5.1lf Min,",
+ "GPRINT:thrds_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:thrds_max:MAX:%5.1lf Max,",
+ "GPRINT:thrds_avg:LAST:%5.1lf Last\\l",
+ "LINE1:procs_avg#" .. self.palette.FullRed .. ":Processes",
+ "GPRINT:procs_min:MIN:%5.1lf Min,",
+ "GPRINT:procs_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:procs_max:MAX:%5.1lf Max,",
+ "GPRINT:procs_avg:LAST:%5.1lf Last\\l"
+ },
+
+ ps_cputime = {
+ "-v", "Jiffies",
+ "DEF:user_avg_raw={file}:user:AVERAGE",
+ "DEF:user_min_raw={file}:user:MIN",
+ "DEF:user_max_raw={file}:user:MAX",
+ "DEF:syst_avg_raw={file}:syst:AVERAGE",
+ "DEF:syst_min_raw={file}:syst:MIN",
+ "DEF:syst_max_raw={file}:syst:MAX",
+ "CDEF:user_avg=user_avg_raw,1000000,/",
+ "CDEF:user_min=user_min_raw,1000000,/",
+ "CDEF:user_max=user_max_raw,1000000,/",
+ "CDEF:syst_avg=syst_avg_raw,1000000,/",
+ "CDEF:syst_min=syst_min_raw,1000000,/",
+ "CDEF:syst_max=syst_max_raw,1000000,/",
+ "CDEF:user_syst=syst_avg,UN,0,syst_avg,IF,user_avg,+",
+ "AREA:user_syst#" .. self.palette.HalfBlue,
+ "AREA:syst_avg#" .. self.palette.HalfRed,
+ "LINE1:user_syst#" .. self.palette.FullBlue .. ":User ",
+ "GPRINT:user_min:MIN:%5.1lf%s Min,",
+ "GPRINT:user_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:user_max:MAX:%5.1lf%s Max,",
+ "GPRINT:user_avg:LAST:%5.1lf%s Last\\l",
+ "LINE1:syst_avg#" .. self.palette.FullRed .. ":System",
+ "GPRINT:syst_min:MIN:%5.1lf%s Min,",
+ "GPRINT:syst_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:syst_max:MAX:%5.1lf%s Max,",
+ "GPRINT:syst_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ ps_pagefaults = {
+ "-v", "Pagefaults/s",
+ "DEF:minor_avg={file}:minflt:AVERAGE",
+ "DEF:minor_min={file}:minflt:MIN",
+ "DEF:minor_max={file}:minflt:MAX",
+ "DEF:major_avg={file}:majflt:AVERAGE",
+ "DEF:major_min={file}:majflt:MIN",
+ "DEF:major_max={file}:majflt:MAX",
+ "CDEF:minor_major=major_avg,UN,0,major_avg,IF,minor_avg,+",
+ "AREA:minor_major#" .. self.palette.HalfBlue,
+ "AREA:major_avg#" .. self.palette.HalfRed,
+ "LINE1:minor_major#" .. self.palette.FullBlue .. ":Minor",
+ "GPRINT:minor_min:MIN:%5.1lf%s Min,",
+ "GPRINT:minor_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:minor_max:MAX:%5.1lf%s Max,",
+ "GPRINT:minor_avg:LAST:%5.1lf%s Last\\l",
+ "LINE1:major_avg#" .. self.palette.FullRed .. ":Major",
+ "GPRINT:major_min:MIN:%5.1lf%s Min,",
+ "GPRINT:major_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:major_max:MAX:%5.1lf%s Max,",
+ "GPRINT:major_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ ps_rss = {
+ "-v", "Bytes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:avg#" .. self.palette.HalfBlue,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":RSS",
+ "GPRINT:min:MIN:%5.1lf%s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ _ps_state = {
+ "-v", "Processes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Processes",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ _signal_noise = {
+ "-v", "dBm",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Noise",
+ "GPRINT:min:MIN:%5.1lf%sdBm Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sdBm Avg,",
+ "GPRINT:max:MAX:%5.1lf%sdBm Max,",
+ "GPRINT:avg:LAST:%5.1lf%sdBm Last\\l"
+ },
+
+ _signal_power = {
+ "-v", "dBm",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Power",
+ "GPRINT:min:MIN:%5.1lf%sdBm Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sdBm Avg,",
+ "GPRINT:max:MAX:%5.1lf%sdBm Max,",
+ "GPRINT:avg:LAST:%5.1lf%sdBm Last\\l"
+ },
+
+ _signal_quality = {
+ "-v", "%",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Quality",
+ "GPRINT:min:MIN:%5.1lf%s%% Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s%% Avg,",
+ "GPRINT:max:MAX:%5.1lf%s%% Max,",
+ "GPRINT:avg:LAST:%5.1lf%s%% Last\\l"
+ },
+
+ swap = {
+ "-v", "Bytes", "-b", "1024",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bytes",
+ "GPRINT:min:MIN:%6.2lf%sByte Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf%sByte Avg,",
+ "GPRINT:max:MAX:%6.2lf%sByte Max,",
+ "GPRINT:avg:LAST:%6.2lf%sByte Last\\l"
+ },
+
+ old_swap = {
+ "DEF:used_avg={file}:used:AVERAGE",
+ "DEF:used_min={file}:used:MIN",
+ "DEF:used_max={file}:used:MAX",
+ "DEF:free_avg={file}:free:AVERAGE",
+ "DEF:free_min={file}:free:MIN",
+ "DEF:free_max={file}:free:MAX",
+ "DEF:cach_avg={file}:cached:AVERAGE",
+ "DEF:cach_min={file}:cached:MIN",
+ "DEF:cach_max={file}:cached:MAX",
+ "DEF:resv_avg={file}:resv:AVERAGE",
+ "DEF:resv_min={file}:resv:MIN",
+ "DEF:resv_max={file}:resv:MAX",
+ "CDEF:cach_avg_notnull=cach_avg,UN,0,cach_avg,IF",
+ "CDEF:resv_avg_notnull=resv_avg,UN,0,resv_avg,IF",
+ "CDEF:used_acc=used_avg",
+ "CDEF:resv_acc=used_acc,resv_avg_notnull,+",
+ "CDEF:cach_acc=resv_acc,cach_avg_notnull,+",
+ "CDEF:free_acc=cach_acc,free_avg,+",
+ "AREA:free_acc#" .. self.palette.HalfGreen,
+ "AREA:cach_acc#" .. self.palette.HalfBlue,
+ "AREA:resv_acc#" .. self.palette.HalfYellow,
+ "AREA:used_acc#" .. self.palette.HalfRed,
+ "LINE1:free_acc#" .. self.palette.FullGreen .. ":Free ",
+ "GPRINT:free_min:MIN:%5.1lf%s Min,",
+ "GPRINT:free_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:free_max:MAX:%5.1lf%s Max,",
+ "GPRINT:free_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:cach_acc#" .. self.palette.FullBlue .. ":Cached ",
+ "GPRINT:cach_min:MIN:%5.1lf%s Min,",
+ "GPRINT:cach_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:cach_max:MAX:%5.1lf%s Max,",
+ "GPRINT:cach_avg:LAST:%5.1lf%s Last\\l",
+ "LINE1:resv_acc#" .. self.palette.FullYellow .. ":Reserved",
+ "GPRINT:resv_min:MIN:%5.1lf%s Min,",
+ "GPRINT:resv_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:resv_max:MAX:%5.1lf%s Max,",
+ "GPRINT:resv_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:used_acc#" .. self.palette.FullRed .. ":Used ",
+ "GPRINT:used_min:MIN:%5.1lf%s Min,",
+ "GPRINT:used_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:used_max:MAX:%5.1lf%s Max,",
+ "GPRINT:used_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ tcp_connections = {
+ "-v", "Connections",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Connections",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ temperature = {
+ "-v", "Celsius",
+ "DEF:temp_avg={file}:value:AVERAGE",
+ "DEF:temp_min={file}:value:MIN",
+ "DEF:temp_max={file}:value:MAX",
+ "CDEF:average=temp_avg,0.2,*,PREV,UN,temp_avg,PREV,IF,0.8,*,+",
+ "AREA:temp_max#" .. self.palette.HalfRed,
+ "AREA:temp_min#" .. self.palette.Canvas,
+ "LINE1:temp_avg#" .. self.palette.FullRed .. ":Temperature",
+ "GPRINT:temp_min:MIN:%4.1lf Min,",
+ "GPRINT:temp_avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:temp_max:MAX:%4.1lf Max,",
+ "GPRINT:temp_avg:LAST:%4.1lf Last\\l"
+ },
+
+ timeleft = {
+ "-v", "Minutes",
+ "DEF:avg={file}:timeleft:AVERAGE",
+ "DEF:min={file}:timeleft:MIN",
+ "DEF:max={file}:timeleft:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Time left [min]",
+ "GPRINT:min:MIN:%5.1lf%s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ time_offset = {
+ "DEF:s_avg={file}:seconds:AVERAGE",
+ "DEF:s_min={file}:seconds:MIN",
+ "DEF:s_max={file}:seconds:MAX",
+ "AREA:s_max#" .. self.palette.HalfBlue,
+ "AREA:s_min#" .. self.palette.Canvas,
+ "LINE1:s_avg#" .. self.palette.FullBlue .. ":{inst}",
+ "GPRINT:s_min:MIN:%7.3lf%s Min,",
+ "GPRINT:s_avg:AVERAGE:%7.3lf%s Avg,",
+ "GPRINT:s_max:MAX:%7.3lf%s Max,",
+ "GPRINT:s_avg:LAST:%7.3lf%s Last\\l"
+ },
+
+ if_octets = {
+ "-v", "Bits/s", "-l", "0",
+ "DEF:out_min_raw={file}:tx:MIN",
+ "DEF:out_avg_raw={file}:tx:AVERAGE",
+ "DEF:out_max_raw={file}:tx:MAX",
+ "DEF:inc_min_raw={file}:rx:MIN",
+ "DEF:inc_avg_raw={file}:rx:AVERAGE",
+ "DEF:inc_max_raw={file}:rx:MAX",
+ "CDEF:out_min=out_min_raw,8,*",
+ "CDEF:out_avg=out_avg_raw,8,*",
+ "CDEF:out_max=out_max_raw,8,*",
+ "CDEF:inc_min=inc_min_raw,8,*",
+ "CDEF:inc_avg=inc_avg_raw,8,*",
+ "CDEF:inc_max=inc_max_raw,8,*",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "CDEF:mytime=out_avg_raw,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:out_avg_sample=out_avg_raw,UN,0,out_avg_raw,IF,sample_len,*",
+ "CDEF:out_avg_sum=PREV,UN,0,PREV,IF,out_avg_sample,+",
+ "CDEF:inc_avg_sample=inc_avg_raw,UN,0,inc_avg_raw,IF,sample_len,*",
+ "CDEF:inc_avg_sum=PREV,UN,0,PREV,IF,inc_avg_sample,+",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Outgoing",
+ "GPRINT:out_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:out_max:MAX:%5.1lf%s Max,",
+ "GPRINT:out_avg:LAST:%5.1lf%s Last",
+ "GPRINT:out_avg_sum:LAST:(ca. %5.1lf%sB Total)\\l",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Incoming",
+ --"GPRINT:inc_min:MIN:%5.1lf %s Min,",
+ "GPRINT:inc_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:inc_max:MAX:%5.1lf%s Max,",
+ "GPRINT:inc_avg:LAST:%5.1lf%s Last",
+ "GPRINT:inc_avg_sum:LAST:(ca. %5.1lf%sB Total)\\l"
+ },
+
+ cpufreq = {
+ "DEF:cpufreq_avg={file}:value:AVERAGE",
+ "DEF:cpufreq_min={file}:value:MIN",
+ "DEF:cpufreq_max={file}:value:MAX",
+ "AREA:cpufreq_max#" .. self.palette.HalfBlue,
+ "AREA:cpufreq_min#" .. self.palette.Canvas,
+ "LINE1:cpufreq_avg#" .. self.palette.FullBlue .. ":Frequency",
+ "GPRINT:cpufreq_min:MIN:%5.1lf%s Min,",
+ "GPRINT:cpufreq_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:cpufreq_max:MAX:%5.1lf%s Max,",
+ "GPRINT:cpufreq_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ multimeter = {
+ "DEF:multimeter_avg={file}:value:AVERAGE",
+ "DEF:multimeter_min={file}:value:MIN",
+ "DEF:multimeter_max={file}:value:MAX",
+ "AREA:multimeter_max#" .. self.palette.HalfBlue,
+ "AREA:multimeter_min#" .. self.palette.Canvas,
+ "LINE1:multimeter_avg#" .. self.palette.FullBlue .. ":Multimeter",
+ "GPRINT:multimeter_min:MIN:%4.1lf Min,",
+ "GPRINT:multimeter_avg:AVERAGE:%4.1lf Average,",
+ "GPRINT:multimeter_max:MAX:%4.1lf Max,",
+ "GPRINT:multimeter_avg:LAST:%4.1lf Last\\l"
+ },
+
+ users = {
+ "-v", "Users",
+ "DEF:users_avg={file}:users:AVERAGE",
+ "DEF:users_min={file}:users:MIN",
+ "DEF:users_max={file}:users:MAX",
+ "AREA:users_max#" .. self.palette.HalfBlue,
+ "AREA:users_min#" .. self.palette.Canvas,
+ "LINE1:users_avg#" .. self.palette.FullBlue .. ":Users",
+ "GPRINT:users_min:MIN:%4.1lf Min,",
+ "GPRINT:users_avg:AVERAGE:%4.1lf Average,",
+ "GPRINT:users_max:MAX:%4.1lf Max,",
+ "GPRINT:users_avg:LAST:%4.1lf Last\\l"
+ },
+
+ voltage = {
+ "-v", "Voltage",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Voltage",
+ "GPRINT:min:MIN:%5.1lf%sV Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sV Avg,",
+ "GPRINT:max:MAX:%5.1lf%sV Max,",
+ "GPRINT:avg:LAST:%5.1lf%sV Last\\l"
+ },
+
+ vs_threads = {
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Threads",
+ "GPRINT:min:MIN:%5.1lf Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf Avg.,",
+ "GPRINT:max:MAX:%5.1lf Max,",
+ "GPRINT:avg:LAST:%5.1lf Last\\l",
+ },
+
+ vs_memory = {
+ "-b", "1024", "-v", "Bytes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":",
+ "GPRINT:min:MIN:%5.1lf%sbytes Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sbytes Avg.,",
+ "GPRINT:max:MAX:%5.1lf%sbytes Max,",
+ "GPRINT:avg:LAST:%5.1lf%sbytes Last\\l",
+ },
+
+ vs_processes = {
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Processes",
+ "GPRINT:min:MIN:%5.1lf Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf Avg.,",
+ "GPRINT:max:MAX:%5.1lf Max,",
+ "GPRINT:avg:LAST:%5.1lf Last\\l",
+ },
+ }
+
+
+
+ -- used color palette
+ colors = {
+ Canvas = "FFFFFF",
+
+ FullRed = "FF0000",
+ FullGreen = "00E000",
+ FullBlue = "0000FF",
+ FullYellow = "F0A000",
+ FullCyan = "00A0FF",
+ FullMagenta = "A000FF",
+
+ HalfRed = "F7B7B7",
+ HalfGreen = "B7EFB7",
+ HalfBlue = "B7B7F7",
+ HalfYellow = "F3DFB7",
+ HalfCyan = "B7DFF7",
+ HalfMagenta = "DFB7F7",
+
+ HalfBlueGreen = "89B3C9"
+ }
+
+
+ -- plotting arguments for each defined datasource
+ rrd_args = {
+ apache_bytes = {
+ "DEF:min_raw={file}:count:MIN",
+ "DEF:avg_raw={file}:count:AVERAGE",
+ "DEF:max_raw={file}:count:MAX",
+ "CDEF:min=min_raw,8,*",
+ "CDEF:avg=avg_raw,8,*",
+ "CDEF:max=max_raw,8,*",
+ "CDEF:mytime=avg_raw,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:avg_sample=avg_raw,UN,0,avg_raw,IF,sample_len,*",
+ "CDEF:avg_sum=PREV,UN,0,PREV,IF,avg_sample,+",
+ "AREA:avg#" .. self.palette.HalfBlue,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bit/s",
+ "GPRINT:min:MIN:%5.1lf%s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ apache_requests = {
+ "DEF:min={file}:count:MIN",
+ "DEF:avg={file}:count:AVERAGE",
+ "DEF:max={file}:count:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Requests/s",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ apache_scoreboard = {
+ "DEF:min={file}:count:MIN",
+ "DEF:avg={file}:count:AVERAGE",
+ "DEF:max={file}:count:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Processes",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ bitrate = {
+ "-v", "Bits/s",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bits/s",
+ "GPRINT:min:MIN:%5.1lf%s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Average,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ charge = {
+ "-v", "Ah",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Charge",
+ "GPRINT:min:MIN:%5.1lf%sAh Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sAh Avg,",
+ "GPRINT:max:MAX:%5.1lf%sAh Max,",
+ "GPRINT:avg:LAST:%5.1lf%sAh Last\\l"
+ },
+
+ cpu = {
+ "-v", "CPU load",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Percent",
+ "GPRINT:min:MIN:%6.2lf%% Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf%% Avg,",
+ "GPRINT:max:MAX:%6.2lf%% Max,",
+ "GPRINT:avg:LAST:%6.2lf%% Last\\l"
+ },
+
+ current = {
+ "-v", "Ampere",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Current",
+ "GPRINT:min:MIN:%5.1lf%sA Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sA Avg,",
+ "GPRINT:max:MAX:%5.1lf%sA Max,",
+ "GPRINT:avg:LAST:%5.1lf%sA Last\\l"
+ },
+
+ df = {
+ "-v", "Percent", "-l", "0",
+ "DEF:free_avg={file}:free:AVERAGE",
+ "DEF:free_min={file}:free:MIN",
+ "DEF:free_max={file}:free:MAX",
+ "DEF:used_avg={file}:used:AVERAGE",
+ "DEF:used_min={file}:used:MIN",
+ "DEF:used_max={file}:used:MAX",
+ "CDEF:total=free_avg,used_avg,+",
+ "CDEF:free_pct=100,free_avg,*,total,/",
+ "CDEF:used_pct=100,used_avg,*,total,/",
+ "CDEF:free_acc=free_pct,used_pct,+",
+ "CDEF:used_acc=used_pct",
+ "AREA:free_acc#" .. self.palette.HalfGreen,
+ "AREA:used_acc#" .. self.palette.HalfRed,
+ "LINE1:free_acc#" .. self.palette.FullGreen .. ":Free",
+ "GPRINT:free_min:MIN:%5.1lf%sB Min,",
+ "GPRINT:free_avg:AVERAGE:%5.1lf%sB Avg,",
+ "GPRINT:free_max:MAX:%5.1lf%sB Max,",
+ "GPRINT:free_avg:LAST:%5.1lf%sB Last\\l",
+ "LINE1:used_acc#" .. self.palette.FullRed .. ":Used",
+ "GPRINT:used_min:MIN:%5.1lf%sB Min,",
+ "GPRINT:used_avg:AVERAGE:%5.1lf%sB Avg,",
+ "GPRINT:used_max:MAX:%5.1lf%sB Max,",
+ "GPRINT:used_avg:LAST:%5.1lf%sB Last\\l"
+ },
+
+ disk = {
+ "DEF:rtime_avg={file}:rtime:AVERAGE",
+ "DEF:rtime_min={file}:rtime:MIN",
+ "DEF:rtime_max={file}:rtime:MAX",
+ "DEF:wtime_avg={file}:wtime:AVERAGE",
+ "DEF:wtime_min={file}:wtime:MIN",
+ "DEF:wtime_max={file}:wtime:MAX",
+ "CDEF:rtime_avg_ms=rtime_avg,1000,/",
+ "CDEF:rtime_min_ms=rtime_min,1000,/",
+ "CDEF:rtime_max_ms=rtime_max,1000,/",
+ "CDEF:wtime_avg_ms=wtime_avg,1000,/",
+ "CDEF:wtime_min_ms=wtime_min,1000,/",
+ "CDEF:wtime_max_ms=wtime_max,1000,/",
+ "CDEF:total_avg_ms=rtime_avg_ms,wtime_avg_ms,+",
+ "CDEF:total_min_ms=rtime_min_ms,wtime_min_ms,+",
+ "CDEF:total_max_ms=rtime_max_ms,wtime_max_ms,+",
+ "AREA:total_max_ms#" .. self.palette.HalfRed,
+ "AREA:total_min_ms#" .. self.palette.Canvas,
+ "LINE1:wtime_avg_ms#" .. self.palette.FullGreen .. ":Write",
+ "GPRINT:wtime_min_ms:MIN:%5.1lf%s Min,",
+ "GPRINT:wtime_avg_ms:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:wtime_max_ms:MAX:%5.1lf%s Max,",
+ "GPRINT:wtime_avg_ms:LAST:%5.1lf%s Last\n",
+ "LINE1:rtime_avg_ms#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:rtime_min_ms:MIN:%5.1lf%s Min,",
+ "GPRINT:rtime_avg_ms:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rtime_max_ms:MAX:%5.1lf%s Max,",
+ "GPRINT:rtime_avg_ms:LAST:%5.1lf%s Last\n",
+ "LINE1:total_avg_ms#" .. self.palette.FullRed .. ":Total",
+ "GPRINT:total_min_ms:MIN:%5.1lf%s Min,",
+ "GPRINT:total_avg_ms:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:total_max_ms:MAX:%5.1lf%s Max,",
+ "GPRINT:total_avg_ms:LAST:%5.1lf%s Last\\l"
+ },
+
+ disk_octets = {
+ "-v", "Bytes/s",
+ "DEF:out_min={file}:write:MIN",
+ "DEF:out_avg={file}:write:AVERAGE",
+ "DEF:out_max={file}:write:MAX",
+ "DEF:inc_min={file}:read:MIN",
+ "DEF:inc_avg={file}:read:AVERAGE",
+ "DEF:inc_max={file}:read:MAX",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "CDEF:mytime=out_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:out_avg_sample=out_avg,UN,0,out_avg,IF,sample_len,*",
+ "CDEF:out_avg_sum=PREV,UN,0,PREV,IF,out_avg_sample,+",
+ "CDEF:inc_avg_sample=inc_avg,UN,0,inc_avg,IF,sample_len,*",
+ "CDEF:inc_avg_sum=PREV,UN,0,PREV,IF,inc_avg_sample,+",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:out_max:MAX:%5.1lf%s Max,",
+ "GPRINT:out_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:out_avg_sum:LAST:(ca. %5.1lf%sB Total)",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:inc_max:MAX:%5.1lf%s Max,",
+ "GPRINT:inc_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:inc_avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ disk_merged = {
+ "-v", "Merged Ops/s",
+ "DEF:out_min={file}:write:MIN",
+ "DEF:out_avg={file}:write:AVERAGE",
+ "DEF:out_max={file}:write:MAX",
+ "DEF:inc_min={file}:read:MIN",
+ "DEF:inc_avg={file}:read:AVERAGE",
+ "DEF:inc_max={file}:read:MAX",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:out_max:MAX:%6.2lf Max,",
+ "GPRINT:out_avg:LAST:%6.2lf Last\\l",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:inc_max:MAX:%6.2lf Max,",
+ "GPRINT:inc_avg:LAST:%6.2lf Last\\l"
+ },
+
+ disk_ops = {
+ "-v", "Ops/s",
+ "DEF:out_min={file}:write:MIN",
+ "DEF:out_avg={file}:write:AVERAGE",
+ "DEF:out_max={file}:write:MAX",
+ "DEF:inc_min={file}:read:MIN",
+ "DEF:inc_avg={file}:read:AVERAGE",
+ "DEF:inc_max={file}:read:MAX",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:out_max:MAX:%6.2lf Max,",
+ "GPRINT:out_avg:LAST:%6.2lf Last\\l",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:inc_max:MAX:%6.2lf Max,",
+ "GPRINT:inc_avg:LAST:%6.2lf Last\\l"
+ },
+
+ disk_time = {
+ "-v", "Seconds/s",
+ "DEF:out_min_raw={file}:write:MIN",
+ "DEF:out_avg_raw={file}:write:AVERAGE",
+ "DEF:out_max_raw={file}:write:MAX",
+ "DEF:inc_min_raw={file}:read:MIN",
+ "DEF:inc_avg_raw={file}:read:AVERAGE",
+ "DEF:inc_max_raw={file}:read:MAX",
+ "CDEF:out_min=out_min_raw,1000,/",
+ "CDEF:out_avg=out_avg_raw,1000,/",
+ "CDEF:out_max=out_max_raw,1000,/",
+ "CDEF:inc_min=inc_min_raw,1000,/",
+ "CDEF:inc_avg=inc_avg_raw,1000,/",
+ "CDEF:inc_max=inc_max_raw,1000,/",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_avg:AVERAGE:%5.1lf%ss Avg,",
+ "GPRINT:out_max:MAX:%5.1lf%ss Max,",
+ "GPRINT:out_avg:LAST:%5.1lf%ss Last\\l",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_avg:AVERAGE:%5.1lf%ss Avg,",
+ "GPRINT:inc_max:MAX:%5.1lf%ss Max,",
+ "GPRINT:inc_avg:LAST:%5.1lf%ss Last\\l"
+ },
+
+ dns_octets = {
+ "DEF:rsp_min_raw={file}:responses:MIN",
+ "DEF:rsp_avg_raw={file}:responses:AVERAGE",
+ "DEF:rsp_max_raw={file}:responses:MAX",
+ "DEF:qry_min_raw={file}:queries:MIN",
+ "DEF:qry_avg_raw={file}:queries:AVERAGE",
+ "DEF:qry_max_raw={file}:queries:MAX",
+ "CDEF:rsp_min=rsp_min_raw,8,*",
+ "CDEF:rsp_avg=rsp_avg_raw,8,*",
+ "CDEF:rsp_max=rsp_max_raw,8,*",
+ "CDEF:qry_min=qry_min_raw,8,*",
+ "CDEF:qry_avg=qry_avg_raw,8,*",
+ "CDEF:qry_max=qry_max_raw,8,*",
+ "CDEF:overlap=rsp_avg,qry_avg,GT,qry_avg,rsp_avg,IF",
+ "CDEF:mytime=rsp_avg_raw,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:rsp_avg_sample=rsp_avg_raw,UN,0,rsp_avg_raw,IF,sample_len,*",
+ "CDEF:rsp_avg_sum=PREV,UN,0,PREV,IF,rsp_avg_sample,+",
+ "CDEF:qry_avg_sample=qry_avg_raw,UN,0,qry_avg_raw,IF,sample_len,*",
+ "CDEF:qry_avg_sum=PREV,UN,0,PREV,IF,qry_avg_sample,+",
+ "AREA:rsp_avg#" .. self.palette.HalfGreen,
+ "AREA:qry_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:rsp_avg#" .. self.palette.FullGreen .. ":Responses",
+ "GPRINT:rsp_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rsp_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rsp_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:rsp_avg_sum:LAST:(ca. %5.1lf%sB Total)",
+ "LINE1:qry_avg#" .. self.palette.FullBlue .. ":Queries ",
+ #"GPRINT:qry_min:MIN:%5.1lf %s Min,",
+ "GPRINT:qry_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:qry_max:MAX:%5.1lf%s Max,",
+ "GPRINT:qry_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:qry_avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ dns_opcode = {
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Queries/s",
+ "GPRINT:min:MIN:%9.3lf Min,",
+ "GPRINT:avg:AVERAGE:%9.3lf Average,",
+ "GPRINT:max:MAX:%9.3lf Max,",
+ "GPRINT:avg:LAST:%9.3lf Last\\l"
+ },
+
+ email_count = {
+ "-v", "Mails",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfMagenta,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullMagenta .. ":Count ",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ email_size = {
+ "-v", "Bytes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfMagenta,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullMagenta .. ":Count ",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ spam_score = {
+ "-v", "Score",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Score ",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ spam_check = {
+ "DEF:avg={file}:hits:AVERAGE",
+ "DEF:min={file}:hits:MIN",
+ "DEF:max={file}:hits:MAX",
+ "AREA:max#" .. self.palette.HalfMagenta,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullMagenta .. ":Count ",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ entropy = {
+ "-v", "Bits",
+ "DEF:avg={file}:entropy:AVERAGE",
+ "DEF:min={file}:entropy:MIN",
+ "DEF:max={file}:entropy:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bits",
+ "GPRINT:min:MIN:%4.0lfbit Min,",
+ "GPRINT:avg:AVERAGE:%4.0lfbit Avg,",
+ "GPRINT:max:MAX:%4.0lfbit Max,",
+ "GPRINT:avg:LAST:%4.0lfbit Last\\l"
+ },
+
+ fanspeed = {
+ "-v", "RPM",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfMagenta,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullMagenta .. ":RPM",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ frequency = {
+ "-v", "Hertz",
+ "DEF:avg={file}:frequency:AVERAGE",
+ "DEF:min={file}:frequency:MIN",
+ "DEF:max={file}:frequency:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Frequency [Hz]",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ frequency_offset = {
+ "DEF:ppm_avg={file}:ppm:AVERAGE",
+ "DEF:ppm_min={file}:ppm:MIN",
+ "DEF:ppm_max={file}:ppm:MAX",
+ "AREA:ppm_max#" .. self.palette.HalfBlue,
+ "AREA:ppm_min#" .. self.palette.Canvas,
+ "LINE1:ppm_avg#" .. self.palette.FullBlue .. ":{inst}",
+ "GPRINT:ppm_min:MIN:%5.2lf Min,",
+ "GPRINT:ppm_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:ppm_max:MAX:%5.2lf Max,",
+ "GPRINT:ppm_avg:LAST:%5.2lf Last\\l"
+ },
+
+ gauge = {
+ "-v", "Exec value",
+ "DEF:temp_avg={file}:value:AVERAGE",
+ "DEF:temp_min={file}:value:MIN",
+ "DEF:temp_max={file}:value:MAX",
+ "AREA:temp_max#" .. self.palette.HalfBlue,
+ "AREA:temp_min#" .. self.palette.Canvas,
+ "LINE1:temp_avg#" .. self.palette.FullBlue .. ":Exec value",
+ "GPRINT:temp_min:MIN:%6.2lf Min,",
+ "GPRINT:temp_avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:temp_max:MAX:%6.2lf Max,",
+ "GPRINT:temp_avg:LAST:%6.2lf Last\\l"
+ },
+
+ hddtemp = {
+ "DEF:temp_avg={file}:value:AVERAGE",
+ "DEF:temp_min={file}:value:MIN",
+ "DEF:temp_max={file}:value:MAX",
+ "AREA:temp_max#" .. self.palette.HalfRed,
+ "AREA:temp_min#" .. self.palette.Canvas,
+ "LINE1:temp_avg#" .. self.palette.FullRed .. ":Temperature",
+ "GPRINT:temp_min:MIN:%4.1lf Min,",
+ "GPRINT:temp_avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:temp_max:MAX:%4.1lf Max,",
+ "GPRINT:temp_avg:LAST:%4.1lf Last\\l"
+ },
+
+ humidity = {
+ "-v", "Percent",
+ "DEF:temp_avg={file}:value:AVERAGE",
+ "DEF:temp_min={file}:value:MIN",
+ "DEF:temp_max={file}:value:MAX",
+ "AREA:temp_max#" .. self.palette.HalfGreen,
+ "AREA:temp_min#" .. self.palette.Canvas,
+ "LINE1:temp_avg#" .. self.palette.FullGreen .. ":Temperature",
+ "GPRINT:temp_min:MIN:%4.1lf%% Min,",
+ "GPRINT:temp_avg:AVERAGE:%4.1lf%% Avg,",
+ "GPRINT:temp_max:MAX:%4.1lf%% Max,",
+ "GPRINT:temp_avg:LAST:%4.1lf%% Last\\l"
+ },
+
+ if_errors = {
+ "-v", "Errors/s",
+ "DEF:tx_min={file}:tx:MIN",
+ "DEF:tx_avg={file}:tx:AVERAGE",
+ "DEF:tx_max={file}:tx:MAX",
+ "DEF:rx_min={file}:rx:MIN",
+ "DEF:rx_avg={file}:rx:AVERAGE",
+ "DEF:rx_max={file}:rx:MAX",
+ "CDEF:overlap=tx_avg,rx_avg,GT,rx_avg,tx_avg,IF",
+ "CDEF:mytime=tx_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:tx_avg_sample=tx_avg,UN,0,tx_avg,IF,sample_len,*",
+ "CDEF:tx_avg_sum=PREV,UN,0,PREV,IF,tx_avg_sample,+",
+ "CDEF:rx_avg_sample=rx_avg,UN,0,rx_avg,IF,sample_len,*",
+ "CDEF:rx_avg_sum=PREV,UN,0,PREV,IF,rx_avg_sample,+",
+ "AREA:tx_avg#" .. self.palette.HalfGreen,
+ "AREA:rx_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:tx_avg#" .. self.palette.FullGreen .. ":TX",
+ "GPRINT:tx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:tx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:tx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:tx_avg_sum:LAST:(ca. %4.0lf%s Total)",
+ "LINE1:rx_avg#" .. self.palette.FullBlue .. ":RX",
+ #"GPRINT:rx_min:MIN:%5.1lf %s Min,",
+ "GPRINT:rx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:rx_avg_sum:LAST:(ca. %4.0lf%s Total)"
+ },
+
+ if_collisions = {
+ "-v", "Collisions/s",
+ "DEF:min_raw={file}:value:MIN",
+ "DEF:avg_raw={file}:value:AVERAGE",
+ "DEF:max_raw={file}:value:MAX",
+ "CDEF:min=min_raw,8,*",
+ "CDEF:avg=avg_raw,8,*",
+ "CDEF:max=max_raw,8,*",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Collisions/s",
+ "GPRINT:min:MIN:%5.1lf %s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ if_dropped = {
+ "-v", "Packets/s",
+ "DEF:tx_min={file}:tx:MIN",
+ "DEF:tx_avg={file}:tx:AVERAGE",
+ "DEF:tx_max={file}:tx:MAX",
+ "DEF:rx_min={file}:rx:MIN",
+ "DEF:rx_avg={file}:rx:AVERAGE",
+ "DEF:rx_max={file}:rx:MAX",
+ "CDEF:overlap=tx_avg,rx_avg,GT,rx_avg,tx_avg,IF",
+ "CDEF:mytime=tx_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:tx_avg_sample=tx_avg,UN,0,tx_avg,IF,sample_len,*",
+ "CDEF:tx_avg_sum=PREV,UN,0,PREV,IF,tx_avg_sample,+",
+ "CDEF:rx_avg_sample=rx_avg,UN,0,rx_avg,IF,sample_len,*",
+ "CDEF:rx_avg_sum=PREV,UN,0,PREV,IF,rx_avg_sample,+",
+ "AREA:tx_avg#" .. self.palette.HalfGreen,
+ "AREA:rx_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:tx_avg#" .. self.palette.FullGreen .. ":TX",
+ "GPRINT:tx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:tx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:tx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:tx_avg_sum:LAST:(ca. %4.0lf%s Total)",
+ "LINE1:rx_avg#" .. self.palette.FullBlue .. ":RX",
+ #"GPRINT:rx_min:MIN:%5.1lf %s Min,",
+ "GPRINT:rx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:rx_avg_sum:LAST:(ca. %4.0lf%s Total)"
+ },
+
+ if_packets = {
+ "-v", "Packets/s",
+ "DEF:tx_min={file}:tx:MIN",
+ "DEF:tx_avg={file}:tx:AVERAGE",
+ "DEF:tx_max={file}:tx:MAX",
+ "DEF:rx_min={file}:rx:MIN",
+ "DEF:rx_avg={file}:rx:AVERAGE",
+ "DEF:rx_max={file}:rx:MAX",
+ "CDEF:overlap=tx_avg,rx_avg,GT,rx_avg,tx_avg,IF",
+ "CDEF:mytime=tx_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:tx_avg_sample=tx_avg,UN,0,tx_avg,IF,sample_len,*",
+ "CDEF:tx_avg_sum=PREV,UN,0,PREV,IF,tx_avg_sample,+",
+ "CDEF:rx_avg_sample=rx_avg,UN,0,rx_avg,IF,sample_len,*",
+ "CDEF:rx_avg_sum=PREV,UN,0,PREV,IF,rx_avg_sample,+",
+ "AREA:tx_avg#" .. self.palette.HalfGreen,
+ "AREA:rx_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:tx_avg#" .. self.palette.FullGreen .. ":TX",
+ "GPRINT:tx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:tx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:tx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:tx_avg_sum:LAST:(ca. %4.0lf%s Total)",
+ "LINE1:rx_avg#" .. self.palette.FullBlue .. ":RX",
+ #"GPRINT:rx_min:MIN:%5.1lf %s Min,",
+ "GPRINT:rx_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rx_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rx_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:rx_avg_sum:LAST:(ca. %4.0lf%s Total)"
+ },
+
+ if_rx_errors = {
+ "-v", "Errors/s",
+ "DEF:min={file}:value:MIN",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:max={file}:value:MAX",
+ "CDEF:mytime=avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:avg_sample=avg,UN,0,avg,IF,sample_len,*",
+ "CDEF:avg_sum=PREV,UN,0,PREV,IF,avg_sample,+",
+ "AREA:avg#" .. self.palette.HalfBlue,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Errors/s",
+ "GPRINT:avg:AVERAGE:%3.1lf%s Avg,",
+ "GPRINT:max:MAX:%3.1lf%s Max,",
+ "GPRINT:avg:LAST:%3.1lf%s Last\\l",
+ "GPRINT:avg_sum:LAST:(ca. %2.0lf%s Total)"
+ },
+
+ ipt_bytes = {
+ "-v", "Bits/s",
+ "DEF:min_raw={file}:value:MIN",
+ "DEF:avg_raw={file}:value:AVERAGE",
+ "DEF:max_raw={file}:value:MAX",
+ "CDEF:min=min_raw,8,*",
+ "CDEF:avg=avg_raw,8,*",
+ "CDEF:max=max_raw,8,*",
+ "CDEF:mytime=avg_raw,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:avg_sample=avg_raw,UN,0,avg_raw,IF,sample_len,*",
+ "CDEF:avg_sum=PREV,UN,0,PREV,IF,avg_sample,+",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bits/s",
+ #"GPRINT:min:MIN:%5.1lf %s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ ipt_packets = {
+ "-v", "Packets/s",
+ "DEF:min_raw={file}:value:MIN",
+ "DEF:avg_raw={file}:value:AVERAGE",
+ "DEF:max_raw={file}:value:MAX",
+ "CDEF:min=min_raw,8,*",
+ "CDEF:avg=avg_raw,8,*",
+ "CDEF:max=max_raw,8,*",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Packets/s",
+ "GPRINT:min:MIN:%5.1lf %s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ irq = {
+ "-v", "Issues/s",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Issues/s",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ load = {
+ "-v", "System load",
+ "DEF:s_avg={file}:shortterm:AVERAGE",
+ "DEF:s_min={file}:shortterm:MIN",
+ "DEF:s_max={file}:shortterm:MAX",
+ "DEF:m_avg={file}:midterm:AVERAGE",
+ "DEF:m_min={file}:midterm:MIN",
+ "DEF:m_max={file}:midterm:MAX",
+ "DEF:l_avg={file}:longterm:AVERAGE",
+ "DEF:l_min={file}:longterm:MIN",
+ "DEF:l_max={file}:longterm:MAX",
+ "AREA:s_max#" .. self.palette.HalfGreen,
+ "AREA:s_min#" .. self.palette.Canvas,
+ "LINE1:s_avg#" .. self.palette.FullGreen .. ": 1m average",
+ "GPRINT:s_min:MIN:%4.2lf Min,",
+ "GPRINT:s_avg:AVERAGE:%4.2lf Avg,",
+ "GPRINT:s_max:MAX:%4.2lf Max,",
+ "GPRINT:s_avg:LAST:%4.2lf Last\n",
+ "LINE1:m_avg#" .. self.palette.FullBlue .. ": 5m average",
+ "GPRINT:m_min:MIN:%4.2lf Min,",
+ "GPRINT:m_avg:AVERAGE:%4.2lf Avg,",
+ "GPRINT:m_max:MAX:%4.2lf Max,",
+ "GPRINT:m_avg:LAST:%4.2lf Last\n",
+ "LINE1:l_avg#" .. self.palette.FullRed .. ":15m average",
+ "GPRINT:l_min:MIN:%4.2lf Min,",
+ "GPRINT:l_avg:AVERAGE:%4.2lf Avg,",
+ "GPRINT:l_max:MAX:%4.2lf Max,",
+ "GPRINT:l_avg:LAST:%4.2lf Last\\l"
+ },
+
+ load_percent = {
+ "DEF:avg={file}:percent:AVERAGE",
+ "DEF:min={file}:percent:MIN",
+ "DEF:max={file}:percent:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Load",
+ "GPRINT:min:MIN:%5.1lf%s%% Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s%% Avg,",
+ "GPRINT:max:MAX:%5.1lf%s%% Max,",
+ "GPRINT:avg:LAST:%5.1lf%s%% Last\\l"
+ },
+
+ mails = {
+ "DEF:rawgood={file}:good:AVERAGE",
+ "DEF:rawspam={file}:spam:AVERAGE",
+ "CDEF:good=rawgood,UN,0,rawgood,IF",
+ "CDEF:spam=rawspam,UN,0,rawspam,IF",
+ "CDEF:negspam=spam,-1,*",
+ "AREA:good#" .. self.palette.HalfGreen,
+ "LINE1:good#" .. self.palette.FullGreen .. ":Good mails",
+ "GPRINT:good:AVERAGE:%4.1lf Avg,",
+ "GPRINT:good:MAX:%4.1lf Max,",
+ "GPRINT:good:LAST:%4.1lf Last\n",
+ "AREA:negspam#" .. self.palette.HalfRed,
+ "LINE1:negspam#" .. self.palette.FullRed .. ":Spam mails",
+ "GPRINT:spam:AVERAGE:%4.1lf Avg,",
+ "GPRINT:spam:MAX:%4.1lf Max,",
+ "GPRINT:spam:LAST:%4.1lf Last\\l",
+ "HRULE:0#000000"
+ },
+
+ memory = {
+ "-b", "1024", "-v", "Bytes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Memory",
+ "GPRINT:min:MIN:%5.1lf%sbyte Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sbyte Avg,",
+ "GPRINT:max:MAX:%5.1lf%sbyte Max,",
+ "GPRINT:avg:LAST:%5.1lf%sbyte Last\\l"
+ },
+
+ old_memory = {
+ "DEF:used_avg={file}:used:AVERAGE",
+ "DEF:free_avg={file}:free:AVERAGE",
+ "DEF:buffers_avg={file}:buffers:AVERAGE",
+ "DEF:cached_avg={file}:cached:AVERAGE",
+ "DEF:used_min={file}:used:MIN",
+ "DEF:free_min={file}:free:MIN",
+ "DEF:buffers_min={file}:buffers:MIN",
+ "DEF:cached_min={file}:cached:MIN",
+ "DEF:used_max={file}:used:MAX",
+ "DEF:free_max={file}:free:MAX",
+ "DEF:buffers_max={file}:buffers:MAX",
+ "DEF:cached_max={file}:cached:MAX",
+ "CDEF:cached_avg_nn=cached_avg,UN,0,cached_avg,IF",
+ "CDEF:buffers_avg_nn=buffers_avg,UN,0,buffers_avg,IF",
+ "CDEF:free_cached_buffers_used=free_avg,cached_avg_nn,+,buffers_avg_nn,+,used_avg,+",
+ "CDEF:cached_buffers_used=cached_avg,buffers_avg_nn,+,used_avg,+",
+ "CDEF:buffers_used=buffers_avg,used_avg,+",
+ "AREA:free_cached_buffers_used#" .. self.palette.HalfGreen,
+ "AREA:cached_buffers_used#" .. self.palette.HalfBlue,
+ "AREA:buffers_used#" .. self.palette.HalfYellow,
+ "AREA:used_avg#" .. self.palette.HalfRed,
+ "LINE1:free_cached_buffers_used#" .. self.palette.FullGreen .. ":Free ",
+ "GPRINT:free_min:MIN:%5.1lf%s Min,",
+ "GPRINT:free_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:free_max:MAX:%5.1lf%s Max,",
+ "GPRINT:free_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:cached_buffers_used#" .. self.palette.FullBlue .. ":Page cache ",
+ "GPRINT:cached_min:MIN:%5.1lf%s Min,",
+ "GPRINT:cached_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:cached_max:MAX:%5.1lf%s Max,",
+ "GPRINT:cached_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:buffers_used#" .. self.palette.FullYellow .. ":Buffer cache",
+ "GPRINT:buffers_min:MIN:%5.1lf%s Min,",
+ "GPRINT:buffers_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:buffers_max:MAX:%5.1lf%s Max,",
+ "GPRINT:buffers_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:used_avg#" .. self.palette.FullRed .. ":Used ",
+ "GPRINT:used_min:MIN:%5.1lf%s Min,",
+ "GPRINT:used_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:used_max:MAX:%5.1lf%s Max,",
+ "GPRINT:used_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ mysql_commands = {
+ "-v", "Issues/s",
+ "DEF:val_avg={file}:value:AVERAGE",
+ "DEF:val_min={file}:value:MIN",
+ "DEF:val_max={file}:value:MAX",
+ "AREA:val_max#" .. self.palette.HalfBlue,
+ "AREA:val_min#" .. self.palette.Canvas,
+ "LINE1:val_avg#" .. self.palette.FullBlue .. ":Issues/s",
+ "GPRINT:val_min:MIN:%5.2lf Min,",
+ "GPRINT:val_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:val_max:MAX:%5.2lf Max,",
+ "GPRINT:val_avg:LAST:%5.2lf Last\\l"
+ },
+
+ mysql_handler = {
+ "-v", "Issues/s",
+ "DEF:val_avg={file}:value:AVERAGE",
+ "DEF:val_min={file}:value:MIN",
+ "DEF:val_max={file}:value:MAX",
+ "AREA:val_max#" .. self.palette.HalfBlue,
+ "AREA:val_min#" .. self.palette.Canvas,
+ "LINE1:val_avg#" .. self.palette.FullBlue .. ":Issues/s",
+ "GPRINT:val_min:MIN:%5.2lf Min,",
+ "GPRINT:val_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:val_max:MAX:%5.2lf Max,",
+ "GPRINT:val_avg:LAST:%5.2lf Last\\l"
+ },
+
+ mysql_octets = {
+ "-v", "Bits/s",
+ "DEF:out_min={file}:tx:MIN",
+ "DEF:out_avg={file}:tx:AVERAGE",
+ "DEF:out_max={file}:tx:MAX",
+ "DEF:inc_min={file}:rx:MIN",
+ "DEF:inc_avg={file}:rx:AVERAGE",
+ "DEF:inc_max={file}:rx:MAX",
+ "CDEF:mytime=out_avg,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:out_avg_sample=out_avg,UN,0,out_avg,IF,sample_len,*",
+ "CDEF:out_avg_sum=PREV,UN,0,PREV,IF,out_avg_sample,+",
+ "CDEF:inc_avg_sample=inc_avg,UN,0,inc_avg,IF,sample_len,*",
+ "CDEF:inc_avg_sum=PREV,UN,0,PREV,IF,inc_avg_sample,+",
+ "CDEF:out_bit_min=out_min,8,*",
+ "CDEF:out_bit_avg=out_avg,8,*",
+ "CDEF:out_bit_max=out_max,8,*",
+ "CDEF:inc_bit_min=inc_min,8,*",
+ "CDEF:inc_bit_avg=inc_avg,8,*",
+ "CDEF:inc_bit_max=inc_max,8,*",
+ "CDEF:overlap=out_bit_avg,inc_bit_avg,GT,inc_bit_avg,out_bit_avg,IF",
+ "AREA:out_bit_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_bit_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_bit_avg#" .. self.palette.FullGreen .. ":Written",
+ "GPRINT:out_bit_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:out_bit_max:MAX:%5.1lf%s Max,",
+ "GPRINT:out_bit_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:out_avg_sum:LAST:(ca. %5.1lf%sB Total)",
+ "LINE1:inc_bit_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:inc_bit_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:inc_bit_max:MAX:%5.1lf%s Max,",
+ "GPRINT:inc_bit_avg:LAST:%5.1lf%s Last\\l",
+ "GPRINT:inc_avg_sum:LAST:(ca. %5.1lf%sB Total)"
+ },
+
+ mysql_qcache = {
+ "-v", "Queries/s",
+ "DEF:hits_min={file}:hits:MIN",
+ "DEF:hits_avg={file}:hits:AVERAGE",
+ "DEF:hits_max={file}:hits:MAX",
+ "DEF:inserts_min={file}:inserts:MIN",
+ "DEF:inserts_avg={file}:inserts:AVERAGE",
+ "DEF:inserts_max={file}:inserts:MAX",
+ "DEF:not_cached_min={file}:not_cached:MIN",
+ "DEF:not_cached_avg={file}:not_cached:AVERAGE",
+ "DEF:not_cached_max={file}:not_cached:MAX",
+ "DEF:lowmem_prunes_min={file}:lowmem_prunes:MIN",
+ "DEF:lowmem_prunes_avg={file}:lowmem_prunes:AVERAGE",
+ "DEF:lowmem_prunes_max={file}:lowmem_prunes:MAX",
+ "DEF:queries_min={file}:queries_in_cache:MIN",
+ "DEF:queries_avg={file}:queries_in_cache:AVERAGE",
+ "DEF:queries_max={file}:queries_in_cache:MAX",
+ "CDEF:unknown=queries_avg,UNKN,+",
+ "CDEF:not_cached_agg=hits_avg,inserts_avg,+,not_cached_avg,+",
+ "CDEF:inserts_agg=hits_avg,inserts_avg,+",
+ "CDEF:hits_agg=hits_avg",
+ "AREA:not_cached_agg#" .. self.palette.HalfYellow,
+ "AREA:inserts_agg#" .. self.palette.HalfBlue,
+ "AREA:hits_agg#" .. self.palette.HalfGreen,
+ "LINE1:not_cached_agg#" .. self.palette.FullYellow .. ":Not Cached ",
+ "GPRINT:not_cached_min:MIN:%5.2lf Min,",
+ "GPRINT:not_cached_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:not_cached_max:MAX:%5.2lf Max,",
+ "GPRINT:not_cached_avg:LAST:%5.2lf Last\\l",
+ "LINE1:inserts_agg#" .. self.palette.FullBlue .. ":Inserts ",
+ "GPRINT:inserts_min:MIN:%5.2lf Min,",
+ "GPRINT:inserts_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:inserts_max:MAX:%5.2lf Max,",
+ "GPRINT:inserts_avg:LAST:%5.2lf Last\\l",
+ "LINE1:hits_agg#" .. self.palette.FullGreen .. ":Hits ",
+ "GPRINT:hits_min:MIN:%5.2lf Min,",
+ "GPRINT:hits_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:hits_max:MAX:%5.2lf Max,",
+ "GPRINT:hits_avg:LAST:%5.2lf Last\\l",
+ "LINE1:lowmem_prunes_avg#" .. self.palette.FullRed .. ":Lowmem Prunes ",
+ "GPRINT:lowmem_prunes_min:MIN:%5.2lf Min,",
+ "GPRINT:lowmem_prunes_avg:AVERAGE:%5.2lf Avg,",
+ "GPRINT:lowmem_prunes_max:MAX:%5.2lf Max,",
+ "GPRINT:lowmem_prunes_avg:LAST:%5.2lf Last\\l",
+ "LINE1:unknown#" .. self.palette.Canvas .. ":Queries in cache",
+ "GPRINT:queries_min:MIN:%5.0lf Min,",
+ "GPRINT:queries_avg:AVERAGE:%5.0lf Avg,",
+ "GPRINT:queries_max:MAX:%5.0lf Max,",
+ "GPRINT:queries_avg:LAST:%5.0lf Last\\l"
+ },
+
+ mysql_threads = {
+ "-v", "Threads",
+ "DEF:running_min={file}:running:MIN",
+ "DEF:running_avg={file}:running:AVERAGE",
+ "DEF:running_max={file}:running:MAX",
+ "DEF:connected_min={file}:connected:MIN",
+ "DEF:connected_avg={file}:connected:AVERAGE",
+ "DEF:connected_max={file}:connected:MAX",
+ "DEF:cached_min={file}:cached:MIN",
+ "DEF:cached_avg={file}:cached:AVERAGE",
+ "DEF:cached_max={file}:cached:MAX",
+ "DEF:created_min={file}:created:MIN",
+ "DEF:created_avg={file}:created:AVERAGE",
+ "DEF:created_max={file}:created:MAX",
+ "CDEF:unknown=created_avg,UNKN,+",
+ "CDEF:cached_agg=connected_avg,cached_avg,+",
+ "AREA:cached_agg#" .. self.palette.HalfGreen,
+ "AREA:connected_avg#" .. self.palette.HalfBlue,
+ "AREA:running_avg#" .. self.palette.HalfRed,
+ "LINE1:cached_agg#" .. self.palette.FullGreen .. ":Cached ",
+ "GPRINT:cached_min:MIN:%5.1lf Min,",
+ "GPRINT:cached_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:cached_max:MAX:%5.1lf Max,",
+ "GPRINT:cached_avg:LAST:%5.1lf Last\\l",
+ "LINE1:connected_avg#" .. self.palette.FullBlue .. ":Connected",
+ "GPRINT:connected_min:MIN:%5.1lf Min,",
+ "GPRINT:connected_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:connected_max:MAX:%5.1lf Max,",
+ "GPRINT:connected_avg:LAST:%5.1lf Last\\l",
+ "LINE1:running_avg#" .. self.palette.FullRed .. ":Running ",
+ "GPRINT:running_min:MIN:%5.1lf Min,",
+ "GPRINT:running_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:running_max:MAX:%5.1lf Max,",
+ "GPRINT:running_avg:LAST:%5.1lf Last\\l",
+ "LINE1:unknown#" .. self.palette.Canvas .. ":Created ",
+ "GPRINT:created_min:MIN:%5.0lf Min,",
+ "GPRINT:created_avg:AVERAGE:%5.0lf Avg,",
+ "GPRINT:created_max:MAX:%5.0lf Max,",
+ "GPRINT:created_avg:LAST:%5.0lf Last\\l"
+ },
+
+ nfs_procedure = {
+ "-v", "Issues/s",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Issues/s",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ nfs3_procedures = {
+ "DEF:null_avg={file}:null:AVERAGE",
+ "DEF:getattr_avg={file}:getattr:AVERAGE",
+ "DEF:setattr_avg={file}:setattr:AVERAGE",
+ "DEF:lookup_avg={file}:lookup:AVERAGE",
+ "DEF:access_avg={file}:access:AVERAGE",
+ "DEF:readlink_avg={file}:readlink:AVERAGE",
+ "DEF:read_avg={file}:read:AVERAGE",
+ "DEF:write_avg={file}:write:AVERAGE",
+ "DEF:create_avg={file}:create:AVERAGE",
+ "DEF:mkdir_avg={file}:mkdir:AVERAGE",
+ "DEF:symlink_avg={file}:symlink:AVERAGE",
+ "DEF:mknod_avg={file}:mknod:AVERAGE",
+ "DEF:remove_avg={file}:remove:AVERAGE",
+ "DEF:rmdir_avg={file}:rmdir:AVERAGE",
+ "DEF:rename_avg={file}:rename:AVERAGE",
+ "DEF:link_avg={file}:link:AVERAGE",
+ "DEF:readdir_avg={file}:readdir:AVERAGE",
+ "DEF:readdirplus_avg={file}:readdirplus:AVERAGE",
+ "DEF:fsstat_avg={file}:fsstat:AVERAGE",
+ "DEF:fsinfo_avg={file}:fsinfo:AVERAGE",
+ "DEF:pathconf_avg={file}:pathconf:AVERAGE",
+ "DEF:commit_avg={file}:commit:AVERAGE",
+ "DEF:null_max={file}:null:MAX",
+ "DEF:getattr_max={file}:getattr:MAX",
+ "DEF:setattr_max={file}:setattr:MAX",
+ "DEF:lookup_max={file}:lookup:MAX",
+ "DEF:access_max={file}:access:MAX",
+ "DEF:readlink_max={file}:readlink:MAX",
+ "DEF:read_max={file}:read:MAX",
+ "DEF:write_max={file}:write:MAX",
+ "DEF:create_max={file}:create:MAX",
+ "DEF:mkdir_max={file}:mkdir:MAX",
+ "DEF:symlink_max={file}:symlink:MAX",
+ "DEF:mknod_max={file}:mknod:MAX",
+ "DEF:remove_max={file}:remove:MAX",
+ "DEF:rmdir_max={file}:rmdir:MAX",
+ "DEF:rename_max={file}:rename:MAX",
+ "DEF:link_max={file}:link:MAX",
+ "DEF:readdir_max={file}:readdir:MAX",
+ "DEF:readdirplus_max={file}:readdirplus:MAX",
+ "DEF:fsstat_max={file}:fsstat:MAX",
+ "DEF:fsinfo_max={file}:fsinfo:MAX",
+ "DEF:pathconf_max={file}:pathconf:MAX",
+ "DEF:commit_max={file}:commit:MAX",
+ "CDEF:other_avg=null_avg,readlink_avg,create_avg,mkdir_avg,symlink_avg,mknod_avg,remove_avg,rmdir_avg,rename_avg,link_avg,readdir_avg,readdirplus_avg,fsstat_avg,fsinfo_avg,pathconf_avg,+,+,+,+,+,+,+,+,+,+,+,+,+,+",
+ "CDEF:other_max=null_max,readlink_max,create_max,mkdir_max,symlink_max,mknod_max,remove_max,rmdir_max,rename_max,link_max,readdir_max,readdirplus_max,fsstat_max,fsinfo_max,pathconf_max,+,+,+,+,+,+,+,+,+,+,+,+,+,+",
+ "CDEF:stack_read=read_avg",
+ "CDEF:stack_getattr=stack_read,getattr_avg,+",
+ "CDEF:stack_access=stack_getattr,access_avg,+",
+ "CDEF:stack_lookup=stack_access,lookup_avg,+",
+ "CDEF:stack_write=stack_lookup,write_avg,+",
+ "CDEF:stack_commit=stack_write,commit_avg,+",
+ "CDEF:stack_setattr=stack_commit,setattr_avg,+",
+ "CDEF:stack_other=stack_setattr,other_avg,+",
+ "AREA:stack_other#" .. self.palette.HalfRed,
+ "AREA:stack_setattr#" .. self.palette.HalfGreen,
+ "AREA:stack_commit#" .. self.palette.HalfYellow,
+ "AREA:stack_write#" .. self.palette.HalfGreen,
+ "AREA:stack_lookup#" .. self.palette.HalfBlue,
+ "AREA:stack_access#" .. self.palette.HalfMagenta,
+ "AREA:stack_getattr#" .. self.palette.HalfCyan,
+ "AREA:stack_read#" .. self.palette.HalfBlue,
+ "LINE1:stack_other#" .. self.palette.FullRed .. ":Other ",
+ "GPRINT:other_max:MAX:%5.1lf Max,",
+ "GPRINT:other_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:other_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_setattr#" .. self.palette.FullGreen .. ":setattr",
+ "GPRINT:setattr_max:MAX:%5.1lf Max,",
+ "GPRINT:setattr_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:setattr_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_commit#" .. self.palette.FullYellow .. ":commit ",
+ "GPRINT:commit_max:MAX:%5.1lf Max,",
+ "GPRINT:commit_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:commit_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_write#" .. self.palette.FullGreen .. ":write ",
+ "GPRINT:write_max:MAX:%5.1lf Max,",
+ "GPRINT:write_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:write_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_lookup#" .. self.palette.FullBlue .. ":lookup ",
+ "GPRINT:lookup_max:MAX:%5.1lf Max,",
+ "GPRINT:lookup_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:lookup_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_access#" .. self.palette.FullMagenta .. ":access ",
+ "GPRINT:access_max:MAX:%5.1lf Max,",
+ "GPRINT:access_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:access_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_getattr#" .. self.palette.FullCyan .. ":getattr",
+ "GPRINT:getattr_max:MAX:%5.1lf Max,",
+ "GPRINT:getattr_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:getattr_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stack_read#" .. self.palette.FullBlue .. ":read ",
+ "GPRINT:read_max:MAX:%5.1lf Max,",
+ "GPRINT:read_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:read_avg:LAST:%5.1lf Last\\l"
+ },
+
+ partition = {
+ "DEF:rbyte_avg={file}:rbytes:AVERAGE",
+ "DEF:rbyte_min={file}:rbytes:MIN",
+ "DEF:rbyte_max={file}:rbytes:MAX",
+ "DEF:wbyte_avg={file}:wbytes:AVERAGE",
+ "DEF:wbyte_min={file}:wbytes:MIN",
+ "DEF:wbyte_max={file}:wbytes:MAX",
+ "CDEF:overlap=wbyte_avg,rbyte_avg,GT,rbyte_avg,wbyte_avg,IF",
+ "AREA:wbyte_avg#" .. self.palette.HalfGreen,
+ "AREA:rbyte_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:wbyte_avg#" .. self.palette.FullGreen .. ":Write",
+ "GPRINT:wbyte_min:MIN:%5.1lf%s Min,",
+ "GPRINT:wbyte_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:wbyte_max:MAX:%5.1lf%s Max,",
+ "GPRINT:wbyte_avg:LAST:%5.1lf%s Last\\l",
+ "LINE1:rbyte_avg#" .. self.palette.FullBlue .. ":Read ",
+ "GPRINT:rbyte_min:MIN:%5.1lf%s Min,",
+ "GPRINT:rbyte_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:rbyte_max:MAX:%5.1lf%s Max,",
+ "GPRINT:rbyte_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ percent = {
+ "-v", "Percent",
+ "DEF:avg={file}:percent:AVERAGE",
+ "DEF:min={file}:percent:MIN",
+ "DEF:max={file}:percent:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Percent",
+ "GPRINT:min:MIN:%5.1lf%% Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%% Avg,",
+ "GPRINT:max:MAX:%5.1lf%% Max,",
+ "GPRINT:avg:LAST:%5.1lf%% Last\\l"
+ },
+
+ ping = {
+ "DEF:ping_avg={file}:ping:AVERAGE",
+ "DEF:ping_min={file}:ping:MIN",
+ "DEF:ping_max={file}:ping:MAX",
+ "AREA:ping_max#" .. self.palette.HalfBlue,
+ "AREA:ping_min#" .. self.palette.Canvas,
+ "LINE1:ping_avg#" .. self.palette.FullBlue .. ":Ping",
+ "GPRINT:ping_min:MIN:%4.1lf ms Min,",
+ "GPRINT:ping_avg:AVERAGE:%4.1lf ms Avg,",
+ "GPRINT:ping_max:MAX:%4.1lf ms Max,",
+ "GPRINT:ping_avg:LAST:%4.1lf ms Last\\l"
+ },
+
+ power = {
+ "-v", "Watt",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Watt",
+ "GPRINT:min:MIN:%5.1lf%sW Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sW Avg,",
+ "GPRINT:max:MAX:%5.1lf%sW Max,",
+ "GPRINT:avg:LAST:%5.1lf%sW Last\\l"
+ },
+
+ processes = {
+ "DEF:running_avg={file}:running:AVERAGE",
+ "DEF:running_min={file}:running:MIN",
+ "DEF:running_max={file}:running:MAX",
+ "DEF:sleeping_avg={file}:sleeping:AVERAGE",
+ "DEF:sleeping_min={file}:sleeping:MIN",
+ "DEF:sleeping_max={file}:sleeping:MAX",
+ "DEF:zombies_avg={file}:zombies:AVERAGE",
+ "DEF:zombies_min={file}:zombies:MIN",
+ "DEF:zombies_max={file}:zombies:MAX",
+ "DEF:stopped_avg={file}:stopped:AVERAGE",
+ "DEF:stopped_min={file}:stopped:MIN",
+ "DEF:stopped_max={file}:stopped:MAX",
+ "DEF:paging_avg={file}:paging:AVERAGE",
+ "DEF:paging_min={file}:paging:MIN",
+ "DEF:paging_max={file}:paging:MAX",
+ "DEF:blocked_avg={file}:blocked:AVERAGE",
+ "DEF:blocked_min={file}:blocked:MIN",
+ "DEF:blocked_max={file}:blocked:MAX",
+ "CDEF:paging_acc=sleeping_avg,running_avg,stopped_avg,zombies_avg,blocked_avg,paging_avg,+,+,+,+,+",
+ "CDEF:blocked_acc=sleeping_avg,running_avg,stopped_avg,zombies_avg,blocked_avg,+,+,+,+",
+ "CDEF:zombies_acc=sleeping_avg,running_avg,stopped_avg,zombies_avg,+,+,+",
+ "CDEF:stopped_acc=sleeping_avg,running_avg,stopped_avg,+,+",
+ "CDEF:running_acc=sleeping_avg,running_avg,+",
+ "CDEF:sleeping_acc=sleeping_avg",
+ "AREA:paging_acc#" .. self.palette.HalfYellow,
+ "AREA:blocked_acc#" .. self.palette.HalfCyan,
+ "AREA:zombies_acc#" .. self.palette.HalfRed,
+ "AREA:stopped_acc#" .. self.palette.HalfMagenta,
+ "AREA:running_acc#" .. self.palette.HalfGreen,
+ "AREA:sleeping_acc#" .. self.palette.HalfBlue,
+ "LINE1:paging_acc#" .. self.palette.FullYellow .. ":Paging ",
+ "GPRINT:paging_min:MIN:%5.1lf Min,",
+ "GPRINT:paging_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:paging_max:MAX:%5.1lf Max,",
+ "GPRINT:paging_avg:LAST:%5.1lf Last\\l",
+ "LINE1:blocked_acc#" .. self.palette.FullCyan .. ":Blocked ",
+ "GPRINT:blocked_min:MIN:%5.1lf Min,",
+ "GPRINT:blocked_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:blocked_max:MAX:%5.1lf Max,",
+ "GPRINT:blocked_avg:LAST:%5.1lf Last\\l",
+ "LINE1:zombies_acc#" .. self.palette.FullRed .. ":Zombies ",
+ "GPRINT:zombies_min:MIN:%5.1lf Min,",
+ "GPRINT:zombies_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:zombies_max:MAX:%5.1lf Max,",
+ "GPRINT:zombies_avg:LAST:%5.1lf Last\\l",
+ "LINE1:stopped_acc#" .. self.palette.FullMagenta .. ":Stopped ",
+ "GPRINT:stopped_min:MIN:%5.1lf Min,",
+ "GPRINT:stopped_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:stopped_max:MAX:%5.1lf Max,",
+ "GPRINT:stopped_avg:LAST:%5.1lf Last\\l",
+ "LINE1:running_acc#" .. self.palette.FullGreen .. ":Running ",
+ "GPRINT:running_min:MIN:%5.1lf Min,",
+ "GPRINT:running_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:running_max:MAX:%5.1lf Max,",
+ "GPRINT:running_avg:LAST:%5.1lf Last\\l",
+ "LINE1:sleeping_acc#" .. self.palette.FullBlue .. ":Sleeping",
+ "GPRINT:sleeping_min:MIN:%5.1lf Min,",
+ "GPRINT:sleeping_avg:AVERAGE:%5.1lf Average,",
+ "GPRINT:sleeping_max:MAX:%5.1lf Max,",
+ "GPRINT:sleeping_avg:LAST:%5.1lf Last\\l"
+ },
+
+ ps_count = {
+ "-v", "Processes",
+ "DEF:procs_avg={file}:processes:AVERAGE",
+ "DEF:procs_min={file}:processes:MIN",
+ "DEF:procs_max={file}:processes:MAX",
+ "DEF:thrds_avg={file}:threads:AVERAGE",
+ "DEF:thrds_min={file}:threads:MIN",
+ "DEF:thrds_max={file}:threads:MAX",
+ "AREA:thrds_avg#" .. self.palette.HalfBlue,
+ "AREA:procs_avg#" .. self.palette.HalfRed,
+ "LINE1:thrds_avg#" .. self.palette.FullBlue .. ":Threads ",
+ "GPRINT:thrds_min:MIN:%5.1lf Min,",
+ "GPRINT:thrds_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:thrds_max:MAX:%5.1lf Max,",
+ "GPRINT:thrds_avg:LAST:%5.1lf Last\\l",
+ "LINE1:procs_avg#" .. self.palette.FullRed .. ":Processes",
+ "GPRINT:procs_min:MIN:%5.1lf Min,",
+ "GPRINT:procs_avg:AVERAGE:%5.1lf Avg,",
+ "GPRINT:procs_max:MAX:%5.1lf Max,",
+ "GPRINT:procs_avg:LAST:%5.1lf Last\\l"
+ },
+
+ ps_cputime = {
+ "-v", "Jiffies",
+ "DEF:user_avg_raw={file}:user:AVERAGE",
+ "DEF:user_min_raw={file}:user:MIN",
+ "DEF:user_max_raw={file}:user:MAX",
+ "DEF:syst_avg_raw={file}:syst:AVERAGE",
+ "DEF:syst_min_raw={file}:syst:MIN",
+ "DEF:syst_max_raw={file}:syst:MAX",
+ "CDEF:user_avg=user_avg_raw,1000000,/",
+ "CDEF:user_min=user_min_raw,1000000,/",
+ "CDEF:user_max=user_max_raw,1000000,/",
+ "CDEF:syst_avg=syst_avg_raw,1000000,/",
+ "CDEF:syst_min=syst_min_raw,1000000,/",
+ "CDEF:syst_max=syst_max_raw,1000000,/",
+ "CDEF:user_syst=syst_avg,UN,0,syst_avg,IF,user_avg,+",
+ "AREA:user_syst#" .. self.palette.HalfBlue,
+ "AREA:syst_avg#" .. self.palette.HalfRed,
+ "LINE1:user_syst#" .. self.palette.FullBlue .. ":User ",
+ "GPRINT:user_min:MIN:%5.1lf%s Min,",
+ "GPRINT:user_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:user_max:MAX:%5.1lf%s Max,",
+ "GPRINT:user_avg:LAST:%5.1lf%s Last\\l",
+ "LINE1:syst_avg#" .. self.palette.FullRed .. ":System",
+ "GPRINT:syst_min:MIN:%5.1lf%s Min,",
+ "GPRINT:syst_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:syst_max:MAX:%5.1lf%s Max,",
+ "GPRINT:syst_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ ps_pagefaults = {
+ "-v", "Pagefaults/s",
+ "DEF:minor_avg={file}:minflt:AVERAGE",
+ "DEF:minor_min={file}:minflt:MIN",
+ "DEF:minor_max={file}:minflt:MAX",
+ "DEF:major_avg={file}:majflt:AVERAGE",
+ "DEF:major_min={file}:majflt:MIN",
+ "DEF:major_max={file}:majflt:MAX",
+ "CDEF:minor_major=major_avg,UN,0,major_avg,IF,minor_avg,+",
+ "AREA:minor_major#" .. self.palette.HalfBlue,
+ "AREA:major_avg#" .. self.palette.HalfRed,
+ "LINE1:minor_major#" .. self.palette.FullBlue .. ":Minor",
+ "GPRINT:minor_min:MIN:%5.1lf%s Min,",
+ "GPRINT:minor_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:minor_max:MAX:%5.1lf%s Max,",
+ "GPRINT:minor_avg:LAST:%5.1lf%s Last\\l",
+ "LINE1:major_avg#" .. self.palette.FullRed .. ":Major",
+ "GPRINT:major_min:MIN:%5.1lf%s Min,",
+ "GPRINT:major_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:major_max:MAX:%5.1lf%s Max,",
+ "GPRINT:major_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ ps_rss = {
+ "-v", "Bytes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:avg#" .. self.palette.HalfBlue,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":RSS",
+ "GPRINT:min:MIN:%5.1lf%s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ ps_state = {
+ "-v", "Processes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Processes",
+ "GPRINT:min:MIN:%6.2lf Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf Avg,",
+ "GPRINT:max:MAX:%6.2lf Max,",
+ "GPRINT:avg:LAST:%6.2lf Last\\l"
+ },
+
+ signal_noise = {
+ "-v", "dBm",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Noise",
+ "GPRINT:min:MIN:%5.1lf%sdBm Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sdBm Avg,",
+ "GPRINT:max:MAX:%5.1lf%sdBm Max,",
+ "GPRINT:avg:LAST:%5.1lf%sdBm Last\\l"
+ },
+
+ signal_power = {
+ "-v", "dBm",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Power",
+ "GPRINT:min:MIN:%5.1lf%sdBm Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sdBm Avg,",
+ "GPRINT:max:MAX:%5.1lf%sdBm Max,",
+ "GPRINT:avg:LAST:%5.1lf%sdBm Last\\l"
+ },
+
+ signal_quality = {
+ "-v", "%",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Quality",
+ "GPRINT:min:MIN:%5.1lf%s%% Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s%% Avg,",
+ "GPRINT:max:MAX:%5.1lf%s%% Max,",
+ "GPRINT:avg:LAST:%5.1lf%s%% Last\\l"
+ },
+
+ swap = {
+ "-v", "Bytes", "-b", "1024",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Bytes",
+ "GPRINT:min:MIN:%6.2lf%sByte Min,",
+ "GPRINT:avg:AVERAGE:%6.2lf%sByte Avg,",
+ "GPRINT:max:MAX:%6.2lf%sByte Max,",
+ "GPRINT:avg:LAST:%6.2lf%sByte Last\\l"
+ },
+
+ old_swap = {
+ "DEF:used_avg={file}:used:AVERAGE",
+ "DEF:used_min={file}:used:MIN",
+ "DEF:used_max={file}:used:MAX",
+ "DEF:free_avg={file}:free:AVERAGE",
+ "DEF:free_min={file}:free:MIN",
+ "DEF:free_max={file}:free:MAX",
+ "DEF:cach_avg={file}:cached:AVERAGE",
+ "DEF:cach_min={file}:cached:MIN",
+ "DEF:cach_max={file}:cached:MAX",
+ "DEF:resv_avg={file}:resv:AVERAGE",
+ "DEF:resv_min={file}:resv:MIN",
+ "DEF:resv_max={file}:resv:MAX",
+ "CDEF:cach_avg_notnull=cach_avg,UN,0,cach_avg,IF",
+ "CDEF:resv_avg_notnull=resv_avg,UN,0,resv_avg,IF",
+ "CDEF:used_acc=used_avg",
+ "CDEF:resv_acc=used_acc,resv_avg_notnull,+",
+ "CDEF:cach_acc=resv_acc,cach_avg_notnull,+",
+ "CDEF:free_acc=cach_acc,free_avg,+",
+ "AREA:free_acc#" .. self.palette.HalfGreen,
+ "AREA:cach_acc#" .. self.palette.HalfBlue,
+ "AREA:resv_acc#" .. self.palette.HalfYellow,
+ "AREA:used_acc#" .. self.palette.HalfRed,
+ "LINE1:free_acc#" .. self.palette.FullGreen .. ":Free ",
+ "GPRINT:free_min:MIN:%5.1lf%s Min,",
+ "GPRINT:free_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:free_max:MAX:%5.1lf%s Max,",
+ "GPRINT:free_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:cach_acc#" .. self.palette.FullBlue .. ":Cached ",
+ "GPRINT:cach_min:MIN:%5.1lf%s Min,",
+ "GPRINT:cach_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:cach_max:MAX:%5.1lf%s Max,",
+ "GPRINT:cach_avg:LAST:%5.1lf%s Last\\l",
+ "LINE1:resv_acc#" .. self.palette.FullYellow .. ":Reserved",
+ "GPRINT:resv_min:MIN:%5.1lf%s Min,",
+ "GPRINT:resv_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:resv_max:MAX:%5.1lf%s Max,",
+ "GPRINT:resv_avg:LAST:%5.1lf%s Last\n",
+ "LINE1:used_acc#" .. self.palette.FullRed .. ":Used ",
+ "GPRINT:used_min:MIN:%5.1lf%s Min,",
+ "GPRINT:used_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:used_max:MAX:%5.1lf%s Max,",
+ "GPRINT:used_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ tcp_connections = {
+ "-v", "Connections",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Connections",
+ "GPRINT:min:MIN:%4.1lf Min,",
+ "GPRINT:avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:max:MAX:%4.1lf Max,",
+ "GPRINT:avg:LAST:%4.1lf Last\\l"
+ },
+
+ temperature = {
+ "-v", "Celsius",
+ "DEF:temp_avg={file}:value:AVERAGE",
+ "DEF:temp_min={file}:value:MIN",
+ "DEF:temp_max={file}:value:MAX",
+ "CDEF:average=temp_avg,0.2,*,PREV,UN,temp_avg,PREV,IF,0.8,*,+",
+ "AREA:temp_max#" .. self.palette.HalfRed,
+ "AREA:temp_min#" .. self.palette.Canvas,
+ "LINE1:temp_avg#" .. self.palette.FullRed .. ":Temperature",
+ "GPRINT:temp_min:MIN:%4.1lf Min,",
+ "GPRINT:temp_avg:AVERAGE:%4.1lf Avg,",
+ "GPRINT:temp_max:MAX:%4.1lf Max,",
+ "GPRINT:temp_avg:LAST:%4.1lf Last\\l"
+ },
+
+ timeleft = {
+ "-v", "Minutes",
+ "DEF:avg={file}:timeleft:AVERAGE",
+ "DEF:min={file}:timeleft:MIN",
+ "DEF:max={file}:timeleft:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Time left [min]",
+ "GPRINT:min:MIN:%5.1lf%s Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:max:MAX:%5.1lf%s Max,",
+ "GPRINT:avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ time_offset = {
+ "DEF:s_avg={file}:seconds:AVERAGE",
+ "DEF:s_min={file}:seconds:MIN",
+ "DEF:s_max={file}:seconds:MAX",
+ "AREA:s_max#" .. self.palette.HalfBlue,
+ "AREA:s_min#" .. self.palette.Canvas,
+ "LINE1:s_avg#" .. self.palette.FullBlue .. ":{inst}",
+ "GPRINT:s_min:MIN:%7.3lf%s Min,",
+ "GPRINT:s_avg:AVERAGE:%7.3lf%s Avg,",
+ "GPRINT:s_max:MAX:%7.3lf%s Max,",
+ "GPRINT:s_avg:LAST:%7.3lf%s Last\\l"
+ },
+
+ if_octets = {
+ "-v", "Bits/s", "-l", "0",
+ "DEF:out_min_raw={file}:tx:MIN",
+ "DEF:out_avg_raw={file}:tx:AVERAGE",
+ "DEF:out_max_raw={file}:tx:MAX",
+ "DEF:inc_min_raw={file}:rx:MIN",
+ "DEF:inc_avg_raw={file}:rx:AVERAGE",
+ "DEF:inc_max_raw={file}:rx:MAX",
+ "CDEF:out_min=out_min_raw,8,*",
+ "CDEF:out_avg=out_avg_raw,8,*",
+ "CDEF:out_max=out_max_raw,8,*",
+ "CDEF:inc_min=inc_min_raw,8,*",
+ "CDEF:inc_avg=inc_avg_raw,8,*",
+ "CDEF:inc_max=inc_max_raw,8,*",
+ "CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF",
+ "CDEF:mytime=out_avg_raw,TIME,TIME,IF",
+ "CDEF:sample_len_raw=mytime,PREV(mytime),-",
+ "CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF",
+ "CDEF:out_avg_sample=out_avg_raw,UN,0,out_avg_raw,IF,sample_len,*",
+ "CDEF:out_avg_sum=PREV,UN,0,PREV,IF,out_avg_sample,+",
+ "CDEF:inc_avg_sample=inc_avg_raw,UN,0,inc_avg_raw,IF,sample_len,*",
+ "CDEF:inc_avg_sum=PREV,UN,0,PREV,IF,inc_avg_sample,+",
+ "AREA:out_avg#" .. self.palette.HalfGreen,
+ "AREA:inc_avg#" .. self.palette.HalfBlue,
+ "AREA:overlap#" .. self.palette.HalfBlueGreen,
+ "LINE1:out_avg#" .. self.palette.FullGreen .. ":Outgoing",
+ "GPRINT:out_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:out_max:MAX:%5.1lf%s Max,",
+ "GPRINT:out_avg:LAST:%5.1lf%s Last",
+ "GPRINT:out_avg_sum:LAST:(ca. %5.1lf%sB Total)\\l",
+ "LINE1:inc_avg#" .. self.palette.FullBlue .. ":Incoming",
+ --"GPRINT:inc_min:MIN:%5.1lf %s Min,",
+ "GPRINT:inc_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:inc_max:MAX:%5.1lf%s Max,",
+ "GPRINT:inc_avg:LAST:%5.1lf%s Last",
+ "GPRINT:inc_avg_sum:LAST:(ca. %5.1lf%sB Total)\\l"
+ },
+
+ cpufreq = {
+ "DEF:cpufreq_avg={file}:value:AVERAGE",
+ "DEF:cpufreq_min={file}:value:MIN",
+ "DEF:cpufreq_max={file}:value:MAX",
+ "AREA:cpufreq_max#" .. self.palette.HalfBlue,
+ "AREA:cpufreq_min#" .. self.palette.Canvas,
+ "LINE1:cpufreq_avg#" .. self.palette.FullBlue .. ":Frequency",
+ "GPRINT:cpufreq_min:MIN:%5.1lf%s Min,",
+ "GPRINT:cpufreq_avg:AVERAGE:%5.1lf%s Avg,",
+ "GPRINT:cpufreq_max:MAX:%5.1lf%s Max,",
+ "GPRINT:cpufreq_avg:LAST:%5.1lf%s Last\\l"
+ },
+
+ multimeter = {
+ "DEF:multimeter_avg={file}:value:AVERAGE",
+ "DEF:multimeter_min={file}:value:MIN",
+ "DEF:multimeter_max={file}:value:MAX",
+ "AREA:multimeter_max#" .. self.palette.HalfBlue,
+ "AREA:multimeter_min#" .. self.palette.Canvas,
+ "LINE1:multimeter_avg#" .. self.palette.FullBlue .. ":Multimeter",
+ "GPRINT:multimeter_min:MIN:%4.1lf Min,",
+ "GPRINT:multimeter_avg:AVERAGE:%4.1lf Average,",
+ "GPRINT:multimeter_max:MAX:%4.1lf Max,",
+ "GPRINT:multimeter_avg:LAST:%4.1lf Last\\l"
+ },
+
+ users = {
+ "-v", "Users",
+ "DEF:users_avg={file}:users:AVERAGE",
+ "DEF:users_min={file}:users:MIN",
+ "DEF:users_max={file}:users:MAX",
+ "AREA:users_max#" .. self.palette.HalfBlue,
+ "AREA:users_min#" .. self.palette.Canvas,
+ "LINE1:users_avg#" .. self.palette.FullBlue .. ":Users",
+ "GPRINT:users_min:MIN:%4.1lf Min,",
+ "GPRINT:users_avg:AVERAGE:%4.1lf Average,",
+ "GPRINT:users_max:MAX:%4.1lf Max,",
+ "GPRINT:users_avg:LAST:%4.1lf Last\\l"
+ },
+
+ voltage = {
+ "-v", "Voltage",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Voltage",
+ "GPRINT:min:MIN:%5.1lf%sV Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sV Avg,",
+ "GPRINT:max:MAX:%5.1lf%sV Max,",
+ "GPRINT:avg:LAST:%5.1lf%sV Last\\l"
+ },
+
+ vs_threads = {
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Threads",
+ "GPRINT:min:MIN:%5.1lf Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf Avg.,",
+ "GPRINT:max:MAX:%5.1lf Max,",
+ "GPRINT:avg:LAST:%5.1lf Last\\l",
+ },
+
+ vs_memory = {
+ "-b", "1024", "-v", "Bytes",
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":",
+ "GPRINT:min:MIN:%5.1lf%sbytes Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf%sbytes Avg.,",
+ "GPRINT:max:MAX:%5.1lf%sbytes Max,",
+ "GPRINT:avg:LAST:%5.1lf%sbytes Last\\l",
+ },
+
+ vs_processes = {
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#" .. self.palette.HalfBlue,
+ "AREA:min#" .. self.palette.Canvas,
+ "LINE1:avg#" .. self.palette.FullBlue .. ":Processes",
+ "GPRINT:min:MIN:%5.1lf Min,",
+ "GPRINT:avg:AVERAGE:%5.1lf Avg.,",
+ "GPRINT:max:MAX:%5.1lf Max,",
+ "GPRINT:avg:LAST:%5.1lf Last\\l",
+ },
+ }
+end
+
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/cpu/cpu.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/cpu/cpu.lua
new file mode 100644
index 0000000000..2626d276d1
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/cpu/cpu.lua
@@ -0,0 +1,31 @@
+module("luci.statistics.rrdtool.definitions.cpu.cpu",package.seeall)
+
+function rrdargs( graph, host, plugin, plugin_instance, dtype )
+
+ dtype_instances = { "idle", "nice", "system", "user" }
+
+ opts = { }
+ opts.sources = { }
+ opts.image = graph:mkpngpath( host, plugin, plugin_instance, dtype )
+ opts.title = host .. ": Prozessorauslastung"
+ opts.rrd = { "-v", "Percent" }
+ opts.colors = {
+ idle = 'ffffff',
+ nice = '00e000',
+ user = '0000ff',
+ wait = 'ffb000',
+ system = 'ff0000',
+ softirq = 'ff00ff',
+ interrupt = 'a000a0',
+ steal = '000000'
+ }
+
+ for i, inst in ipairs(dtype_instances) do
+ opts.sources[i] = {
+ name = inst,
+ rrd = graph:mkrrdpath( host, plugin, plugin_instance, dtype, inst )
+ }
+ end
+
+ return opts
+end
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/iptables/ipt_packets.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/iptables/ipt_packets.lua
new file mode 100644
index 0000000000..b16add995d
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/iptables/ipt_packets.lua
@@ -0,0 +1,26 @@
+module("luci.statistics.rrdtool.definitions.iptables.ipt_packets", package.seeall)
+
+function rrdargs( graph, host, plugin, plugin_instance, dtype )
+
+ dtype_instances = graph.tree:data_instances( plugin, plugin_instance, dtype )
+ opts = { }
+
+ for i, inst in ipairs(dtype_instances) do
+
+ opts[i] = { }
+ opts[i].image = graph:mkpngpath( host, plugin, plugin_instance, dtype, inst )
+ opts[i].title = host .. ": Firewall - " .. inst:gsub("_"," ")
+ opts[i].rrd = { "-v", "Pakete/s" }
+
+ opts[i].colors = {
+
+ }
+
+ opts[i].sources = { {
+ name = inst,
+ rrd = graph:mkrrdpath( host, plugin, plugin_instance, dtype, inst )
+ } }
+ end
+
+ return opts
+end
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua
new file mode 100644
index 0000000000..3cee6abc00
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/netlink.lua
@@ -0,0 +1,163 @@
+module("luci.statistics.rrdtool.definitions.netlink", package.seeall)
+
+function rrdargs( graph, host, plugin, plugin_instance )
+
+ local diagram_list = { }
+
+ -- diagram names
+ local dtypes_names = {
+ "Pakete",
+ "Paketkollisionen",
+ "Paketfehler",
+ "Verkehr",
+ "RX-Fehler",
+ "TX-Fehler"
+ }
+
+ -- diagram units
+ local dtypes_units = {
+ "Pakete/s",
+ "Kollisionen/s",
+ "Fehler/s", -- (?)
+ "Bytes/s",
+ "Fehler/s",
+ "Fehler/s"
+ }
+
+ -- data source overrides
+ local dtypes_sources = {
+ if_errors = { "rx", "tx" }, -- if_errors has rx and tx
+ if_octets = { "rx", "tx" } -- if_octets has rx and tx
+ }
+
+ -- diagram data types
+ local dtypes_list = {
+
+ -- diagram 1: combined interface packet statistics
+ {
+ if_dropped = { "" }, -- packets/s
+ if_multicast = { "" }, -- packets/s
+ if_packets = { "" } -- packets/s
+ },
+
+ -- diagram 2: interface collision statistics
+ {
+ if_collisions = { "" } -- collisions/s
+ },
+
+ -- diagram 3: interface error statistics
+ {
+ if_errors = { "" } -- errors/s (?)
+ },
+
+ -- diagram 4: interface traffic statistics
+ {
+ if_octets = { "" } -- bytes/s
+ },
+
+ -- diagram 5: interface rx error statistics
+ {
+ if_rx_errors = { -- errors/s
+ "length", "missed", "over", "crc", "fifo", "frame"
+ }
+ },
+
+ -- diagram 6: interface tx error statistics
+ {
+ if_tx_errors = { -- errors/s
+ "aborted", "carrier", "fifo", "heartbeat", "window"
+ }
+ }
+ }
+
+ -- diagram colors
+ local dtypes_colors = {
+
+ -- diagram 1
+ {
+ if_dropped = "ff0000",
+ if_multicast = "0000ff",
+ if_packets = "00ff00"
+ },
+
+ -- diagram 2
+ {
+ if_collisions = "ff0000"
+ },
+
+ -- diagram 3
+ {
+ if_errors__tx_ = "ff0000",
+ if_errors__rx_ = "ff5500"
+ },
+
+ -- diagram 4
+ {
+ if_octets__tx_ = "00ff00",
+ if_octets__rx_ = "0000ff"
+ },
+
+ -- diagram 5
+ {
+ length = "0000ff",
+ missed = "ff5500",
+ over = "ff0066",
+ crc = "ff0000",
+ fifo = "00ff00",
+ frame = "ffff00"
+ },
+
+ -- diagram 6
+ {
+ aborted = "ff0000",
+ carrier = "ffff00",
+ fifo = "00ff00",
+ heartbeat = "0000ff",
+ window = "8800ff"
+ }
+ }
+
+
+ for i, name in ipairs(dtypes_names) do
+
+ local dtypes = dtypes_list[i]
+ local opts = { }
+
+ opts.sources = { }
+ opts.image = graph:mkpngpath( host, plugin, plugin_instance, "netlink" .. i )
+ opts.title = host .. ": Netlink Statistiken - " .. name .. " auf " .. plugin_instance
+ opts.rrd = { "-v", dtypes_units[i] }
+ opts.colors = dtypes_colors[i]
+
+ for dtype, dinstances in pairs(dtypes) do
+ for i, inst in ipairs(dinstances) do
+
+ local name = inst
+ if name:len() == 0 then name = dtype end
+
+ -- check for data source override
+ if dtypes_sources[dtype] then
+
+ -- has override
+ for i, ds in ipairs(dtypes_sources[dtype]) do
+ table.insert( opts.sources, {
+ ds = ds, -- override
+ name = name .. " (" .. ds .. ")",
+ rrd = graph:mkrrdpath( host, plugin, plugin_instance, dtype, inst )
+ } )
+ end
+ else
+ -- no override, assume single "value" data source
+ table.insert( opts.sources, {
+ name = name,
+ rrd = graph:mkrrdpath( host, plugin, plugin_instance, dtype, inst )
+ } )
+ end
+ end
+ end
+
+ table.insert( diagram_list, opts )
+ end
+
+ return diagram_list
+end
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/ping/ping.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/ping/ping.lua
new file mode 100644
index 0000000000..b041c015da
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/ping/ping.lua
@@ -0,0 +1,23 @@
+module("luci.statistics.rrdtool.definitions.ping.ping", package.seeall)
+
+function rrdargs( graph, host, plugin, plugin_instance, dtype )
+
+ dtype_instances = graph.tree:data_instances( plugin, plugin_instance, dtype )
+
+ opts = { }
+ opts.sources = { }
+ opts.image = graph:mkpngpath( host, plugin, plugin_instance, dtype )
+ opts.title = host .. ": Pingzeiten"
+ opts.rrd = { "-v", "Millisekunden" }
+ opts.colors = { }
+
+ for i, inst in ipairs(dtype_instances) do
+ opts.sources[i] = {
+ ds = "ping",
+ name = inst,
+ rrd = graph:mkrrdpath( host, plugin, plugin_instance, dtype, inst )
+ }
+ end
+
+ return opts
+end
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/processes/ps_state.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/processes/ps_state.lua
new file mode 100644
index 0000000000..07cbe1d4af
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/processes/ps_state.lua
@@ -0,0 +1,31 @@
+module("luci.statistics.rrdtool.definitions.processes.ps_state", package.seeall)
+
+function rrdargs( graph, host, plugin, plugin_instance, dtype )
+
+ dtype_instances = {
+ "sleeping", "running", "paging", "blocked", "stopped", "zombies"
+ }
+
+ opts = { }
+ opts.sources = { }
+ opts.image = graph:mkpngpath( host, plugin, plugin_instance, dtype )
+ opts.title = host .. ": Prozesse"
+ opts.rrd = { "-v", "Anzahl" }
+ opts.colors = {
+ sleeping = "008080",
+ running = "008000",
+ paging = "ffff00",
+ blocked = "ff5000",
+ stopped = "555555",
+ zombies = "ff0000"
+ }
+
+ for i, inst in ipairs(dtype_instances) do
+ opts.sources[i] = {
+ name = inst,
+ rrd = graph:mkrrdpath( host, plugin, plugin_instance, "ps_state", inst )
+ }
+ end
+
+ return opts
+end
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/tcpconns/tcp_connections.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/tcpconns/tcp_connections.lua
new file mode 100644
index 0000000000..0493574948
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/tcpconns/tcp_connections.lua
@@ -0,0 +1,27 @@
+module("luci.statistics.rrdtool.definitions.tcpconns.tcp_connections", package.seeall)
+
+function rrdargs( graph, host, plugin, plugin_instance, dtype )
+
+ dtype_instances = {
+ "SYN_SENT", "SYN_RECV", "LISTEN", "ESTABLISHED", "LAST_ACK", "TIME_WAIT",
+ "CLOSING", "CLOSE_WAIT", "CLOSED", "FIN_WAIT1", "FIN_WAIT2"
+ }
+
+ opts = { }
+ opts.sources = { }
+ opts.image = graph:mkpngpath( host, plugin, plugin_instance, dtype )
+ opts.title = host .. ": TCP-Verbindungen - Port " .. plugin_instance
+ opts.rrd = { "-v", "Anzahl" }
+ opts.colors = {
+
+ }
+
+ for i, inst in ipairs(dtype_instances) do
+ opts.sources[i] = {
+ name = inst,
+ rrd = graph:mkrrdpath( host, plugin, plugin_instance, dtype, inst )
+ }
+ end
+
+ return opts
+end
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/wireless.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/wireless.lua
new file mode 100644
index 0000000000..e315ca5210
--- /dev/null
+++ b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/wireless.lua
@@ -0,0 +1,25 @@
+module("luci.statistics.rrdtool.definitions.wireless", package.seeall)
+
+function rrdargs( graph, host, plugin, plugin_instance )
+
+ dtypes = { "signal_power", "signal_noise" }
+
+ opts = { }
+ opts.sources = { }
+ opts.image = graph:mkpngpath( host, plugin, plugin_instance, "wireless" )
+ opts.title = host .. ": WLAN Signal"
+ opts.rrd = { "-v", "dBm" }
+ opts.colors = {
+ signal_power = '0000ff',
+ signal_noise = 'ff0000'
+ }
+
+ for i, dtype in ipairs(dtypes) do
+ opts.sources[i] = {
+ name = dtype,
+ rrd = graph:mkrrdpath( host, plugin, plugin_instance, dtype )
+ }
+ end
+
+ return opts
+end