Le watchdog réseau et VirtualHub

Le watchdog réseau et VirtualHub

L'application VirtualHub permet d'émuler un YoctoHub et propose presque les mêmes fonctionnalités. Cependant, une fonctionnalité manquait: le watchdog réseau. Ce watchdog permet de redémarrer les YoctoHubs en cas de perte de connectivité réseau prolongée. Cette fonctionnalité est désormais utilisable dans l'application VirtualHub. Il est donc maintenant possible de rebooter votre ordinateur à distance en utilisant VirtualHub, mais rassurez-vous, nous avons prévu des garde-fous.



Avant de parler de cette nouveauté, sachez que pour des raisons évidentes de sécurité, elle est désactivée par défaut. Pour autoriser VirtualHub à redémarrer votre ordinateur, il faut le lancer en ligne de commande avec des arguments spécifiques (cf. plus bas). Le comportement de base de VirtualHub reste inchangé.

Le watchdog réseau


Le watchdog réseau a pour but de redémarrer complètement le système en cas de perte de connectivité réseau prolongée du YoctoHub ou de VirtualHub.

Cette fonctionnalité vise à débloquer les rares cas de plantage des cartes réseau. Sur les cartes réseau filaires, ces bugs sont pour ainsi dire inexistants, mais sur les réseaux sans fil, en particulier le réseau GSM, il arrive que la carte SIM et/ou la carte réseau n'arrive plus à se reconnecter. Dans ce cas, la seule solution est d'effectuer un power cycle de la carte réseau.

Pour tester la connectivité réseau, les hubs et VirtualHub utilisent le callback HTTP (sur les YoctoHubs, les requêtes NTP peuvent aussi être utilisées pour détecter une perte de connectivité). Le watchdog réseau ne sert donc à rien si aucun callback HTTP n’est défini. En effet, si aucun callback n'est configuré, VirtualHub ne détectera pas d'erreur de connexion et il ne redémarrera jamais la machine. Il peut donc être utile de configurer un callback HTTP qui n'envoie aucune commande et dont le seul but est d'activer le watchdog.

Notez que si vous stoppez le serveur qui répond au callback HTTP, les Hubs interpréteront ceci comme une perte de connexion réseau.

Le panneau de configuration du watchdog réseau
Le panneau de configuration du watchdog réseau



Vous pouvez configurer le délai du watchdog depuis le panneau de configuration, juste en dessous de la partie callback HTTP. Une valeur inférieure à 90 secondes désactive le watchdog, et une valeur supérieure à 90 secondes l'active. Si vous avez besoin du watchdog, utilisez un délai suffisamment long pour vous assurer que les hubs ou VirtualHub aient le temps d'établir la connexion. Sinon, vous risquez d'avoir des machines et des hubs qui redémarrent en boucle.

Les actions du watchdog


Sur les YoctoHubs, la seule action possible à la fin du décompte est un redémarrage du module. Avec VirtualHub, il existe trois possibilités: loguer un message, stopper l’exécution ou redémarrer la machine.

Le choix entre ces trois possibilités se fait en utilisant l'option --www_watchdog. Cette option prend en argument les mots clefs log, stop ou reboot.


C:\VirtualHub\windows\amd64>VirtualHub.exe --www_watchdog log
[2024-06-13 09:06:41] (01) Yoctopuce VirtualHub 1.10.61386 (dated Jun 12 2024)
[2024-06-13 09:06:41] (01) Serial is VIRTHUB0-66c7ee53a7
[2024-06-13 09:06:41] (01) load settings from C:\Users\abc\AppData\Roaming\.virtualhub.dat
[2024-06-13 09:06:41] (01) NetworkName is VIRTHUB0-66c7ee
[2024-06-13 09:06:41] (01) LogicalName is not set
[2024-06-13 09:06:41] (01) HTTP server is listening port 4444
[2024-06-13 09:06:46] (02) 07:06:46 Callback: failed to connect [invalid.com]
...
[2024-06-13 09:08:06] (02) 07:08:06 Callback: failed to connect [invalid.com]
[2024-06-13 09:08:11] (01) Network watchdog has expired
....


L'option log affiche un message de log qui indique que le watchdog a expiré. C'est le comportement par défaut de VirtualHub. Par exemple, avec un watchdog de 2 minutes, le message "Network watchdog has expired" sera logué toutes les deux minutes. Cela ne résout aucun problème, mais permet de débugger le problème et évite de redémarrer une machine quand on ne s'y attend pas.

C:\VirtualHub\windows\amd64>VirtualHub.exe --www_watchdog reboot


L'option reboot est l'option la plus proche du comportement des YoctoHubs. Quand le watchdog expire, l'OS de la machine (Windows, Linux ou macOS) redémarre. Il faut cependant faire très attention lors de l'usage de cette option. Premièrement, il faut s'assurer que l'OS est configuré pour démarrer automatiquement VirtualHub. Si ce n'est pas le cas, on ne sera pas bien avancé, car l'OS aura redémarré, mais l'application VirtualHub ne sera pas exécutée. Pour les utilisateurs de Linux et de macOS, il faut aussi s'assurer que le script de démarrage lance VirtualHub avec les droits administrateur (root). Dans le cas contraire, l'OS bloquera la commande de redémarrage.

L'option stop va simplement stopper l'exécution de VirtualHub et retourner un code d'erreur. Cette option permet de redémarrer VirtualHub sans rebooter complètement l'OS de la machine. Il faut cependant que le script de démarrage soit configuré pour relancer VirtualHub automatiquement si le processus s'arrête.

Par exemple, sous Linux l'option Restart=on-failure va relancer l'application si elle se termine avec un code d'erreur.

[Unit] Description=Yoctopuce VirtualHub After=network.target [Service] ExecStart=/usr/sbin/VirtualHub --www_watchdog stop -c /etc/vhub.byn Restart=on-failure Type=simple [Install] WantedBy=multi-user.target



Sous Windows, il est possible d'écrire un petit fichier batch qui a le même comportement:

:retry C:\VirtualHub\windows\amd64>VirtualHub.exe --www_watchdog stop if "%ERRORLEVEL%" == "0" goto retry



Cette option est aussi utile si on veut écrire son propre code pour redémarrer la machine. Par exemple, il peut être prudent de stopper proprement d'autres services qui sont exécutés sur la machine avant de redémarrer l'OS.


Conclusion


Sur les YoctoHubs, le watchdog réseau est présent depuis très longtemps, mais on nous a demandé s’il était possible d'ajouter cette fonctionnalité au VirtualHub. En effet, certaines personnes utilisent des Raspberry Pi avec des cartes réseau GSM et rencontrent exactement les mêmes problèmes que ceux que nous avons dû gérer sur nos YoctoHubs.

Il est possible d'ajouter ce type de watchdog en utilisant des applications tierces ou en écrivant sa propre application, mais comme nous avions déjà toute la logique dans les hubs, nous avons ajouté cette fonctionnalité à VirtualHub.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.