Monitoring serveur et activités du disque dur avec Raspberry Pi
Sommaire
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 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
- https://yann.me/monitoring-de-serveur-avec-collectd-influxdb-et-grafana/
- http://www.aymerick.com/2015/10/07/influxdb-telegraf-grafana-raspberry-pi.html
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
choisir la BDD dans la liste
SHOW MEASUREMENTS
ou
select * from /.*/ limit 1
Grafana
Accéder à l'interface : log admin / admin
- 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
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
- https://sonnguyen.ws/monitor-server-with-collectd-influxdb-and-grafana/
- http://giatro.me/2015/09/30/install-influxdb-and-grafana-on-raspberry-pi.html
- 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