Raspberry Pi monitor
Info
With RPi-Monitor you can monitor various aspects of your Raspberry Pi. The package has its own simple webserver. It works well for smaller screens (mobile phone) and history can be visualized with some graphs. If it still isn't to your liking it allows for some serious tinkering.
- https://xavierberger.github.io/RPi-Monitor-docs/index.html
- https://github.com/XavierBerger/RPi-Monitor
Local webservice, access within the local network with:
Install
Install packages:
sudo apt install librrds-perl libhttp-daemon-perl libjson-perl libipc-sharelite-perl sudo apt install libfile-which-perl libsnmp-extension-passpersist-perl sudo apt install aptitude
Download and install monitor:
wget https://github.com/XavierBerger/RPi-Monitor-deb/blob/develop/packages/rpimonitor_latest.deb sudo dpkg -i rpimonitor_latest.deb
Remove
Monitor package:
sudo apt-get purge rpimonitor rm -fr /etc/rpimonitor rm -fr /usr/share/rpimonitor
Configure
Documentation
man rpimonitord man rpimonitord.conf rpimonitord -i
Main configuration files
Main configuration-file with possible references to the other templates:
sudo nano /etc/rpimonitor/template/raspbian.conf
Configuration of the daemon:
sudo nano /etc/rpimonitor/daemon.conf
Modify interval
Default is 10 seconds, changed it to 60 seconds.
sudo nano -l +17 /etc/rpimonitor/daemon.conf
daemon.delay=60
sudo systemctl restart rpimonitor
Note: that if you change the delay, you probably want to delete the "rrd" files that contain the graph history. The delay is used during their creation. They wil be automatically recreated but obviously you will loose the history.
sudo rm /var/lib/rpimonitor/stat/*.rrd
sudo systemctl restart rpimonitor
More info:
Network monitoring
Uncomment all lines that are commented and comment the lines that contain the configuration message.
sudo nano /etc/rpimonitor/template/network.conf
Tweaking
Edit services.conf to check for running apache webservice
sudo nano /etc/rpimonitor/template/services.conf
dynamic.3.name=http dynamic.3.source=systemctl show -p SubState --value apache2 dynamic.3.regexp=(.*) web.status.1.content.1.line.1= Label(data.http,"=='running'","Apache","success") + Label(data.http,"!='running'","apache","danger")
Edit cpu.conf to include CPU throttling
(Rapberry Pi 3)
sudo nano /etc/rpimonitor/template/cpu.conf
dynamic.1.name=cpu_frequency dynamic.1.source=vcgencmd measure_clock arm | sed -e "s/frequency(45)=//g" dynamic.1.regexp=(.*) dynamic.1.postprocess=$1/1000000 dynamic.1.rrd=
Link from the main page directly to the corresponding graph
- Included in new version v2.13+
Modify the function Start() in "rpimonitor.statistics.js" to read a parameter 'graph':
sudo nano -l +26 /usr/share/rpimonitor/web/js/rpimonitor.statistics.js
// ...
function Start() {
static = getData('static')
graphconf = getData('statistics')
//modified: read activestat from url graph parameter
activestat = GetURLParameter('graph');
if (activestat == null){
activestat = localStorage.getItem('activestat') || 0;
}
// ... unchanged ...
activePage = GetURLParameter('activePage');
// ...
}
// ...
Then modify "uptime.conf" (graph=0) to include a link to the graph. Same for for "cpu.conf" (graph=1), "temperature.conf" (graph=2), etc:
sudo nano /etc/rpimonitor/template/uptime.conf
web.status.1.content.1.name=<a target=_blank href=statistics.html?graph=0>Uptime</a>
Link to logfiles
cd /usr/share/rpimonitor/web sudo ln -f -s /var/log/wjv/main.log main.log.txt sudo ln -f -s /var/log/wjv/main.log.1 main.log.1.txt
Graph dips and spikes
There seems to be a problem where recorded values show dips and spikes while the actual value doesn't change. For example, receiving 2.478 it would fall to 2.446, then jump to 2.510 and then goes back to 2.478. This happens about every 10 minutes.
Using LAST instead of AVERAGE
Tried adjusting the consolidation function to "LAST" instead of "AVERAGE" so it would record exact values. It didn't work.
Modify the source code (Perl):
sudo nano -l +309 /usr/bin/rpimonitord
...
RRDs::create( "$filename",
"--start", $start,
"--step", $this->{'daemon'}->{'delay'},
"DS:$name:$type:600:$min:$max",
"RRA:LAST:0.5:1:8640", # 1 day with interval of 10sec
"RRA:LAST:0.5:6:2880", # 2 day with interval of 1min
"RRA:AVERAGE:0.5:60:2016", # 2 week with interval of 10min
"RRA:AVERAGE:0.5:180:1488", # 1 month with interval of 30min
"RRA:AVERAGE:0.5:360:8784" # 1 year with interval of 1hour
);
...
The files need to be deleted and will be re-created on rspat of the service. RRD file info:
#backup-remove sudo mv /var/lib/rpimonitor/stat/soc_temp.rrd /var/lib/rpimonitor/stat/soc_temp.rrd.bak #restart sudo systemctl restart rpimonitor #check rrdtool info /var/lib/rpimonitor/stat/soc_temp.rrd
Lowering the delay
Lowering the delay to be under 60 seconds should make sure there is always a value.
Debugging
The StartServer-code is around line 1335:
sudo nano -l +1335 /usr/bin/rpimonitord
Start RPi-Monitor in a terminal with logging:
sudo systemctl stop rpimonitor sudo rpimonitord -vvvvvv
Make it work with a webserver
The Web-server seems to stop regularly. In the Perl code (rpimonitord) there is a "Check if the server is up" part in "Monitor->Run". This is called once every "daemon.delay". With a higher daemon.delay the problem is quite annoying. I changed the code to break-up the delay in 10s parts and check the server every 10s. The problem will still be there but now I only need to wait 10 sec.
Disable the built-in webserver:
sudo nano /etc/rpimonitor/daemon.conf daemon.noserver=1
Problem: the rdd files can't be found by apache. We add a symbolic link to point to the right place:
cd /usr/share/rpimonitor/web sudo ln -s /var/lib/rpimonitor/stat stat
Restart:
sudo service rpimonitor restart
Go to:
- http://<yourserver>/rpimonitor/status.html
Configure Apache2 webserver, port 80 virtual directory
sudo nano /etc/apache2/sites-available/raspberrypi.conf <VirtualHost _default_:80> Alias /rpimonitor/ /usr/share/rpimonitor/web/ <Directory /usr/share/rpimonitor/web/> AllowOverride None Require all granted </Directory> </VirtualHost>
Restart:
sudo systemctl restart apache2
Configure Nginx webserver, port 80 virtual directory
Some tips (for use of nginx webserver):
sudo nano /etc/nginx/sites-available/raspberrypi4
server
{
listen 80;
server_name wjv.duckdns.org;
autoindex off;
index index.htm;
location /rpimonitor {
alias /usr/share/rpimonitor/web;
allow all;
}
}
Restart:
sudo systemctl restart nginx
Snippets
Apply pending upgrades
The monitor notifies you of pending upgrades. To apply the upgrades:
pihole -up sudo apt upgrade
Upgradable packages are refreshed once a day. To force a refresh manually:
sudo /etc/init.d/rpimonitor update sudo systemctl restart rpimonitor