Maintenance préventive d'un serveur en prod, trucs & astuces

Hello,

J’aimerais qu’on regroupe dans ce thread différents conseils quant à la maintenance préventive d’un serveur debian en prod. On partira du postulat qu’il s’agit d’une machine standard, avec base de donnée (essayons de couvrir un maximum de cas : mysql, ldap, oracle, etc…), et différents serveurs (Apache, FTP et tout ce qui peut vous passer par la tête), contrôle utilisateurs, contrôle des mises à jours, contrôle de l’espace disque et des éventuels problèmes liés à la lecture/écriture sur ces disques, contrôles des ressources CPU, et/ou des logs en général (comment en automatiser la surveillance par exemple).

Le contexte sera le suivant : machine parfaitement isolée, notre seul accès est SSH.

Quels sont vos trucs & astuces du parfaitement administrateur ? Vos conseils, vos petites procédures ? Tout ce qu’il faut pour maintenir au mieux un serveur en production.

il faut protéger/blinder/monitorer la machine autant que faire se peut, mais surtout se poser une question :

Je sais que quoi que je fasse, ma machine reste vulnérable (malveillance, pannes, bug, etc etc) donc je part déjà du principe que ma machine ‘peut’ mourir du jour au lendemain. sans prévenir.

Ce jour là qu’est ce qu’il faudra faire ?

la prévention c’est pour voir la panne venir, éventuellement l’éviter. mais il vaut mieux l’anticiper.

Ça a déjà été évoqué. En gros j’ai

  • Un script qui surveille une liste de fichier (par défaut /bin, /usr/bin, … via les md5sums
    (paquet surveillance)
  • Un script qui teste la présence d’un processus caché (paquet cacheproc)
  • Un script qui vérifie que les processus dont le PID est dans /var/run sont toujours actifs. Si ça n’est pas le cas, le processus est relancé.
  • Un script analogue surveille des processus donnés et les relance si besoin est.
  • bigbrother version datant de 2001 à l’époque où c’était gratuit.

[quote=“fran.b”]* Un script qui surveille une liste de fichier (par défaut /bin, /usr/bin, … via les md5sums
(paquet surveillance)[/code]
md5 n’est plus sûr je pense qu’il vaut mieux utiliser sha1 ou sha256.

C’est quoi un procéssus caché d’un point de vu technique ?

init ne fait permet pas de faire un truc comme ça déjà via un respawn ?

Bonsoir,
celui là, il m’intéresse beaucoup car j’ai besoin de surveiller 2 process et les relancer s’ils plantent.
Merci

Salut,

Vous êtes dans Trucs & Astuces, pas dans pause café :mrgreen:

Si vous voulez je peux le déplacer ?

[quote=“ggoodluck47”]Salut,

Vous êtes dans Trucs & Astuces, pas dans pause café :mrgreen:

Si vous voulez je peux le déplacer ?[/quote]
Fais comme bon te semble, moi dans la mesure où j’ai le plus de réponse possible, je suis ravi :slightly_smiling:

sinon autrement, quelqu’un a une configuration à proposer pour le script logcheck (utilitaire de surveillance des logs, en gros il traduit ça de façon plus claire et recrache ce qui est suspect). Une fois installé, reste plus qu’à renseigné son fichier de conf et pointer les logs à analyser, puis je crois qu’il se colle tout seul dans un cron et peut vous envoyer un rapport par mail périodiquement.

[quote=“sylvain1970”]Bonsoir,
celui là, il m’intéresse beaucoup car j’ai besoin de surveiller 2 process et les relancer s’ils plantent.
Merci[/quote]
Le paquet monit fait l’affaire.

Salut,

[quote=“Niloo”][quote=“sylvain1970”]Bonsoir,
celui là, il m’intéresse beaucoup car j’ai besoin de surveiller 2 process et les relancer s’ils plantent.
Merci[/quote]
Le paquet monit fait l’affaire.[/quote]

On ne voit pas pourquoi faire surveiller un service qui risque de “tomber” par un autre ! Et qui surveille “monit” quand il tombe ?

[quote=“ggoodluck47”]Salut,

[quote=“Niloo”][quote=“sylvain1970”]Bonsoir,
celui là, il m’intéresse beaucoup car j’ai besoin de surveiller 2 process et les relancer s’ils plantent.
Merci[/quote]
Le paquet monit fait l’affaire.[/quote]

On ne voit pas pourquoi faire surveiller un service qui risque de “tomber” par un autre ! Et qui surveille “monit” quand il tombe ?[/quote]

:laughing:

Nagios surveille et Monit agit

Salut,

Tu nous ferais pas un petit topo dans T&A parce que rien que la config de monit c’est un vrai roman :slightly_smiling:

pour surveiller un réseau complet, nagios et cacti, c’est sympa…

Re,

Toi aussi tu es autorisé à nous faire un topo. On est preneur.

[quote=“ggoodluck47”]Re,

Toi aussi tu es autorisé à nous faire un topo. On est preneur.[/quote]
Mais je recadre (désolé), sur ce thread on parle ici d’une seule et même machine, pas d’un réseau. Tout ce qui passe en trafique sur cette machine, oui, mais pas tout le réseau :wink:

Re,

Merci coldroom, la nuance m’avait échappé.

Des fois que quelqu’un lise encore ce thread…

En fouillant dans apt, je suis tombé sur ce paquet : unattended-upgrades

Il s’agit purement et simplement d’automatiser l’install des maj de sécurité.

/usr/local/bin/lookatpid.sh

[code]#!/bin/sh
PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/sbin:/sbin"
present()
{
ps $1 > /dev/null
}

LISTE=find /var/run -name "*.pid"
for f in $LISTE ; do
if grep -v $f /var/processusignore > /dev/null ; then
PID=cat $f
for p in $PID ; do
if ! present $p ; then
echo $p “(”$f")" absent
LANCEUR=grep $f /var/processus | awk '{print $2}'
date
echo Relance de $LANCEUR
if [ -z $LANCEUR ] ; then
echo "Pas de moyen de lancer $f"
rm $f
else
logger Relance de $LANCEUR
/etc/init.d/$LANCEUR stop
/etc/init.d/$LANCEUR start
fi
fi
done
fi
done
LISTE2=cat /var/nomprocessus | awk '{print $1}'
for p in $LISTE2 ; do
if ! pidof -x $p > /dev/null ; then
echo $p absent
LANCEUR=grep $p /var/nomprocessus | awk '{print $2}'
date
echo Relance de $LANCEUR
if [ -z $LANCEUR ] ; then
echo "Pas de moyen de lancer $f"
rm $f
else
logger Relance de $LANCEUR
/etc/init.d/$LANCEUR stop
/etc/init.d/$LANCEUR start
fi
fi
done
[/code]

/var/processus /var/run/rsyslogd.pid rsysklog /var/run/bind/run/lwresd.pid bind9 /var/run/bind/run/named.pid bind9 /var/run/ypserv.pid nis /var/run/yppasswdd.pid nis /var/run/ypbind.pid nis /var/run/inetd.pid openbsd-inetd /var/run/spamd.pid spamassassin /var/run/sshd.pid ssh /var/run/atd.pid atd /var/run/crond.pid cron /var/run/mysqld/mysqld.pid mysql /var/run/apache2.pid apache2 /var/run/clamav/freshclam.pid clamav-freshclam /var/run/cups/cupsd.pid cups
et /var/processusignore

/var/run/identd/identd.pid
et j’ai une ligne dans crontab:

* * * * * root /usr/local/bin/lookatpid.sh >> /var/log/lookatpid.log 2>> /var/log/piderror.log

Ce script m’a rendu de grands services notamment pour NFS et le DNS.