Non ho usato Monit ma ci sono alcuni difetti significativi con supervisord.
- programmi dovrebbero correre in primo piano
Questo significa che non si può semplicemente eseguire /etc/init.d/apache2 iniziare. La maggior parte delle volte puoi semplicemente scrivere una fodera, ad es. "source/etc/apache2/envvars & & exec/usr/sbin/apache2 -DFOREGROUND" ma a volte è necessario il proprio script di wrapper. Il problema con gli script wrapper è che si finisce con due processi, un genitore e un figlio. Vedere la prossima falla ...
- supervisord non gestisce bambino processi
Se il programma viene avviato processo figlio, supervisord solito rilevare questo. Se il processo genitore muore (o se viene riavviato usando supervisorctl) i processi figli continuano a funzionare ma saranno "adottati" dal processo init e resteranno in esecuzione. Ciò potrebbe impedire future chiamate del tuo programma in esecuzione o consumare risorse aggiuntive. Le recenti opzioni di configurazione stopasgroup e killasgroup dovrebbero risolvere questo problema, ma non ha funzionato per me.
- supervisord non ha la gestione delle dipendenze - vedere #122
Recentemente ho calamari messa a punto con qlproxy. qlproxyd deve iniziare prima altrimenti il calamaro può fallire. Anche se entrambi i programmi sono stati gestiti con supervisord, non c'era modo di garantirlo. Avevo bisogno di scrivere uno script di avvio per calamaro che lo facesse aspettare il processo qlproxyd.Aggiunta del script di avvio ha provocato il problema processo orfano descritto in difetto 2
- supervisord non consente di controllare il ritardo tra startretries
volte, quando un processo non riesce per iniziare (o si blocca), è perché non può accedere a un'altra risorsa, probabilmente a causa di una oscillazione della rete. Supervisore può essere impostato per riavviare il processo un numero di volte. Tra riavvii il processo entrerà in uno stato "BACKOFF" ma non c'è documentazione o controllo sulla durata del backoff.
Nel suo supervisore difensore soddisfa le nostre esigenze l'80% delle volte. La configurazione è ragionevole e la documentazione piuttosto buona.
La creazione di un tale wrapper non è un problema: se si sta eseguendo un software di monitoraggio, di solito si ha il controllo sul proprio file system. E serve solo per creare uno script banale. +1 per una buona spiegazione. –
@xavier non sono d'accordo, uno script di wrapper è ancora un altro SPOF e non tutti i Deamon possono essere avvolti in modo deterministico, pensare ad alcune cose java ad esempio – Darek
@ Dārayavahuštdi, hai un punto valido, ma con supervisord è il contrario: alcuni programmi come per demonizzare, mentre supervisord richiede tutto per rimanere in primo piano. Scrivere un wrapper per Monit sembra molto più semplice, comunque. http://supervisord.org/subprocess.html#nondaemonizing-of-subprocesses http://www.mmonit.com/wiki/Monit/FAQ#pidfile – Amir