IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment coder un watchdog ?


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut Comment coder un watchdog ?
    Bonjour à tous et toutes,

    Je me penche actuellement sur la création d'un composant logiciel de type "watchdog".

    Naturellement il devra être simple, léger, solide et fiable.

    L'idée est la suivante, au boot du système ce watchdog sera démarré comme un service (/etc/rc.d is my friend).
    Une fois lancé et correctement initialisé, il va réalisera le démarrage d'une série de logiciel suivant une liste présente dans un fichier.

    Ce fichier contiendra une série de paramètres de configuration tel que fréquence de requête, délai de réponse, maximum de requètes, maximum de restart.

    Le WD interrogera chaque process qui devra répondre dans un certain délai (delay = x fixé dans la config) si le process ne répond pas dans ce delai, le WD réemettra son appel avec un maximum d'essai (maximum = y fixé dans la config).

    Si aucune réponse n'est toujours pas parvenu après ce maximum, le watchdog procédera à l'arrêt puis au redémarrage du process (avec un maximum de restart conforme à la config)


    Voici en quelques mots l'idée sur papier. Est-ce que cela vous semble correct?

    Est-ce que vous auriez des sources d'exemple d'un tel composant ?


    Merci beaucoup

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par Efhache84 Voir le message
    Voici en quelques mots l'idée sur papier. Est-ce que cela vous semble correct?
    Sur le papier cela semble un premier jet correct.

    Avant de te lancer dans le codage (ou la recherche de code existant ), il te reste cependant quelques questions auxquelles il faut répondre.

    • Les processus supervisés se trouvent t'ils obligatoirement sur la machine qui héberge le watchdog ou bien peuvent ils être sur une autres machine ?
    • Comment le superviseur/watchdog va t'il tuer les processus récalcitrants/zombiaques/qui ne respectent pas le protocole avec le watchdog ?
    • Comment les processus supervisés communiquent t'ils avec le processus superviseur (pipe, socket, memoire partagée, ...) ?
    • Comment est ce que tu gères les éventuelles dépendances de programmes (pour relancer ce programme 0, il faut d'abord arrêter le processus 1 puis le processus 2 puis relancer le processus 2 puis le processus 1 puis le programme 0) ?
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 18
    Par défaut
    Avant de te lancer dans le codage (ou la recherche de code existant ), il te reste cependant quelques questions auxquelles il faut répondre.

    * Les processus supervisés se trouvent t'ils obligatoirement sur la machine qui héberge le watchdog ou bien peuvent ils être sur une autres machine ?
    * Comment le superviseur/watchdog va t'il tuer les processus récalcitrants/zombiaques/qui ne respectent pas le protocole avec le watchdog ?
    * Comment les processus supervisés communiquent t'ils avec le processus superviseur (pipe, socket, memoire partagée, ...) ?
    * Comment est ce que tu gères les éventuelles dépendances de programmes (pour relancer ce programme 0, il faut d'abord arrêter le processus 1 puis le processus 2 puis relancer le processus 2 puis le processus 1 puis le programme 0) ?
    Pour un code existant tout fait j'ai un doute...mais si ça existe (et que je le comprend), pourquoi ne pas s'inspirer... jamais réinventer la roue ?

    Pour les réponses :

    1) les process supervisés seront sur la même machine, c'est un petit système embarqué (style station météo / domotique center)
    2)pour tuer probablement l'utilisation de signaux à la unix (9 et 15) si zombie, là je ne vois qu'un reboot hard pour s'en débarasser. Le WD soft sera couplé à un WD hard... sait-on jamais que le WD soft soit "en panne" il faut revenir à un état réputé sain.
    3)les process communiqueront par un procédé de message over socket... avec une sorte de message server (pîèce maitresse) qui contiendra une message queue pour chaque process et/ou pour un groupe de process (j'y réfléchis)

    4)Mon idée est de suffisement cloisonner pour éviter les dépendances. Chaque process pourra être démaré, stoppé, redémarré de manière independante. Seul le WD et le message server doivent être démarré au début et maitnenu. le message server étant une sorte de fils du WD (on vérifiera son existence par SIGCHLD)


    En espérant que je ne me trompe pas dans mes idées

  4. #4
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    C'est un peu hs, mais je te conseille d'utiliser la libprivman pour faire de la separation de privileges ! Etant donne que les watchdogs sont lances en root, ca fait toujours propre La doc est abondante sur la lib et son utilisation extremement simple.

    Bonne chance pour ton projet !

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    ce qu'il y a avec inittab ne te convient pas ?

Discussions similaires

  1. [C#] Comment coder un String.Join pour des int ?
    Par luimême dans le forum C#
    Réponses: 2
    Dernier message: 12/10/2005, 08h14
  2. [matrice spéciale] comment coder ce genre de matrices?!
    Par wjean dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 09/05/2005, 09h50
  3. Comment coder un effet de neige ?
    Par the_magik_mushroom dans le forum Langage
    Réponses: 11
    Dernier message: 17/12/2004, 23h29
  4. Comment coder une tabulation pour cut ?
    Par ggnore dans le forum Linux
    Réponses: 2
    Dernier message: 26/11/2004, 10h31
  5. Comment coder guillemets et cotes ?
    Par Vow dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 14/05/2003, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo