diff options
author | Stuart Shelton <stuart@shelton.me> | 2013-11-19 14:48:18 +0000 |
---|---|---|
committer | Stuart Shelton <stuart@shelton.me> | 2013-11-19 14:48:18 +0000 |
commit | c7b96f57ba25e041fb93f4b211bb1d8195a3efbc (patch) | |
tree | 97d98d84d40e540c64a21e800bf0846fcd5f59fa /www-apps | |
parent | www-servers/lighttpd-1.4.33 (diff) | |
download | srcshelton-c7b96f57ba25e041fb93f4b211bb1d8195a3efbc.tar.gz srcshelton-c7b96f57ba25e041fb93f4b211bb1d8195a3efbc.tar.bz2 srcshelton-c7b96f57ba25e041fb93f4b211bb1d8195a3efbc.zip |
www-apps/rpi-monitor-2.5
Diffstat (limited to 'www-apps')
-rw-r--r-- | www-apps/rpi-monitor/Manifest | 4 | ||||
-rw-r--r-- | www-apps/rpi-monitor/files/default.conf-2.5.patch | 570 | ||||
-rw-r--r-- | www-apps/rpi-monitor/rpi-monitor-2.5.ebuild | 122 |
3 files changed, 696 insertions, 0 deletions
diff --git a/www-apps/rpi-monitor/Manifest b/www-apps/rpi-monitor/Manifest index 5e18ca88..99d02cd8 100644 --- a/www-apps/rpi-monitor/Manifest +++ b/www-apps/rpi-monitor/Manifest @@ -1,10 +1,14 @@ AUX default.conf-2.2.patch 24352 SHA256 f4eb0086d55cdda1889073bd8894f7bf203d997d15eff4170e1ff22b23f71094 SHA512 1ea81937d8c6a2b39aab951f4cb4fd3c0a6c9d63d2147ff0aff249a543efb3f574841c8d320fe88d463cdec8c1424f9abf3b8ceb018135d9d5d034c29e682f20 WHIRLPOOL b356e732c26eed507b06fa80d333d83425a93d51a20ad935f7fbcf9de2124010d4e2ddbee37da21ddfd4d9990335aa54db6e65d9825e7ac769bb4118824df849 AUX default.conf-2.3.patch 24271 SHA256 a6a890f808e57815fee2c2c513c8c423697d9744a56bad4a530994872ccf4ea8 SHA512 cdeef3311411c5110ea4c12c33253104f7edde4a9405212c4236dcb3cd61304ce5fded8ddb534be33f5559172c1af3236138b2d36a6128b98b53a6a5354affcc WHIRLPOOL 4763fd2d5d6620a30993852615f22a6b4dcae10967e681ba661fa3f5a6e41e6721f21b0497441058a65cd0b9f4f01c0e8b2a04560f637e9644dbe3bc37026544 +AUX default.conf-2.5.patch 26715 SHA256 3ae3bab4bd0162756dcbbd1b614043a519dae6e57f9528f95ac2093081c2b6aa SHA512 d8079ebe919101d7b9bd2814eae8bdaadfcbaf19cf89400871775f6cb25be7853089ce02d60c8c2bcee6ee8d20ebce2ed4c57bc6ae23b2c45a440803a0545d30 WHIRLPOOL b33b4ba6e00d0ae4fbbc09904aeb1922a015ffd4914e8aa9357899f73f30b884b1012bff039b23e126e639ef0867777e9ddf5aa4eac8f49573fce952a6f54353 AUX rpimonitor.confd 112 SHA256 b683366153e78b3f2e3040036315ed4bb6e97f6963dde609b3099551dc84795a SHA512 46c2f4340023f8b7957f604f1baa661eb4a97f54a2f6a03abf25525d9c7db78135dc556866cea416080398e6af84c7ac6c935e4230154f5164cb1535607e3395 WHIRLPOOL 869fc2d100e725d3f171d509b6bd997b9f9ada00600c237b30f8e6951cd7dc4fe4be2d72e343dba9caaab1b61c741cd3422cf137dd94bd7571be0c837d447ece AUX rpimonitor.initd 973 SHA256 d9ae46e6fa0eaef295736fc9bfc9b4c8af000d67bf4b102375c3ba21610e8653 SHA512 e9bab0b0f1fe8cb6425fa3ddef157df28ef3be344927dbff9d216cb57e31c57a7b79181999fa067e69c62364f5eb1a665d21efdbfd82fdf7dc8b1d54c9efbd1d WHIRLPOOL 3714306bc6b33150dd0ecb3128d044099ecaa92ac4c77b33f1289060bd6112671c8ea764715e3aabfbfd9ee962d6beecc20b180bc2b2583856467e75d0f86a2b DIST rpi-monitor-2.2.zip 292550 SHA256 e37f4be434c47a48c22e4db649e7960c9ab2e6c8851187a2628b71225121f25e SHA512 731a229097e7472e357af2b52ebebfeae65f73f91a44b3bb7c09c7ce72ddb55e2cdb1b03a9147094c359330a0e12e1b5ad9c754f2a3ce70e5a7287980643f4cc WHIRLPOOL 153e6e9a33c71255a787fceeb74d6f0c1ca15079682296f4971882781c62bc241a323ce9f1d91fa49cc5d2b4f541ae94b2da844bdc27ba2809cba1ffa02c1e5d DIST rpi-monitor-2.3.zip 292742 SHA256 67b458800d13dae4a1ccc38c11f1164c3438526c61f57ee810e5b9957399307f SHA512 90bfde85aad88425db8ed53a78e1e049ffecbe778ffae2fbc66915fa7e242b11e61a6ae5c6eb2805b326df8a0023d1b1d666f6c1fa21e68b9256c4e13c209fbc WHIRLPOOL 3b31bbf7c30da8111e6b8030f39513524ffe98dd74c95cdd48634229c7c1eb040abf183f5160a408a107c58a088de22aa34cfe37ca5ebe3133db2575a5b6bb56 +DIST rpi-monitor-2.5.zip 302926 SHA256 1f8e2225576faab8e991342bbee7ee4ff4598fd7813a9a5d237c3528690f044d SHA512 f95c535ebf353bc4ec308f8bd620c2521aae544012833e2dd77dd82457e070b5b13e86008225acba700c9e1eca416d8182cf64b6ab964b28e200c195a82df28e WHIRLPOOL 2409475bb52c01f8f726fbe49cd6b4185ffd7fe4150c20500a651460798753c0e4936892049283e921ec54f2542cb3964726e08f467849630cc4d8ecf4452683 DIST rpi-monitor-deb-2.2.zip 2127268 SHA256 04bd659402cda83df2d34fb38efce4db710f1c63ec41e1905cca9d4d3b41f516 SHA512 ed51fec16b0c23fe73c9b733d4cf8f655089d13c408803970a834d1f5c3a71df026814dd2b6d2ea0759e533e154185beca70eb7048468566cef55fb4ac7b6c2f WHIRLPOOL 006bb1f20f1d6e54e73e1f7f8b6eeb85e75219190450dcd16d2104f555f75dc5751034b1f62af7923137da260f730390c2d668860825cd61d4d6548a23f0e1b3 DIST rpi-monitor-deb-2.3.zip 2393064 SHA256 63c0c6cb822c55b693a1741cdca26a316df8508049c741b0b6e8268c655b705d SHA512 88125b79ce6a0e4466c469e8e344a74eddd2aecb9c046c08251da99c90192f9174bfcb722df5ea79a979da44193b76a6b434f5a9af1d8fe2a02e5c38e0e335b8 WHIRLPOOL bb2d05510cf5577762b14dc95537ae359df979327824943d6710b2038c9982cbd67a1f712acec1f6586de9efa36a51dea841a836de4a84d2a6d03304c92dd708 +DIST rpi-monitor-deb-2.5.zip 2940038 SHA256 8fea9b70de86ca6b1548e0960d31d86ebea8c22ba0aec9683a4ece5ec82cc215 SHA512 4d4dcabaae9533e01f7ae93ed2eaf28e9a86962b30f0ba9d785b8de62f9398e6bddc5619b34d3cd2f1abac7a293bacdb1e28ae0446b1c16dc31bda9891e52024 WHIRLPOOL 5a2c59350ce40a5b7982d425fc41df4901bcf06c457ea9e3e85d18b79739c491b831bfe33cc99fc868edaa2a28030faf82fc19cda40b4b214990bb94a4ec210d EBUILD rpi-monitor-2.2.ebuild 3466 SHA256 acb9997f49bb6662e7fef87d8c1f0f1ceb0ff6a608090a5be9e542475b891587 SHA512 333211f505096f667af8037b1a94aa80635eff5ac668002225ed32ba74cf1b6c3d79842b58b84605d3928f74bfad0ccee791396c48eb9bef1b039bfc7641b3cc WHIRLPOOL 866bb749de15a15ffd437f893306b0d3a722d3266e95357d2eba18ac4cd6c7fc036997faa7e594d860e5c210e43e47cd5b538fbd227caf34c35aecfe77b581b7 EBUILD rpi-monitor-2.3.ebuild 3466 SHA256 acb9997f49bb6662e7fef87d8c1f0f1ceb0ff6a608090a5be9e542475b891587 SHA512 333211f505096f667af8037b1a94aa80635eff5ac668002225ed32ba74cf1b6c3d79842b58b84605d3928f74bfad0ccee791396c48eb9bef1b039bfc7641b3cc WHIRLPOOL 866bb749de15a15ffd437f893306b0d3a722d3266e95357d2eba18ac4cd6c7fc036997faa7e594d860e5c210e43e47cd5b538fbd227caf34c35aecfe77b581b7 +EBUILD rpi-monitor-2.5.ebuild 3490 SHA256 324fa89b0eff1cab5b740f508d58df570c8752aece19d23e04c08c99a8f872bb SHA512 71ffffcccef5ae31262e91651d8097e8d3cf8e66ce6cf88d985d84910ccc0a62c998176aae9994c535a6edff9af4d7a90b432ee3e266fddce42b8922af53ce32 WHIRLPOOL 0ffbe1e867e084fbbac5fc453a50d1c02745a67a588e38cec06491b231e230f8a6ca8336b1e39130ec726473c524832c32d420d5fe284c21260a9d3b3a317321 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+ .*|.* .*) ++#dynamic.1.name=upgrade ++#dynamic.1.source=/usr/share/rpimonitor/updatestatus.txt ++#dynamic.1.regexp=(\d+ upgraded, \d+ .*|.* .*) ++#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) + diff --git a/www-apps/rpi-monitor/rpi-monitor-2.5.ebuild b/www-apps/rpi-monitor/rpi-monitor-2.5.ebuild new file mode 100644 index 00000000..d9336a2b --- /dev/null +++ b/www-apps/rpi-monitor/rpi-monitor-2.5.ebuild @@ -0,0 +1,122 @@ +# Copyright (c) 2013 Stuart Shelton <stuart@shelton.me> +# Distributed under the terms of the GNU General Public License v2 + +EAPI="4" + +inherit eutils + +DESCRIPTION="RPi-Monitor - always keep an eye on your Raspberry Pi" +HOMEPAGE="http://rpi-experiences.blogspot.fr" +SRC_URI="https://github.com/XavierBerger/RPi-Monitor/archive/v${PV}.zip -> ${P}.zip + https://github.com/XavierBerger/RPi-Monitor-deb/archive/v${PV}.zip -> ${PN}-deb-${PV}.zip" +RESTRICT="nomirror" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="-* arm" +IUSE="httpd tools" + +DEPEND="app-admin/webapp-config" +RDEPEND=" + httpd? ( + virtual/httpd-cgi + ) + !httpd? ( + dev-perl/HTTP-Daemon + ) + net-analyzer/rrdtool[perl] + || ( ( virtual/perl-JSON-PP dev-perl/JSON-Any ) dev-perl/JSON ) + dev-perl/IPC-ShareLite" + +if use httpd; then + inherit webapp + + need_httpd_cgi +fi + +S="${WORKDIR}/RPi-Monitor-${PV}" + +src_prepare() { + epatch "${FILESDIR}"/default.conf-"${PV}".patch \ + || die "epatch failed" + + cp "${S}"/../RPi-Monitor-deb-"${PV}"/conf2man.pl . + cp "${S}"/../RPi-Monitor-deb-"${PV}"/help2man.pl . + chmod 755 conf2man.pl help2man.pl + + [[ -x ./help2man.pl && -x conf2man.pl ]] \ + || die "Portage temporary directory must not be mounted 'noexec'" + + cat rpimonitor/rpimonitord.conf rpimonitor/default.conf > rpimonitord.conf + + ./help2man.pl rpimonitor/rpimonitord "${PV}" > rpimonitord.1 + ./conf2man.pl rpimonitord.conf "${PV}" > rpimonitord.conf.5 +} + +src_install() { + use httpd && webapp_src_preinst + + doman rpimonitord.1 rpimonitord.conf.5 + + dodoc README.md + newdoc tools/reverseproxy nginx.conf.example + newdoc rpimonitor/custo.conf custom.conf + dodoc rpimonitor/default.conf + + dosbin rpimonitor/rpimonitord + if use tools; then + exeinto /usr/share/"${PN}"/tools + doexe tools/{addnginxuser.sh,make_ca.sh,make_cert.sh,netTraffic.sh,openssl.cnf} + fi + + newconfd "${FILESDIR}"/rpimonitor.confd rpimonitor + newinitd "${FILESDIR}"/rpimonitor.initd rpimonitor + dodir /etc/rpimonitord.conf.d + insinto /etc/rpimonitord.conf.d + doins rpimonitor/default.conf + + if use httpd; then + INSTROOT="${EROOT}/var/www/localhost/htdocs" + + insinto "${MY_HTDOCSDIR}" + doins -r rpimonitor/web/* + dodir "${MY_HTDOCSDIR}"/custom/net_traffic + dodir "${MY_HTDOCSDIR}"/stat + + webapp_serverowned "${MY_HTDOCSDIR}"/custom + webapp_serverowned "${MY_HTDOCSDIR}"/custom/net_traffic + webapp_serverowned "${MY_HTDOCSDIR}"/stat + else + INSTROOT="${EROOT}/usr/share" + + insinto /usr/share/rpi-monitor + doins -r rpimonitor/web/* + diropts -m 0775 -o nobody -g nogroup + + dodir /var/lib/rpi-monitor/custom/net_traffic + dodir /var/lib/rpi-monitor/stat + + dosym ../../../var/lib/rpi-monitor/stat /usr/share/rpi-monitor/stat + dosym ../../../var/lib/rpi-monitor/custom /usr/share/rpi-monitor/custom + fi + + sed -i \ + -e "s|^#daemon.webroot=./web$|daemon.webroot=${INSTROOT/\/\///}/rpi-monitor|" \ + -e "s|^#daemon.user=pi$|daemon.user=nobody|" \ + -e "s|^#daemon.group=pi$|daemon.group=nogroup|" \ + rpimonitor/rpimonitord.conf + insinto /etc/ + doins rpimonitor/rpimonitord.conf + + use httpd && webapp_src_install +} + +pkg_postinst() { + einfo "Edit the file /etc/rpimonitord.conf.d/default.conf to configure RPi-Monitor" + echo + ewarn "If graphs display incorrect data or values are shown as 'NaN' in the" + ewarn "web-interface, especially after configuration changes, try stopping" + ewarn "RPi-Monitor and deleting the affected .rrd files from" + ewarn "/var/lib/rpi-monitor before restarting RPi-Monitor - which should clear" + ewarn "any problems caused by changes in format." +} |