Watchdog : détection de problèmes hardware
Contents
1 Introduction
En matériel informatique, un chien de garde (watchdog en anglais) est un mécanisme électronique ou logiciel destiné à s'assurer qu'un automate ne s'est pas bloqué à une étape particulière du traitement. C'est une protection destinée à redémarrer le système si une action définie n'est pas exécutée dans un délai donné.
Quand il est réalisé par logiciel, il s'agit en général d'un compteur qui est régulièrement remis à zéro. Si le compteur dépasse une valeur donnée (timeout) alors on procède à un reset (redémarrage) du système. Le chien de garde consiste souvent en un registre qui est mis à jour via une interruption régulière. Il peut également consister en une routine d'interruption qui doit effectuer certaines tâches de maintenance avant de redonner la main au programme principal. Si une routine entre dans une boucle infinie, le compteur du chien de garde ne sera plus remis à zéro et un reset est ordonné. Le chien de garde permet aussi d'effectuer un redémarrage si aucune instruction n'est prévue à cet effet. Il suffit alors d'écrire une valeur dépassant la capacité du compteur directement dans le registre. Le chien de garde lancera alors le reset.
En informatique industrielle le chien de garde est souvent réalisé par un dispositif électronique, en général une bascule monostable. Il repose sur le principe que chaque étape du traitement doit s'exécuter en un temps maximal. Il est donc possible d'armer une temporisation avant son exécution. Quand la bascule retourne à son état stable avant que la tâche ne soit achevée, le chien de garde se déclenche. Il met en œuvre un système de secours qui peut soit déclencher une alarme, soit faire redémarrer l'automate, soit mettre en marche un système redondant...
Les chiens de garde sont souvent intégrés dans les microcontrôleurs et dans les cartes mères dédiées au temps réel.
2 Installation
Watchdog est simple à installer et à mettre en place :
apt-get install watchdog
Il y a une petite partie noyau également à implémenter :
CONFIG_WATCHDOG=y CONFIG_SOFT_WATCHDOG=y
3 Configuration
La configuration se fait dans le fichier /etc/watchdog.conf. Nous allons voir ici quelques différents mécanismes.
3.1 Réseaux
Prenez ici par exemple les adresses IP 192.168.0.138 et 192.168.0.1. Celà signifie que nous allons pinger en continue ces adresses IP et que si l'une d'elle ne réponds pas, c'est que nous avons une défaillance au niveau de notre machine et qu'il faut donc rebooter. Celà est assez dangereux en production comme méthode, donc soyez sûr de ce que vous faites.
ping = 192.168.0.138 ping = 192.168.0.1 interface = eth0 file = /var/log/messages
Les pings partent de la carte réseau eth0 et sont logés dans /var/log/messages.
3.2 Charge système
Si vous pense que votre machine ne contient aucuns bugs et que si la charge mémoire est trop importante c'est qu'il y a un problème et qu'il faut rbooter, alors voici une option qui va vous séduire :
max-load-1 = 24 max-load-5 = 18 max-load-15 = 12
A vous de modifier les valeurs en fonction de vos besoins.
3.3 Température
Si vous sondez votre machine et voulez redémarrer en cas de surchauffe, utilisez ceci :
temperature-device = /dev/hda max-temperature = 50
Vous devriez normalement avoir tout configurer au niveau des sensors au préalable (ex: hdparm & lm-sensors)
3.4 Options par défaut
Vous devez également paramétrer les options par défaut et les adapter à vos besoins :
# Defaults compiled into the binary admin = root interval = 10 logtick = 1 # This greatly decreases the chance that watchdog won't be scheduled before # your machine is really loaded realtime = yes priority = 1 # Check if syslogd is still running by enabling the following line pidfile = /var/run/syslogd.pid
Une fois terminer, appliquez les changements en redémarrant le service :
/etc/init.d/watchdog restart