Ceci est une ancienne révision du document !
Table des matières
Monitoring serveur et activités du disque dur avec Raspberry Pi
Introduction
Pour illustrer le fait qu'un son peut altérer l'écriture sur un disque ou plus globalement pour monitorer l'activité d'un serveur, on va utiliser la combinaison de collectd, influxdb et grafana à installer sur une raspberry pi
Cette illustration est notamment faite pour l'exposition “go cany go” pour laquelle un dispositif est créé afin d'illustrer le phénomène vu dans cette vidéo :
Installation
Netdata
Un outil simple, joli et facile à installer https://github.com/firehol/netdata
- installer avec l'automatique installer https://github.com/firehol/netdata/wiki/Installation
- aller sur http://localhost:19999
Installation deprecated
Au final netdata était plus adapté à ce projet …
collectd
il faut installer la version backport
gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553 gpg -a --export 8B48AD6246925553 | sudo apt-key add - sudo nano /etc/apt/source.liste.d/backports.list sudo apt-get install collectd
ajouter
deb [[http://ftp.debian.org/debian| http://ftp.debian.org/debian]] jessie-backports main sudo apt-get update
installer version 5.7.0
sudo apt-get -t jessie-backports install collectd
voir les dépendances des plugins
nano /usr/share/doc/collectd-core/README.Debian.plugins
pour le faire fonctionnner
sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service
Ajouter des plugins
InfluxDB
D'abord installer Go
Ensuite installer InfluxDB
wget https://dl.influxdata.com/influxdb/releases/influxdb_1.2.0_armhf.deb sudo dpkg -i influxdb_1.2.0_armhf.deb
Après avoir activé l'admin dans le fichier de conf * http://localhost:8083/ choisir la BDD dans la liste SHOW MEASUREMENTS ou select * from /.*/ limit 1 liste les mesures dispos
Grafana
Accéder à l'interface : log admin / admin * http://localhost:3000/ # créer un dashboard # connecter à une base # ajouter graph # choisir parmis les paramètres
- Lancer les scrips au démarrage de la Pi
- Script pour générer le l'activité sur le dd et du son
On lance un script bash pour monter le disque, faire la copie de fichier sur disque externe et jouer du son
#!/bin/bash
sudo mount /dev/sda1 /media/usbhdd/ while true do sudo dd if=/dev/zero of=/media/usbhdd/oo bs=512 count=50M & sleep 120 play -n synth 60 sin 290 gain -20 & play -n synth 60 sin 295 gain -20 & play -n synth 60 sin 300 gain -20 sleep 120 sudo killall dd sudo rm /media/usbhdd/oo sleep 5 done
Lancer Midori ou chromium navigateur web en plein écran au démarrage
nano .config/lxsession/LXDE-pi/autostart
ajouter :
@midori -e Fullscreen
ou
@chromium-browser --kiosk URL
en désactivant la veille en plus, ça donne :
#@lxpanel --profile LXDE-pi #@pcmanfm --desktop --profile LXDE-pi #@xscreensaver -no-splash @xset s off @xset -dpms @xset s noblank @midori -e Fullscreen -a http://localhost:19999/#menu_disk_submenu_sda
Tests
sudo dd if=/dev/zero of=oo bs=512 count=50M smartctl sudo apt install smartmontools smartmontools smartctl smartctl -h smartctl -t /dev/sdb smartctl -a /dev/sdb sudo smartctl -a /dev/sdb atop
sudo apt install atop
Utilisation pour monitorer des paramètres du disque dur
Références
- stats disk du kernel https://www.kernel.org/doc/Documentation/iostats.txt
Install brute
sudo apt-get update sudo apt-get upgrade sudo reboot sudo apt-get install collectd sudo cp /etc/collectd/collectd.conf /etc/collectd/collectd.conf.back sudo nano /etc/collectd/collectd.conf sudo systemctl start collectd.service sudo systemctl status collectd.service sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service sudo apt-get install curl git mercurial make binutils bison gcc build-essential bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer) exit ps ax | grep collect ps ax | grep influx sudo systemctl status collectd sudo systemctl status influxdb sudo netsat -lpt sudo netstat -lpt sudo systemctl status collectd.service cd Downloads/ ls curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb" curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add - sudo apt-get install influxdb ls sudo apt-get update source /etc/os-release test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list sudo apt-get update && sudo apt-get install influxdb sudo apt-get install apt-transport-https sudo apt-get update && sudo apt-get install influxdb sudo systemctl start influxdb sudo systemctl status influxdb sudo systemctl status influxdb -l influxd config sudo netstat -l curl -i 'http://localhost:8086/ping' influx sudo ls /var/log/influxdb/ sudo nano /etc/influxdb/influxdb.conf sudo systemctl stop influxdb sudo systemctl start influxdb sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service sudo nano /etc/influxdb/influxdb.conf influx wget https://s3.eu-central-1.amazonaws.com/belodetech/grafana_3.0.4_armhf.deb sudo dpkg -i grafana_3.0.4_armhf.deb ps ax | grep graf sudo nano /etc/grafana/grafana.ini sudo nano /etc/influxdb/influxdb.conf free -m sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service sudo dd if=/dev/zero of=oo bs=512 count=50M ls ls -al sudo apt-get install smartmontools mount sudo smartctl -a /dev/mmcblk0p2 sudo smartctl -a /dev/mmcblk0p sudo smartctl -a /dev/mmcblk0 man smartctl setxkbmap fr sudo mkdir /media/usbhdd sudo cat /var/log/syslog df -h mount sudo smartctl -a /dev/sda1 sudo smartctl -t /dev/sda sudo apt-get install atop sudo apt-get install dstat sudo cat /proc/diskstats sudo tail -f /proc/diskstats dstat -tdD sda 1 sudo apt-get install iotop iotop sudo iotop atop sudo apt-get install sysstat sar sudo sar iostat -x 1 sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service sudo systemctl status collectd.service -l sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service -l sudo nano /etc/collectd/collectd.conf sudo systemctl restart collectd.service sudo systemctl status collectd.service -l cat ../.bash_history sudo apt-cache search collectd cd /home/pi/ sudo dd if=/dev/zero of=oo bs=512 count=50M cd /media/pi/90245b85-3442-4b81-bf93-786a9e7d3ca2/ ls sudo dd if=/dev/zero of=oo bs=512 count=50M rm oo sudo rm oo sudo ifconfig sudo dd if=/dev/zero of=oo bs=512 count=50M collectd -v collectd -t collectd -T pi@raspberrypi:~ $ http://localhost:3000/dashboard/db/disk-stats?var-datasource=collectd&var-host=localhost&var-device=sda [1] 9270 [2] 9271 bash: http://localhost:3000/dashboard/db/disk-stats?var-datasource=collectd: No such file or directory bash: var-host=localhost: command not found bash: var-device=sda: command not found [1]- Exit 127 http://localhost:3000/dashboard/db/disk-stats?var-datasource=collectd [2]+ Exit 127 var-host=localhost pi@raspberrypi:~ $ pi@raspberrypi:~ $ pi@raspberrypi:~ $ man collectd pi@raspberrypi:~ $ apt-cache policy collectd collectd: Installed: 5.4.1-6+deb8u1 Candidate: 5.4.1-6+deb8u1 Version table: *** 5.4.1-6+deb8u1 0 500 http://mirrordirector.raspbian.org/raspbian/ jessie/main armhf Packages 100 /var/lib/dpkg/status