Monitoring
Voici quelques possibilités pour surveiller la charge de votre serveur.
systat
Systat est présent par défaut dans OpenBSD. Vous pouvez obtenir des informations sur le système en temps réel en saisissant la commande systat vm. Vous aurez alors des informations sur l'utilisation de la mémoire, des processeurs, des disques...
Pour avoir des informations sur le débit montant et descendant, tapez systat ifstat. Vous observerez en temps réel la quantité de données entrantes (IBYTES) et sortantes (OBYTES).
Pour des informations concernant la température du matériel (si vous craignez la surchauffe!), tapez systat sensors.
cpu0.temp0 51.00 degC acpitz0.temp0 26.80 degC zone temperature
À chaque fois, appuyez sur la touche q pour quitter.
vmstat
Lui aussi présent par défaut, vmstat donne un aperçu rapide sur la charge du système :
$ vmstat procs memory page disks traps cpu r s avm fre flt re pi po fr sr sd0 sd1 int sys cs us sy id 1 274 1500M 1253M 657 0 0 0 0 0 1 4 190 15482 1826 2 1 97
symon
Symon va vous permettre d'obtenir des statistiques sur les ressources utilisées par votre serveur et de les consulter sur une page web.
Commençons par installer le nécessaire :
# pkg_add symon symux syweb
On modifie ensuite la configuration de symon qui va surveiller le système. Pour cela, on modifie le fichier /etc/symon.conf et on garde les informations qui nous intéressent :
monitor { cpu(0), mem, if(lo0), if(re0), pf, mbuf, sensor(cpu0.temp0), proc(httpd), io(wd0), io(wd1), df(sd1b) } stream to 127.0.0.1 2100
- cpu(0) : On surveille la charge du processeur,
- mem : On surveille la mémoire,
- if(re0) : On surveille l'interface web re0,
- pf : On surveille le parefeu. Il faut mettre dans /etc/pf.conf la mention set loginterface re0,
- mbuf : On surveille la mémoire cache,
- sensor(cpu0.temp0) : On surveille la température du processeur,
- proc(httpd) : On surveille l'activité du démon httpd,
- io(wd0) : On regarde l'activité sur le disque wd0,
- df(sd1b) : On surveille l'espace restant sur la partition sd1b.
De la même façon, on configure symux qui va analyser les données recueillies par symon. On édite le fichier /etc/symux.conf :
mux 127.0.0.1 2100 source 127.0.0.1 { accept { cpu(0), mem, if(lo0), if(re0), pf, mbuf, sensor(cpu0.temp0), proc(httpd), io(wd0), io(wd1), df(sd1b) } datadir "/var/www/symon/rrds/localhost" }
On ne fait que reproduire les mêmes éléments que dans /etc/symon.conf. Attention à bien indiquer le chemin vers les données datadir. On va d'ailleurs le créer dès maintenant :
# mkdir -p -m 0755 /var/www/symon/rrds/localhost
On crée maintenant les fichiers rrd :
# /usr/local/share/examples/symon/c_smrrds.sh all
Puisque le serveur web est dans un chroot, il faut lancer la commande suivante pour installer l'outil d'analyse des données et ses dépendances (rddtool) :
# /usr/local/share/examples/rrdtool/rrdtool-chroot enable
Une fois ceci fait, il faut préciser dans la configuration de syweb où trouver l'outil rrdtool. Dans le fichier /var/www/htdocs/syweb/setup.inc, modifiez si nécessaire la ligne contenant $symon['rrdtool_path'] ainsi :
$symon['rrdtool_path']='/usr/local/bin/rrdtool';
Reste une dernière modification à apporter. Puisque le serveur web est en chroot, il faut lui donner accès au shell /bin/sh afin que PHP puisse lancer rrdtool qui génère les graphiques :
# mkdir -p /var/www/bin # cp /bin/sh /var/www/bin
On recharge tous les nouveaux démons après les avoir activés :
# rcctl enable symon # rcctl enable symux # rcctl start symon # rcctl start symux
On ajoute la configuration convenable pour le serveur http, dans le fichier /etc/httpd.conf :
server "statistiques.chezmoi.tld" { listen on * port 80 root "/htdocs/syweb" directory index index.php location "*.php*" { fastcgi socket "/run/php-fpm.sock" } }
Reste à recharger ce dernier avec # rcctl reload httpd puis à aller sur le site définit pour voir les beaux graphiques.

monit
Monit est un outil léger open source (licence AGPL) permettant de superviser un système Unix. Il est capable d’exécuter des actions en cas de détection de défaillance ou de dépassement de seuil. Une interface web permet de superviser en temps réel les différents services paramétrés.
Installation
Commençons par installer le nécessaire et activer le démon monit :
# pkg_add monit # rcctl enable monit
Configuration
Ensuite, la configuration centrale de Monit se fait au sein du fichier monitrc localisé sous /etc/. Dans ce fichier, vous pouvez notamment modifier l’adresse email qui recevra les alertes.
Enfin, les configurations complémentaires sont dans le répertoire /etc/monit.d/.
Nous allons maintenant configurer le serveur d'administration sur un socket TCP local. Éditez le fichier /etc/monitrc puis décommentez tout en bas la ligne
include /etc/monit.d/*
Nous pouvons maintenant procéder à la configuration en ajoutant des fichiers dans le dossier /etc/monit.d qu'il faut créer :
# mkdir -p /etc/monit.d
Placez dans ce dossier un fichier que l'on appellera par exemple admin.conf.
set daemon 60 with start delay 240 set logfile syslog facility log_daemon set mailserver localhost set mail-format { from: monit@$HOST subject: Monit Alert -- $SERVICE $EVENT -- message: Hostname: $HOST Service: $SERVICE Action: $ACTION Date/Time: $DATE Info: $DESCRIPTION } set alert root@localhost
L'instruction "set daemon" permet de définir la durée d'un "cycle" monit. Un cycle correspond à l'intervalle (en secondes) entre deux vérifications. Dans cet exemple, il commence à analyser votre serveur toutes les minutes après un délai de 4 minutes.
Cette partie permet de préciser que monit devra enregistrer ses journaux dans les logs système. Ensuite, on configure l'apparence du mail que monit enverra à l'adresse root@localhost. Assurez-vous d'avoir fait en sorte de recevoir les mails que votre serveur est susceptible de vous envoyer.
Avant de lancer Monit, vérifiez bien que la syntaxe des fichiers de configuration est bonne avec la commande :
# monit -t
Vous devez obtenir une belle réponse « Control file syntax OK ».
En cas de dysfonctionnement, Monit vous enverra un mail d’alerte (attention à bien configurer votre mail et serveur dans le fichier monitrc).
Lancement de monit
Le démarrage de monit est simple :
# rcctl start monit
Utilisation
La commande suivante permet d'obtenir le status détaillé de votre serveur :
# monit status Monit uptime: 0m System 'openheb.fritz.box' status Running monitoring status Monitored monitoring mode active on reboot start load average [0.08] [0.11] [0.08] cpu 0.1%us 0.1%sy memory usage 81.1 MB [4.0%] swap usage 0 B [0.0%] uptime 2d 21h 30m boot time Tue, 14 Mar 2017 19:06:34 data collected Fri, 17 Mar 2017 16:37:25
Il est possible de consulter l'interface web de Monit sur votre serveur car il intègre un petit service http. Cependant, ce n'est pas très pratique car cela suppose que vous ouvrez les ports de votre serveur vers Monit...
À la place, je vous propose de passer par un tunnel SSH. Sur votre ordinateur de bureau, créez un tunnel qui va "relier" le port de Monit vers le port 9999 de votre ordinateur (le port d'écoute du serveur SSH est le 222 dans l'exemple) :
$ ssh -L 9999:127.0.0.1:2812 -p 222 toto@chezmoi.tld
Vous pouvez maintenant ouvrir dans un navigateur sur votre ordinateur la page http://127.0.0.1:9999 afin de consulter Monit.
Configuration avancée des alertes
Monit peut aussi envoyer des e-mails d'alerte en cas d'utilisation de ressources anormales, comme une mémoire vive faible ou un taux d'utilisation du CPU trop important.
Nous allons maintenant compléter notre configuration afin de surveiller la charge de notre serveur. Pour cela, nous allons ajouter les lignes suivantes à notre fichier de configuration:
check system localhost if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if memory usage > 75% then alert if swap usage > 25% then alert if cpu usage (user) > 70% then alert if cpu usage (system) > 30% then alert if cpu usage (wait) > 20% then alert
Puis, il faut recharger la configuration :
# rcctl reload monit
Ainsi, une alerte par courriel sera envoyée dès que le système utilisera plus de 30% des capacités du ou des processeurs.
Plus d'infos, sur le site de Monit. L'ensemble des applications de votre serveur peuvent être facilement monitorées. Regardez les exemples à la fin du document.
site de Monit