C’est bien d’installer apache, son serveur DNS, mais si on ne connait pas les outils de base ça ne sert à rien.Du coup je me suis dis que ce serait une bonne idée de compiler dans un article quelques trucs et astuces, relatifs notamment à la surveillance de votre serveur.
C’est l’occasion d’apprendre ou réapprendre à se servir des outils inclus dans toute bonne distribution qui se respecte, mais aussi comment compléter ces outils.
Monitoring « sur site »
Journaux
Ce que j’appelle « monitoring sur site », c’est comment surveiller son système depuis un shell. Un certain nombre de commandes existent pour nous permettre de diagnostiquer le fonctionnement de notre serveur.
Pour commencer, rien ne vaut les journaux. Concernant notre serveur, voici ceux qui sont principalement à surveiller :
- /var/log/syslog, probablement le plus important de tous
- /var/log/fail2ban.log, pour surveiller ce que fail2ban fait
- /var/log/mail.log, pour surveiller le serveur mail
- /var/www/*/*/log/, pour surveiller les accès et erreurs sur l’ensemble de vos sites Internet
Pour consulter en temps réel un journal, utilisez la commande suivante :
tail -f /var/log/syslog
Pour consulter les X dernières lignes d’un journal :
tail -X /var/log/syslog
Processus
Le monitoring sur site implique également la surveillance des processus. La commande suivante :
ps aux
Vous indiquera l’état des processus au moment où vous lancez la commande. Pour consulter l’état des processus en temps réel, utilisez la commande :
top
Cette commande vous informe également de l’état de la mémoire, de l’utilisation CPU, et d’autres choses encore.
Matériel
Si vous hébergez vous-même votre serveur « à la maison », vous pourrez également avoir besoin de quelques capteurs de température :
apt-get install lm-sensors sensors-detect
De même pour les disques durs :
apt-get install hddtemp hddtemp /dev/sd*
D’autres informations relatives à votre matériel peuvent être extraites du pseudo système de fichiers /proc :
cat /proc/cpuinfo cat /proc/meminfo
RAID
Si vous bénéficiez d’un raid logiciel, vous pouvez consulter son état de différentes manières :
cat /proc/mdstat mdadm --detail /dev/md0
Monitoring distant
Le monitoring distant est effectué depuis une interface web par exemple. J’ai choisi phpSysInfo, que je trouve plus agréable à configurer et utiliser que munin, trop centré sur la création de graphs, et relativement compliqué à mettre en œuvre.
Hôte virtuel
Première chose, comme d’habitude, on s’occupe de l’hôte virtuel dans apache :
mkdir -p /var/www/exemple.fr/system/www nano /etc/apache2/sites-available/system.exemple.fr
<VirtualHost *:80> ServerName system.exemple.fr Redirect / https://system.exemple.fr/ </VirtualHost> <VirtualHost *:443> ServerName system.exemple.fr DocumentRoot /var/www/exemple.fr/system/www SSLEngine On SSLCertificateFile /scripts/certificate_authority/apache/system.exemple.fr.crt SSLCertificateKeyFile /scripts/certificate_authority/apache/system.exemple.fr.key </VirtualHost>
Nous avons créé un hôte virtuel non sécurisé redirigeant vers un hôte virtuel sécurisé, nous avons déjà vu le principe. Créons maintenant les certificats :
/scripts/certificate_authority/make_request apache system.exemple.fr /scripts/certificate_authority/sign_request apache system.exemple.fr chown www-data:www-data /scripts/certificate_authority/apache/*
On active le site, et on redémarre apache :
a2ensite system.exemple.fr /etc/init.d/apache2 restart
Dans ce cas, il n’y a pas vraiment besoin de tenir des journaux.
Installation de phpSysInfo
Rien de particulier à signaler : une fois l’application téléchargée et installée dans son répertoire (/var/www/exemple.fr/system/www), il suffit juste de la configurer en fonction des blocs que vous souhaitez afficher.
Certaines dépendances peuvent être nécessaires, en fonction des blocs que vous aurez configuré. L’application vous informera via des messages d’erreurs si des dépendances ne sont pas satisfaites. Vous pourrez alors aisément les installer.
Notifications
Si vous faites appel à crontab pour effectuer des tâches routinières, il peut être intéressant d’avoir des rapports par mail. Il vous suffit d’éditer votre crontab et d’y insérer la ligne suivante :
MAIL="contact@exemple.fr"
Nous avons installé un serveur XMPP, on peut également s’en servir comme service de notification. Ainsi, pour toute application qui permet d’exécuter une commande suivant un évènement donné, on peut demander à cette application d’envoyer un message à un compte XMPP que vous aurez créé à cet effet. Nous utiliserons pour cela le script sendxmpp :
apt-get install sendxmpp
Que l’on utilisera de la manière suivante :
echo "Votre message" | sendxmpp -u <utilisateur> -p <mot de passe> -j exemple.fr <destinataire>@exemple.fr
Liste des paquets installés
Il peut être utile de récupérer la liste de tous les paquets installés, par exemple dans le cas d’une réinstallation ou d’un mirroring. Pour récupérer cette liste, on utilisera la commande suivante :
dpkg -l | grep ii | awk -F ' ' '{print $2}'
On peut, du coup, exporter cette liste dans un fichier :
dpkg -l | grep ii | awk -F ' ' '{print $2}' > packages.list
Conclusion
Plein d’autres choses manquent surement à l’appel. On ne peut pas tout voir, mais théoriquement, ce qu’on a vu jusqu’aujourd’hui devrait être suffisant pour que vous puissiez jouer avec votre propre instance.