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 mentionset 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.