1 votes

Programme de redémarrage de Monit config

J'ai une configuration monit comme ceci :

check process unicorn
with pidfile /tmp/pids/unicorn.0.pid
start program = "/etc/init.d/unicorn start"
stop program = "/etc/init.d/unicorn stop"
restart program = "/etc/init.d/unicorn reload"
if mem is greater than 250.0 MB for 2 cycles then restart
if cpu is greater than 22% for 3 cycles then alert
if cpu is greater than 25% for 2 cycles then restart

Mais il semble que chaque fois que monit essaie de recharger l'application (par exemple à cause d'une mémoire > 250MB), il émet un arrêt puis un démarrage, plutôt que d'utiliser le programme de redémarrage. Y a-t-il un moyen de dire à monit de lancer le programme de redémarrage à la place ? Puisque l'émission d'un arrêt et d'un démarrage provoque l'arrêt du site web pendant un certain temps.

1voto

iamyojimbo Points 111

Je vois le même problème que celui que vous avez signalé. Je ne sais pas pourquoi le "programme de redémarrage" n'est pas utilisé pour effectuer un redémarrage. Cependant, la solution que j'utilise est la suivante :

check process unicorn
with pidfile /tmp/pids/unicorn.0.pid
start program = "/etc/init.d/unicorn start"
stop program = "/etc/init.d/unicorn stop"
if mem is greater than 250.0 MB for 2 cycles then restart
if cpu is greater than 22% for 3 cycles then alert
if cpu is greater than 25% for 2 cycles then exec "/etc/init.d/unicorn reload"

Notez que j'ai laissé le contrôle 'if mem' pour qu'il y ait un arrêt/départ. En effet, je suppose que le rechargement ne sera probablement pas utile si vous avez une fuite de mémoire et qu'un arrêt/démarrage est donc nécessaire. Mais modifiez comme bon vous semble.

À moins de creuser dans le code source de monit et de le corriger (ou d'installer une version plus récente et de découvrir si le problème est déjà corrigé), c'est probablement votre meilleure option.

0 votes

Il se peut que reload n'est pas la même chose que restart - reload (s'il est disponible/est utile pour le démon) relit la configuration, en substance, mais n'est pas disponible pour tout. restart effectue un cycle d'arrêt et de démarrage - je pense que votre configuration fonctionne parce que monit effectue un arrêt puis un démarrage explicite.

0voto

DevOps Points 722

Quelle version de monit utilisez-vous ?

votre syntaxe pour le redémarrage semble légitime

Avez-vous vérifié l'interface web pour vous assurer que la configuration est analysée comme prévu ?

les états de la documentation

RESTART redémarre le service et envoie une alerte. Le redémarrage est effectué en appelant la méthode de redémarrage enregistrée du service ou en appelant d'abord la méthode d'arrêt suivie de la méthode de démarrage si le redémarrage n'est pas défini.

La méthode utilisée par Monit pour le redémarrage consiste à exécuter d'abord le programme d'arrêt, puis à attendre (jusqu'à 30s) que le processus s'arrête, puis à exécuter le programme de démarrage et à attendre (30s) qu'il démarre.

0 votes

Cela s'est passé il y a plusieurs années. Nous avons radicalement changé notre structure pour ne plus avoir à nous préoccuper de ce suivi. Je vous remercie pour cela.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X