Watchdog : détection de problèmes hardware

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

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