Question

Comment devrais-je créer un script de daemontools superviseur?

J'ai commencé à utiliser D.J.Bernsteins' daemontools de garder certains processus en cours d'exécution et fonctionne bien.Mais maintenant, j'ai besoin de surveiller un couple de conditions supplémentaires sur ces processus et je n'ai pas réussi à trouver de bonnes informations sur la façon de le faire.

Mon scénario est que j'ai des processus en cours d'exécution pour une application web (pharo smalltalk machines virtuelles) et ils répondent http, chacun dans leur port (ça c'est pour le pour loadbalance).Je voudrais en quelque sorte de ping ceux pour vérifier qu'ils ne sont pas seulement en cours d'exécution, mais de répondre à des requêtes http.Si ils ne répondent pas d'une certaine manière à une demande de plus de 30 ans, ils devraient être traités comme s'est écrasé et tout simplement d'être redémarré.

Est-ce même possible avec daemontools?si oui, comment dois-je écrire ce script et où dois-je le placer?ou de où est la documentation sur ce sujet?

Était-ce utile?

La solution

La solution la plus simple est de créer un autre daemontool tâche avec un script qui dort pendant 30 secondes, puis les tests pour la présence du service (à l'aide de wget ou curl par exemple).Si le service ne répond pas en temps opportun, vous pouvez redémarrer le service (svc -t yourapp) et/ou l'envoi d'une notification.L'exécution du script du nouveau service pourrait regarder aussi simple que cela:

#!/bin/sh
sleep 30
if ! wget --quiet --timeout=5 --delete-after "http://yourapp.com/" ; then
  svc -t /etc/service/yourapp
fi

J'ai aussi fait une bonne expérience avec des outils comme Munin.Encore une fois, vous devez fournir un script qui fournit des informations sur l'état de votre image.Si vous configurez vos images avec un service REST vous pouvez même fournir vraiment intéressant mesures telles que les sessions actives, inactives session, gc paramètres, la consommation de mémoire, base de données statistiques, ...L'outil, puis dessine nice graphiques au fil du temps et vous permet de spécifier des limites pour être au courant quand les choses se comportent mal.

Autres conseils

Pour détecter si le service est réactif, vous pouvez utiliser CURL (un ajustement parfait pour les scripts HTTP et Command-Line / Shell)

curl --connect-timeout 10 http://8.8.8.8 
curl: (28) connect() timed out!

Et vous pouvez écrire des choses plus sophistiquées, comme vérifier que la réponse est de 200 (OK), etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top