J'essaie de démarrer un programme (Resque) mais cela prend un peu de temps avant qu'un fichier pid ne soit écrit. Ainsi, je pense que Monit pense que le programme n'a pas démarré et démarre un ou deux programmes supplémentaires avant l'écriture du fichier pid du premier.
Comment puis-je retarder à nouveau l'heure de vérification de Monit, uniquement pour ce processus? Ou devrais-je résoudre cela d'une autre manière?
Réponses:
Comment puis-je retarder à nouveau l'heure de vérification de Monit, uniquement pour ce processus?
Ce que vous essayez d'atteindre pourrait être fait via la fonction " SERVICE POLL TIME " de monit
La documentation de Monit indique
L'une des méthodes pour personnaliser l'interrogation du service est
CHAQUE [nombre] CYCLES
Exemple:
Ou devrais-je résoudre cela d'une autre manière?
J'ai également fait une première tentative pour surveiller les tâches de resque avec monit car monit est un démon très léger mais finalement réglé avec DIEU. Je sais, je sais que DIEU est plus gourmand en ressources par rapport au monit mais en cas de resque nous avons trouvé que c'était un bon match.
la source
Vous pouvez vérifier un service spécifique à un intervalle différent de celui par défaut ...
Voir SERVICE POLL TIME dans la documentation Monit.
Un exemple pour votre programme Resque serait de vérifier un nombre différent de cycles:
ou dans la section des exemples:
ou vous pouvez tirer parti des vérifications de style cron.
ou si vous rencontrez un démarrage lent, vous pouvez prolonger le délai d'expiration dans la commande de démarrage du service:
la source
with timeout 90 seconds
était exactement ce que je voulais. Merci.Vous pouvez également vérifier si quelque chose a échoué pendant X fois de suite:
Ou pendant X fois dans les sondages Y:
Ou les deux:
( d'ici )
la source
Un membre de mon équipe a trouvé une solution plutôt intelligente qui permet à monit de vérifier fréquemment (toutes les minutes) , mais une fois qu'il a tenté de redémarrer le service (ce qui prend environ 10 minutes), il attendra une période de grâce spécifiée avant d'essayer de démarrer encore.
Cela évite d'attendre trop longtemps entre les contrôles, ce qui, combiné à un démarrage lent, a un impact beaucoup plus important pour les clients. Il fonctionne en utilisant un script intermédiaire qui agit comme indicateur pour indiquer que monit prend déjà des mesures depuis le dernier échec.
Si bamboo (application Web à démarrage lent) est arrêté pendant 3 minutes d'affilée, redémarrez, MAIS uniquement si un script de redémarrage n'est pas déjà en cours d'exécution.
Le script qui est appelé a un sommeil spécifié qui attend plus longtemps que l'heure de début la plus lente pour le service (dans notre cas, nous nous attendons à terminer en ~ 10, donc nous dormons pendant 15)
la source
La version actuelle de Monit (5.16) prend en charge un délai d'expiration pour les scripts de démarrage avec la syntaxe:
Les documents indiquent:
C'est ce que fera la valeur "timeout".
la source
timeout
devrait s'appliquer aux démarrages et aux redémarrages. Autant que je sache, il met un délai avant que Monit vérifie que son: a) en cours d'exécution, b) le fichier PID attendu est créé et c) un processus avec le PID attendu est en cours d'exécution. J'ai eu quelques problèmes pour le faire fonctionner où l'application spécifiée n'était qu'un script qui a bifurqué le processus réel, puis est revenu sans savoir ce qui se passait avec le processus. Le faire fonctionner dans ce cas était pénible.START DELAY
.