– l’accès telnet ou ssh
– MySQL
– Apache avec PHP
– SNMPPour cela, rien de compliqué: via son navigateur, on accède par le DSM et on va dans le panneau de configuration.
Ensuite, il faut installer le client snmp. Pour cette partie, je me suis aidé de la page http://www.vinc3nt.fr/2010/04/installer-ipkg-sur-synology-209-et-209ii/
sh syno-e500-bootstrap_1.2-7_powerpc.xsh
ipkg update
et enfin installer le client snmp:
ipkg install net-snmp
Création de la base de données
La base de données est très simple. Il faut créer une table pour chaque élément à monitorer avec un champs pour l’heure de collecte de l’information et un autre champs pour la valeur collectée (on peut très bien avoir plusieurs valeurs pour un même élément, dans ce cas, il faudra créer autant de champs que de valeurs à collecter).
CREATE DATABASE `supervision` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `supervision`; CREATE TABLE `cpu` ( `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `value` float NOT NULL);
Pour récupérer des informations système, on peut très bien se passer de snmp et utiliser des commandes unix classiques, mais snmp permet d’obtenir très simplement beaucoup plus d’informations. Nous allons commencer par une petite explication sur ce protocole.
snmpwalk -v 2c -c public localhost
……
snmptranslate -Onf -IR ssCpuIdle.0
.iso.org.dod.internet.private.enterprises.ucdavis.systemStats.ssCpuIdle.0
snmpget -v 2c -c public -Ovq -L n: localhost .iso.org.dod.internet.private.enterprises.ucdavis.systemStats.ssCpuIdle.0
93
Pour l’instant, on ne va se focaliser que sur un script: la charge CPU. On va créer un répertoire supervision dans le répertoire web (généralement /volume1/web/) et un sous-répertoire cron. On aura donc l’arborescence suivante : /volume1/web/supervision/cron/
On va ensuite créer le script cpu.sh (ci-dessous) dans le répertoire cron.
cd /volume1/web/supervision/cron # Generation du script sql rm cpu.sql echo "connect supervision;" > cpu.sql cpu=`snmpget -v 2c -c public -Ovq -L n: localhost .iso.org.dod.internet.private.enterprises.ucdavis.systemStats.ssCpuIdle.0` echo "insert into cpu values (now(), $cpu);" >> cpu.sql # Lancement du script sql /usr/syno/mysql/bin/mysql -u UtilisateurMySQL -pMotDePasseMySQL < cpu.sql
Le principe reste le même quelque soit les données qu’on souhaite stocker: il suffit de modifier le contenu de la ligne « cpu=….. »
Automatisation de la récupération des informations
Avoir un script qui collecte des informations, c’est bien, mais totalement inutile si il ne se lance pas à intervalles réguliers. Pour cela, on va modifier le fichier /etc/crontab en lui ajoutant la ligne suivante:
*/1 * * * * root /volume1/web/supervision/cron/cpu.sh
Explication: Le script cpu.sh va être lancé par l’utilisateur root toutes les 1 minute (*/1 signifiant toutes les minutes, */5 toutes les 5 minutes….) Pour info, les autres étoiles correspondent dans l’ordre aux heures, jour du mois, mois, jour de la semaine.
Relancer cron:
/usr/syno/etc.defaults/rc.d/S04crond.sh stop /usr/syno/etc.defaults/rc.d/S04crond.sh start
Voila, la collecte des infos peut commencer. On peut vérifier le bon fonctionnement en regardant le contenu de la table cpu.
Dans le prochain article, on verra comment transformer en graphique les données collectées.