Trucs et astuces pour son serveur privé

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/*

Warning!

Lorsque le Common Name vous sera demandé, indiquez le nom de domaine ! Et dans notre cas, acceptez la création d’une clé sans mot de passe !

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.

Recherches utilisées pour trouver cet article :gerer son serveur prive
metrogeek

Laisser un commentaire