Supervision : surveiller les paquets en attente de mise à jour

Tout administrateur qui doit gérer des serveurs Linux le sait : il est important de maintenir son système à jour et d’installer les corrections de bugs aussi rapidement que possible.

Sans outil pour s’aider, cela relève du parcours du combattant : il faut s’abonner à la newsletter de l’équipe chargée de la sécurité de la distribution Linux utilisée, vérifier, pour chaque alerte, si cela concerne nos serveurs, faire les mises à jour quand c’est nécessaire. On appellera ça la méthode « totalement manuelle ».

À l’opposé, on peut avoir une méthode totalement automatique : différents outils existent pour automatiser tout ou partie des actions de mises à jour, je pense notamment à apticron et cron-apt sous Debian.

Il faut éviter autant que possible les mises à jour automatiques ! Si quelque chose se passe mal, il n’y aurait personne pour résoudre le problème. Ça tombe bien, apticron par exemple peut envoyer des alertes par e-mail. Mais la surveillance par e-mail, c’est has-been !

On passera donc par l’outil de supervision en place pour cela. Pour ma part j’utilise Zabbix et j’administre des serveurs Debian, cette explication se basera donc sur ces technologies.

Préparation des mises à jour

Il faut d’abord qu’un outil télécharge régulièrement les listes de paquets et, pourquoi pas, les paquets eux-mêmes sans les installer.

On utilisera pour cela cron-apt :

# apt-get install cron-apt

Et on configurera sa fréquence d’exécution à une heure, dans le fichier /etc/cron.d/cron-apt :

# Regular cron jobs for the cron-apt package
#
# Every night at 4 o'clock.
#0 4 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt
# Every hour.
# 0 * * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2
# Every five minutes.
# */5 * * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2
0 * * * * root /usr/sbin/cron-apt

Commande pour vérifier la disponibilité de paquets

Pour vérifier la disponibilité de paquets il peut y avoir de nombreuses approches ; j’ai choisi d’utiliser la commande suivante :

# apt-get upgrade --simulate | grep ^Inst | wc -l

Cette commande retourne simplement le nombre de paquets disponibles. Mais cette commande n’est accessible qu’à l’utilisateur root. Utilisons donc sudo pour permettre à un autre utilisateur de l’exécuter :

# apt-get install sudo

Utilisons visudo pour ajouter la ligne suivante, ou créons le fichier /etc/sudoers.d/zabbix si le système en place supporte les configurations déportées pour sudo :

zabbix  ALL=NOPASSWD: /usr/bin/apt-get upgrade --simulate

Intégration de la commande à Zabbix

Pour intégrer cette commande à Zabbix, il faut créer un « user parameter » ; il faut mettre la ligne suivante soit dans /etc/zabbix/zabbix_agentd.conf ou dans un nouveau fichier de /etc/zabbix/zabbix_agentd.d/ :

UserParameter=apt.upgrade,sudo apt-get upgrade --simulate | grep ^Inst | wc -l

Utilisation de la commande dans Zabbix

Pour utiliser ce paramètre dans Zabbix, rien de plus simple ! Il suffit de créer un nouvel élément qui utilisera la clé apt.upgrade. Le stockage de données est numérique (entier) et il n’est pas nécessaire de configurer une intervalle très courte vu que cron-apt ne se lance que toutes les heures.

Sur le même sujet

comments powered by Disqus