aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'www-apps/rpi-monitor/files/default.conf-2.5.patch')
-rw-r--r--www-apps/rpi-monitor/files/default.conf-2.5.patch570
1 files changed, 570 insertions, 0 deletions
diff --git a/www-apps/rpi-monitor/files/default.conf-2.5.patch b/www-apps/rpi-monitor/files/default.conf-2.5.patch
new file mode 100644
index 00000000..d4c0f32a
--- /dev/null
+++ b/www-apps/rpi-monitor/files/default.conf-2.5.patch
@@ -0,0 +1,570 @@
+--- rpimonitor/default.conf.dist 2013-11-18 00:07:10.246681309 +0000
++++ rpimonitor/default.conf 2013-11-18 01:11:49.972391320 +0000
+@@ -1,71 +1,73 @@
+ ########################################################################
+ # KPI extraction configuration
+ #
+-# This part of the configuration file is defining which data to
+-# extract how to extract then and when.
++# This configuration file defines how and when data should be
++# extracted.
+ #
+-# Static KPI are extracted once at rpimonitord startup. Each statistic
+-# is identified into the conf file by a line stating with the keyword
+-# static and an identifier <static data id>
++# Static items are extracted once on rpimonitord startup. Each
++# statistic is specified below by a line starting with the keyword
++# 'static' and followed by a numerical unique identifier.
+ #
+-# Each static KPI is defined by an id and with 4 parameters
++# Each static item has four further parameters:
+ #
+ # static.<static data id>.name=<data name>
+-# <data name> is a string representing the KPI or the list of KPI
+-# separated by comma. Each name has to be unique.
+-# Only alpha numerical charter and underscore are accepted.
+-#
+-# static.<static data id>.source=<data source>
+-# <data source> is a file or an executable file within the path.
+-# If the file exists, rpimonitord will read its content. If the file
+-# is not existing, rpimonirotd will try to execute it and will parse
+-# the output.
++# <data name> is the string represention the item (or comma-separated
++# items) being defined. Each name must be unique.
++# Only alpha-numeric charaters and underscores are valid in item
++# names.
++#
++# static.<static data id>.source=<data source>[,<data source,...]
++# <data source> may be a file or an executable from which content
++# can be read. If a full path is not provided, rpimonitord will
++# first attempt to read from a file with the specified name and,
++# failing this, will attempt to execute a binary of the same name
++# within any directory specified in the contents of the PATH
++# vaiable.
+ # Warning: specifying an executable by its absolute name will tell
+ # rpimonitord to read the content of the executable.1.graph.
+ #
+-# static.<static data id>.regexp=<data regexp>
+-# <data regexp> is the regular expression extracting information from
+-# data source. Regexp groups () has to be used to extract the data
+-# In case of KPI list, each group will be affected to a KPI name.
++# static.<static data id>.regexp=<data regex>
++# <data regex> is an optional regular expression which may be
++# applied to extract information from the designated source value,
++# as above. Data matching a Perl-Compatible/Extended Regular
++# Expression group (e.g. matches within round-brackets) will be
++# selected to represent this <data source>.
++# Where a list of <data source>s is defined, each sequential group
++# match will be assigned to each <data source> in turn.
+ #
+ # static.<static data id>.postprocess=<data postprocess>
+-# <data postprocess> is an expression defining the postprocessing to
+-# be applied on result. KPI are idendified by $1. In case of list,
+-# other KPI are identified by $2, $3 .graph..
+-# This parameter will be evaluate by the command eval of perl.
+-#
+-# Dynamic KPI are extracted periodically (defined by daemon.delay)
+-# Each statistic is identified into the conf file by a line stating
+-# with the keyword dynamic and an identifier <dynamic data id>
++# <data postprocess> is an optional expression specifying any
++# postprocessing which should be applied to the raw <data source>, or
++# the <data regex> output if defined.
++# The first <data source> is referenced as '$1', with further <data
++# source>s in a list being referred to as '$2', '$3', etc.
++# The expression will be evaluated via the Perl 'eval' command.
++#
++# Dynamic items are periodically evaluated with an interval specified by
++# 'daemon.delay' in /etc/rpimonitord.conf. Each statistic is defined
++# by the 'dynamic' keyword followed by a <dynamic data id> identifier
++# and five further parameters:
+ #
+-# Each dynamic KPI is defined by an id and with 5 parameters
+-#
+-# dynamic.<dynamic data id>.name=<data name>
++# dynamic.<dynamic data id>.name=<data name>[,<data name>,...]
+ # dynamic.<dynamic data id>.source=<data source>
+-# dynamic.<dynamic data id>.regexp=<data regexp>
++# dynamic.<dynamic data id>.regexp=<data regex>
+ # dynamic.<dynamic data id>.postprocess=<data postprocess>
+-# <data name>, <data source>, <data regexp>, <data postprocess>
+-# This 4 first parameters have the same signification as for static
+-# parameters.
+-#
+-# dynamic.<dynamic data id>.rrd=<|GAUGE|COUNTER|DERIVE|ABSOLUTE|COMPUTE>
+-# The 5th parameter is defining if the KPI has to be stored into a RRD
+-# database and how <|GAUGE|COUNTER|DERIVE|ABSOLUTE|COMPUTE>. If the
+-# parameter is defined as empty, no RRD database will be created. If
+-# this parameter is defined, a RRD database will be created and data
+-# will be stored at every extraction.
+-# Ref http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html for RRD
+-# parameter description.
+-# dynamic.<dynamic data id>.min=<minimal value acceptable in RRD>
+-# dynamic.<dynamic data id>.max=<miximal value acceptable in RRD>
+-# If a value extracted by is less than minimal of greater than maximal
+-# value, it will be stored int RRD database as unknown.
+-# These limits are usefull to handle counter that fall down to 0 when
+-# they reach their limit (Ex: network graphs)
+-#
+-# Note: Static values are accessible for the post processing using the
+-# variable $this->{'static'}->{'static_data_name'} and can be used.
+-# You can refer to swap data extraction to see an example.
++# <data name>, <data source>, <data regex>, and <data postprocess>
++# have the same meanings as when used with static items.
++#
++# dynamic.<dynamic data id>.rrd=<GAUGE|COUNTER|DERIVE|ABSOLUTE|COMPUTE>
++# The fifth parameter determines whether the item's data should be
++# stored in an Round-Robin Database, and how it should be
++# represented. A blank entry will prevent RRD creation.
++# See http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html for
++# details of the RRD different RRD options.
++#
++# NB: Values associated with named static items are available for use
++# during post-processing with the notation:
++#
++# $this->{'static'}->{'static_data_name'}
++#
++# See the dynamic item named 'swap_used' for a real-world example.
+ #
+ ########################################################################
+ static.1.name=distribution
+@@ -88,119 +90,158 @@
+ static.4.regexp=(?:Processor|model name)\s+: (.*)
+ static.4.postprocess=
+
+-static.5.name=memory_total
+-static.5.source=/proc/meminfo
+-static.5.regexp=MemTotal:\s+(\d+)
+-static.5.postprocess=$1/1024
+-
+-static.6.name=swap_total
+-static.6.source=/proc/meminfo
+-static.6.regexp=SwapTotal:\s+(\d+)
+-static.6.postprocess=$1/1024
+-
+-static.7.name=sdcard_root_total
+-static.7.source=df -t ext4
+-static.7.regexp=root\s+(\d+)
+-static.7.postprocess=$1/1024
+-
+-static.8.name=sdcard_boot_total
+-static.8.source=df -t vfat
+-static.8.regexp=mmcblk0p.\s+(\d+).*\/boot$
++static.5.name=hardware
++static.5.source=/proc/cpuinfo
++static.5.regexp=Hardware\s+: (.*)
++static.5.postprocess=
++
++static.6.name=revision
++static.6.source=/proc/cpuinfo
++static.6.regexp=Revision\s+: 0*(.*)
++static.6.postprocess=
++
++static.7.name=serial
++static.7.source=/proc/cpuinfo
++static.7.regexp=Serial\s+: (.*)
++static.7.postprocess=
++
++static.8.name=sdcard_root_total
++static.8.source=df /
++static.8.regexp=^[^\s]+\s+(\d+)
+ static.8.postprocess=$1/1024
+
++static.9.name=sdcard_boot_total
++static.9.source=df /boot
++static.9.regexp=^[^\s]+\s+(\d+)
++static.9.postprocess=$1/1024
++
++static.11.name=tmpfs_ram_total
++static.11.source=df /mnt/ram
++static.11.regexp=^[^\s]+\s+(\d+)
++static.11.postprocess=$1/1024
++
+ ##############################################################################
+-dynamic.1.name=upgrade
+-dynamic.1.source=/usr/share/rpimonitor/updatestatus.txt
+-dynamic.1.regexp=(\d+ upgraded, \d+ .*|.*&nbsp;.*)
++#dynamic.1.name=upgrade
++#dynamic.1.source=/usr/share/rpimonitor/updatestatus.txt
++#dynamic.1.regexp=(\d+ upgraded, \d+ .*|.*&nbsp;.*)
++#dynamic.1.postprocess=
++#dynamic.1.rrd=
++#
++#dynamic.2.name=packages
++#dynamic.2.source=/usr/share/rpimonitor/updatestatus.txt
++#dynamic.2.regexp=^ (.*)\d+ upgraded,
++#dynamic.2.postprocess=
++#dynamic.2.rrd=
++
++dynamic.1.name=scaling_governor
++dynamic.1.source=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
++dynamic.1.regexp=(.*)
+ dynamic.1.postprocess=
+ dynamic.1.rrd=
+
+-dynamic.2.name=packages
+-dynamic.2.source=/usr/share/rpimonitor/updatestatus.txt
+-dynamic.2.regexp=^ (.*)\d+ upgraded,
+-dynamic.2.postprocess=
+-dynamic.2.rrd=
+-
+-dynamic.3.name=cpu_frequency
+-dynamic.3.source=/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
+-dynamic.3.regexp=(.*)
+-dynamic.3.postprocess=$1/1000
+-dynamic.3.rrd=
+-
+-dynamic.4.name=cpu_voltage
+-dynamic.4.source=vcgencmd measure_volts core
+-dynamic.4.regexp=(\d+.\d+)V
++dynamic.2.name=cpu_frequency
++dynamic.2.source=/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
++dynamic.2.regexp=(.*)
++dynamic.2.postprocess=$1/1000
++dynamic.2.rrd=GAUGE
++
++dynamic.3.name=cpu_voltage
++dynamic.3.source=/opt/vc/bin/vcgencmd measure_volts core
++dynamic.3.regexp=(\d+.\d+)V
++dynamic.3.postprocess=
++dynamic.3.rrd=GAUGE
++
++dynamic.4.name=load1,load5,load15
++dynamic.4.source=/proc/loadavg
++dynamic.4.regexp=^(\S+)\s(\S+)\s(\S+)
+ dynamic.4.postprocess=
+-dynamic.4.rrd=
++dynamic.4.rrd=GAUGE
+
+-dynamic.5.name=load1,load5,load15
+-dynamic.5.source=/proc/loadavg
+-dynamic.5.regexp=^(\S+)\s(\S+)\s(\S+)
+-dynamic.5.postprocess=
++dynamic.5.name=sdcard_root_used
++dynamic.5.source=df /
++dynamic.5.regexp=^[^\s]+\s+\d+\s+(\d+)
++dynamic.5.postprocess=$1/1024
+ dynamic.5.rrd=GAUGE
+
+-dynamic.6.name=sdcard_root_used
+-dynamic.6.source=df -t ext4
+-dynamic.6.regexp=root\s+\d+\s+(\d+)
++dynamic.6.name=sdcard_boot_used
++dynamic.6.source=df /boot
++dynamic.6.regexp=^[^\s]+\s+\d+\s+(\d+)
+ dynamic.6.postprocess=$1/1024
+ dynamic.6.rrd=GAUGE
+
+-dynamic.7.name=sdcard_boot_used
+-dynamic.7.source=df -t vfat
+-dynamic.7.regexp=mmcblk0p.\s+\d+\s+(\d+).*\/boot$
+-dynamic.7.postprocess=$1/1024
+-dynamic.7.rrd=GAUGE
+-
+-dynamic.8.name=swap_used
+-dynamic.8.source=/proc/meminfo
+-dynamic.8.regexp=SwapFree:\s+(\d+)
+-dynamic.8.postprocess=$this->{'static'}->{'swap_total'} - ($1/1024)
++dynamic.8.name=tmpfs_ram_used
++dynamic.8.source=df /mnt/ram
++dynamic.8.regexp=^[^\s]+\s+\d+\s+(\d+)
++dynamic.8.postprocess=$1/1024
+ dynamic.8.rrd=GAUGE
+
+-dynamic.9.name=memory_free
++dynamic.9.name=swap_total
+ dynamic.9.source=/proc/meminfo
+-dynamic.9.regexp=MemFree:\s+(\d+)
++dynamic.9.regexp=SwapTotal:\s+(\d+)
+ dynamic.9.postprocess=$1/1024
+ dynamic.9.rrd=GAUGE
+
+-dynamic.10.name=net_received
+-dynamic.10.source=/sys/class/net/eth0/statistics/rx_bytes
+-dynamic.10.regexp=(.*)
+-dynamic.10.postprocess=$1*-1
+-dynamic.10.rrd=DERIVE
+-dynamic.10.max=0
+-
+-dynamic.11.name=net_send
+-dynamic.11.source=/sys/class/net/eth0/statistics/tx_bytes
+-dynamic.11.regexp=(.*)
++dynamic.10.name=swap_used
++dynamic.10.source=/proc/meminfo
++dynamic.10.regexp=SwapFree:\s+(\d+)
++dynamic.10.postprocess=$this->{'dynamic'}->{'swap_total'} - ($1/1024)
++dynamic.10.rrd=GAUGE
++
++dynamic.11.name=memory_total
++dynamic.11.source=/opt/vc/bin/vcgencmd get_mem arm
++dynamic.11.regexp=^.*=(\d+)M$
+ dynamic.11.postprocess=
+-dynamic.11.rrd=DERIVE
+-dynamic.11.min=0
++dynamic.11.rrd=GAUGE
+
+-dynamic.12.name=soc_temp
+-dynamic.12.source=/sys/devices/virtual/thermal/thermal_zone0/temp
+-dynamic.12.regexp=(.*)
+-dynamic.12.postprocess=$1/1000
++dynamic.12.name=memory_gpu
++dynamic.12.source=/opt/vc/bin/vcgencmd get_mem gpu
++dynamic.12.regexp=^.*=(\d+)M$
++dynamic.12.postprocess=
+ dynamic.12.rrd=GAUGE
+
+-dynamic.13.name=uptime
+-dynamic.13.source=/proc/uptime
+-dynamic.13.regexp=(^\S+)
+-dynamic.13.postprocess=
++dynamic.13.name=memory_free
++dynamic.13.source=/proc/meminfo
++dynamic.13.regexp=MemFree:\s+(\d+)
++dynamic.13.postprocess=$1/1024
+ dynamic.13.rrd=GAUGE
+
+-dynamic.14.name=scaling_governor
+-dynamic.14.source=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
+-dynamic.14.regexp=(.*)
+-dynamic.14.postprocess=
+-dynamic.14.rrd=
++dynamic.14.name=memory_used
++dynamic.14.source=/proc/meminfo
++dynamic.14.regexp=MemFree:\s+(\d+)
++dynamic.14.postprocess=$this->{'dynamic'}->{'memory_total'} - ($1/1024)
++dynamic.14.rrd=GAUGE
+
+ dynamic.15.name=memory_available
+-dynamic.15.source=/usr/bin/free -mk
++dynamic.15.source=/usr/bin/free -k
+ dynamic.15.regexp=^-\/\+ buffers\/cache:\s+\d+\s+(\d+)
+ dynamic.15.postprocess=$1/1024
+ dynamic.15.rrd=GAUGE
+
++dynamic.16.name=net_received
++dynamic.16.source=/sys/class/net/eth0/statistics/rx_bytes
++dynamic.16.regexp=(.*)
++dynamic.16.postprocess=$1*-1
++dynamic.16.rrd=DERIVE
++dynamic.16.max=0
++
++dynamic.17.name=net_send
++dynamic.17.source=/sys/class/net/eth0/statistics/tx_bytes
++dynamic.17.regexp=(.*)
++dynamic.17.postprocess=
++dynamic.17.rrd=DERIVE
++dynamic.17.min=0
++
++dynamic.18.name=soc_temp
++dynamic.18.source=/sys/devices/virtual/thermal/thermal_zone0/temp
++dynamic.18.regexp=(.*)
++dynamic.18.postprocess=int($1/10)/100
++dynamic.18.rrd=GAUGE
++
++dynamic.19.name=uptime
++dynamic.19.source=/proc/uptime
++dynamic.19.regexp=(^\S+)
++dynamic.19.postprocess=
++dynamic.19.rrd=GAUGE
+
+ ########################################################################
+ # Web interface configuration
+@@ -325,13 +366,16 @@
+
+ #######################################################################
+ web.status.1.name=Raspberry Pi
++
+ web.status.1.content.1.name=Version
+ web.status.1.content.1.icon=version.png
+ web.status.1.content.1.line.1='Processor: <b>' + data.processor + '</b>'
+-web.status.1.content.1.line.2='Distribution: <b>'+ data.distribution + '</b>'
+-web.status.1.content.1.line.3='Kernel version: <b>' + data.kernel_version + '</b>'
+-web.status.1.content.1.line.4='Firmware: <b>' + data.firmware + '</b>'
+-web.status.1.content.1.line.5='Package(s) to be: <b>' + data.upgrade + '</b>' + ShowInfo('packages','Package update',data.packages)
++web.status.1.content.1.line.2='Hardware: <b>' + data.hardware + '</b> revision <b>' + data.revision + '</b>'
++web.status.1.content.1.line.3='Serial number: <b>' + data.serial + '</b>'
++web.status.1.content.1.line.4='Distribution: <b>'+ data.distribution + '</b>'
++web.status.1.content.1.line.5='Kernel version: <b>' + data.kernel_version + '</b>'
++web.status.1.content.1.line.6='Firmware: <b>' + data.firmware + '</b>'
++#web.status.1.content.1.line.7='Package(s) to be: <b>' + data.upgrade + '</b>' + ShowInfo('packages','Package update',data.packages)
+
+ web.status.1.content.2.name=Uptime
+ web.status.1.content.2.icon=uptime.png
+@@ -350,8 +394,9 @@
+
+ web.status.1.content.5.name=Memory
+ web.status.1.content.5.icon=memory.png
+-web.status.1.content.5.line.1="Used: <b>" + KMG(data.memory_total-data.memory_available,'M') + "</b> (<b>" + Percent(data.memory_total-data.memory_available,data.memory_total,'M') + "</b>) Available: <b>" + KMG(data.memory_available,'M') + "</b> Total: <b>" + KMG(data.memory_total,'M') + "</b>"
+-web.status.1.content.5.line.2=ProgressBar(data.memory_total-data.memory_available,data.memory_total)
++web.status.1.content.5.line.1="Used: <b>" + KMG(data.memory_used,'M') + "</b> (<b>" + Percent(data.memory_used,data.memory_total,'M') + "</b>) Available: <b>" + KMG(data.memory_available,'M') + "</b> Free: <b>" + KMG(data.memory_free,'M') + "</b> Total: <b>" + KMG(data.memory_total,'M') + "</b>"
++web.status.1.content.5.line.2="GPU: <b>" + KMG(data.memory_gpu,'M') + "</b>"
++web.status.1.content.5.line.3=ProgressBar(data.memory_used,data.memory_total)
+
+ web.status.1.content.6.name=Swap
+ web.status.1.content.6.icon=swap.png
+@@ -365,74 +410,99 @@
+ web.status.1.content.7.line.3="<b>/</b> Used: <b>"+KMG(data.sdcard_root_used,'M') + "</b> (<b>" + Percent(data.sdcard_root_used,data.sdcard_root_total,'M')+"</b>) Free: <b>"+KMG(data.sdcard_root_total-data.sdcard_root_used,'M')+ "</b> Total: <b>"+ KMG(data.sdcard_root_total,'M') + "</b>"
+ web.status.1.content.7.line.4=ProgressBar(data.sdcard_root_used,data.sdcard_root_total)
+
+-web.status.1.content.8.name=Network
+-web.status.1.content.8.icon=network.png
+-web.status.1.content.8.line.1="Ethernet Sent: <b>"+KMG(data.net_send)+"<i class='icon-arrow-up'></i></b> Received: <b>"+KMG(Math.abs(data.net_received)) + "<i class='icon-arrow-down'></i></b>"
++web.status.1.content.8.name=RAM fs
++web.status.1.content.8.icon=memory.png
++web.status.1.content.8.line.1="Used: <b>"+KMG(data.tmpfs_ram_used,'M')+"</b> (<b>"+Percent(data.tmpfs_ram_used,data.tmpfs_ram_total,'M')+"</b>) Free: <b>"+KMG(data.tmpfs_ram_total-data.tmpfs_ram_used,'M')+ "</b> Total: <b>"+ KMG(data.tmpfs_ram_total,'M') + "</b>"
++web.status.1.content.8.line.2=ProgressBar(data.tmpfs_ram_used,data.tmpfs_ram_total)
++
++web.status.1.content.9.name=Network
++web.status.1.content.9.icon=network.png
++web.status.1.content.9.line.1="Ethernet Sent: <b>"+KMG(data.net_send)+"<i class='icon-arrow-up'></i></b> Received: <b>"+KMG(Math.abs(data.net_received)) + "<i class='icon-arrow-down'></i></b>"
+
+ #######################################################################
+ web.statistics.1.name=Raspberry Pi
+-web.statistics.1.content.1.name=CPU Loads
+-web.statistics.1.content.1.graph.1=load1
+-web.statistics.1.content.1.graph.2=load5
+-web.statistics.1.content.1.graph.3=load15
+-web.statistics.1.content.1.ds_graph_options.load1.label=Load 1min
+-web.statistics.1.content.1.ds_graph_options.load5.label=Load 5min
+-web.statistics.1.content.1.ds_graph_options.load15.label=Load 15min
+-
+-web.statistics.1.content.2.name=Network
+-web.statistics.1.content.2.graph.1=net_send
+-web.statistics.1.content.2.graph.2=net_received
+-web.statistics.1.content.2.graph_options.yaxis={ tickFormatter: function (v) { if (Math.abs(v) > 1048576) return (Math.round(v*10/1024/1024)/10) + " MiB/s" ; if (Math.abs(v) > 1024) return (Math.round(v*10/1024)/10) + " KiB/s" ; else return v + " B/s" }, }
+-web.statistics.1.content.2.ds_graph_options.net_send.label=Upload bandwidth (bytes)
+-web.statistics.1.content.2.ds_graph_options.net_send.lines={ fill: true }
+-web.statistics.1.content.2.ds_graph_options.net_send.color="#FF7777"
+-web.statistics.1.content.2.ds_graph_options.net_received.label=Download bandwidth (bytes)
+-web.statistics.1.content.2.ds_graph_options.net_received.lines={ fill: true }
+-web.statistics.1.content.2.ds_graph_options.net_received.color="#77FF77"
+-
+-web.statistics.1.content.3.name=Disks - boot
+-web.statistics.1.content.3.graph.1=sdcard_boot_total
+-web.statistics.1.content.3.graph.2=sdcard_boot_used
+-web.statistics.1.content.3.ds_graph_options.sdcard_boot_total.label=Size of /boot (MB)
+-web.statistics.1.content.3.ds_graph_options.sdcard_boot_total.color="#FF7777"
+-web.statistics.1.content.3.ds_graph_options.sdcard_boot_used.label=Used on /boot (MB)
+-web.statistics.1.content.3.ds_graph_options.sdcard_boot_used.lines={ fill: true }
+-web.statistics.1.content.3.ds_graph_options.sdcard_boot_used.color="#7777FF"
+-
+-web.statistics.1.content.4.name=Disks - root
+-web.statistics.1.content.4.graph.1=sdcard_root_total
+-web.statistics.1.content.4.graph.2=sdcard_root_used
+-web.statistics.1.content.4.ds_graph_options.sdcard_root_total.label=Size of / (MB)
+-web.statistics.1.content.4.ds_graph_options.sdcard_root_total.color="#FF7777"
+-web.statistics.1.content.4.ds_graph_options.sdcard_root_used.label=Used on / (MB)
+-web.statistics.1.content.4.ds_graph_options.sdcard_root_used.lines={ fill: true }
+-web.statistics.1.content.4.ds_graph_options.sdcard_root_used.color="#7777FF"
+-
+-web.statistics.1.content.5.name=Swap
+-web.statistics.1.content.5.graph.1=swap_total
+-web.statistics.1.content.5.graph.2=swap_used
+-web.statistics.1.content.5.ds_graph_options.swap_total.label=Swap size (MB)
+-web.statistics.1.content.5.ds_graph_options.swap_total.color="#FF7777"
+-web.statistics.1.content.5.ds_graph_options.swap_used.label=Swap used (MB)
+-web.statistics.1.content.5.ds_graph_options.swap_used.lines={ fill: true }
+-web.statistics.1.content.5.ds_graph_options.swap_used.color="#7777FF"
+-
+-web.statistics.1.content.6.name=Memory
+-web.statistics.1.content.6.graph.1=memory_total
+-web.statistics.1.content.6.graph.2=memory_free
+-web.statistics.1.content.6.graph.3=memory_available
+-web.statistics.1.content.6.ds_graph_options.memory_total.label=Total Memory(MB)
+-web.statistics.1.content.6.ds_graph_options.memory_free.label=Free Memory (MB)
+-web.statistics.1.content.6.ds_graph_options.memory_free.color="#7777FF"
+-web.statistics.1.content.6.ds_graph_options.memory_available.label=Available Memory (MB)
+-web.statistics.1.content.6.ds_graph_options.memory_available.color="#77FF77"
+-
+-web.statistics.1.content.7.name=Uptime
+-web.statistics.1.content.7.graph.1=uptime
+-web.statistics.1.content.7.graph_options.yaxis={ min:0, tickFormatter: function (v) { if (v > 86400) return (Math.round(v*10/60/60/24)/10) + " d" ; if (v > 3600) return (Math.round(v*10/60/60)/10) + " h" ; else return v + " s" }, }
+-web.statistics.1.content.7.ds_graph_options.uptime.label=Uptime (s/h/d)
+-
+-web.statistics.1.content.8.name=Temperature
+-web.statistics.1.content.8.graph.1=soc_temp
+-web.statistics.1.content.8.ds_graph_options.soc_temp.label=Core temperature (deg C)
++
++web.statistics.1.content.1.name=CPU Speed
++web.statistics.1.content.1.graph.1=cpu_frequency
++web.statistics.1.content.1.ds_graph_options.cpu_frequency.label=Frequency (MHz)
++web.statistics.1.content.1.ds_graph_options.cpu_frequency.color="#FF7777"
++
++web.statistics.1.content.2.name=CPU Loads
++web.statistics.1.content.2.graph.1=load1
++web.statistics.1.content.2.graph.2=load5
++web.statistics.1.content.2.graph.3=load15
++web.statistics.1.content.2.ds_graph_options.load1.label=Load (1 min)
++web.statistics.1.content.2.ds_graph_options.load5.label=Load (5 min)
++web.statistics.1.content.2.ds_graph_options.load15.label=Load (15 min)
++
++web.statistics.1.content.3.name=Network
++web.statistics.1.content.3.graph.1=net_send
++web.statistics.1.content.3.graph.2=net_received
++web.statistics.1.content.3.graph_options.yaxis={ tickFormatter: function (v) { if (Math.abs(v) > 1048576) return (Math.round(v*10/1024/1024)/10) + " MiB/s" ; if (Math.abs(v) > 1024) return (Math.round(v*10/1024)/10) + " KiB/s" ; else return v + " B/s" }, }
++web.statistics.1.content.3.ds_graph_options.net_send.label=Upload bandwidth (bytes)
++web.statistics.1.content.3.ds_graph_options.net_send.lines={ fill: true }
++web.statistics.1.content.3.ds_graph_options.net_send.color="#FF7777"
++web.statistics.1.content.3.ds_graph_options.net_received.label=Download bandwidth (bytes)
++web.statistics.1.content.3.ds_graph_options.net_received.lines={ fill: true }
++web.statistics.1.content.3.ds_graph_options.net_received.color="#77FF77"
++
++web.statistics.1.content.4.name=Disks - boot
++web.statistics.1.content.4.graph.1=sdcard_boot_total
++web.statistics.1.content.4.graph.2=sdcard_boot_used
++web.statistics.1.content.4.ds_graph_options.sdcard_boot_total.label=Size of /boot (MB)
++web.statistics.1.content.4.ds_graph_options.sdcard_boot_total.color="#FF7777"
++web.statistics.1.content.4.ds_graph_options.sdcard_boot_used.label=Used on /boot (MB)
++web.statistics.1.content.4.ds_graph_options.sdcard_boot_used.lines={ fill: true }
++web.statistics.1.content.4.ds_graph_options.sdcard_boot_used.color="#7777FF"
++
++web.statistics.1.content.5.name=Disks - root
++web.statistics.1.content.5.graph.1=sdcard_root_total
++web.statistics.1.content.5.graph.2=sdcard_root_used
++web.statistics.1.content.5.ds_graph_options.sdcard_root_total.label=Size of / (MB)
++web.statistics.1.content.5.ds_graph_options.sdcard_root_total.color="#FF7777"
++web.statistics.1.content.5.ds_graph_options.sdcard_root_used.label=Used on / (MB)
++web.statistics.1.content.5.ds_graph_options.sdcard_root_used.lines={ fill: true }
++web.statistics.1.content.5.ds_graph_options.sdcard_root_used.color="#7777FF"
++
++web.statistics.1.content.7.name=Swap
++web.statistics.1.content.7.graph.1=swap_total
++web.statistics.1.content.7.graph.2=swap_used
++web.statistics.1.content.7.ds_graph_options.swap_total.label=Swap size (MB)
++web.statistics.1.content.7.ds_graph_options.swap_total.color="#FF7777"
++web.statistics.1.content.7.ds_graph_options.swap_used.label=Swap used (MB)
++web.statistics.1.content.7.ds_graph_options.swap_used.lines={ fill: true }
++web.statistics.1.content.7.ds_graph_options.swap_used.color="#7777FF"
++
++web.statistics.1.content.8.name=Memory
++web.statistics.1.content.8.graph.1=memory_available
++web.statistics.1.content.8.graph.2=memory_free
++web.statistics.1.content.8.graph.3=memory_used
++web.statistics.1.content.8.graph.4=memory_total
++web.statistics.1.content.8.graph.5=memory_gpu
++web.statistics.1.content.8.graph.6=tmpfs_ram_total
++web.statistics.1.content.8.graph.7=tmpfs_ram_used
++web.statistics.1.content.8.ds_graph_options.memory_available.label=Available Memory (MB)
++web.statistics.1.content.8.ds_graph_options.memory_available.color="#77FF77"
++web.statistics.1.content.8.ds_graph_options.memory_free.label=Free Memory (MB)
++web.statistics.1.content.8.ds_graph_options.memory_free.color="#77FF77"
++web.statistics.1.content.8.ds_graph_options.memory_used.label=Used Memory (MB)
++web.statistics.1.content.8.ds_graph_options.memory_used.color="#FF7777"
++web.statistics.1.content.8.ds_graph_options.memory_total.label=Total Memory (MB)
++web.statistics.1.content.8.ds_graph_options.memory_total.color="#7777FF"
++web.statistics.1.content.8.ds_graph_options.memory_gpu.label=GPU Memory (MB)
++web.statistics.1.content.8.ds_graph_options.memory_gpu.lines={ fill: true }
++web.statistics.1.content.8.ds_graph_options.memory_gpu.color="#FFFF77"
++web.statistics.1.content.8.ds_graph_options.tmpfs_ram_total.label=Size of /mnt/ram (MB)
++web.statistics.1.content.8.ds_graph_options.tmpfs_ram_total.color="#FF77FF"
++web.statistics.1.content.8.ds_graph_options.tmpfs_ram_used.label=Used on /mnt/ram (MB)
++web.statistics.1.content.8.ds_graph_options.tmpfs_ram_used.color="#77FFFF"
++
++web.statistics.1.content.9.name=Uptime
++web.statistics.1.content.9.graph.1=uptime
++web.statistics.1.content.9.graph_options.yaxis={ min:0, tickFormatter: function (v) { if (v > 86400) return (Math.round(v*10/60/60/24)/10) + " days" ; if (v > 3600) return (Math.round(v*10/60/60)/10) + " hours" ; else return v + " seconds" }, }
++web.statistics.1.content.9.ds_graph_options.uptime.label=Uptime
++
++web.statistics.1.content.10.name=Temperature
++web.statistics.1.content.10.graph.1=soc_temp
++web.statistics.1.content.10.ds_graph_options.soc_temp.label=Core temperature (deg C)
+