Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
linux:supervisor [14-10-2014 09:29] – edmc73 | linux:supervisor [16-12-2019 15:26] (Version actuelle) – [Supervisor] edmc73 | ||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
Avant de détailler plus en détail, lisez ce lien => https:// | Avant de détailler plus en détail, lisez ce lien => https:// | ||
+ | ===== Config ===== | ||
+ | |||
+ | Les fichiers de config doivent être écrit dans **/ | ||
+ | |||
+ | < | ||
+ | [program: | ||
+ | command=/ | ||
+ | autostart=true | ||
+ | autorestart=true | ||
+ | user=toto | ||
+ | stdout_logfile=/ | ||
+ | stderr_logfile=/ | ||
+ | </ | ||
+ | |||
+ | Si vous souhaitez lancer plusieurs instances, vous devez spécifier le nom des process avec obligatoirement la variable %(process_num)s | ||
+ | < | ||
+ | [program: | ||
+ | command=/ | ||
+ | process_name=worker_%(process_num)02d | ||
+ | numprocs=4 | ||
+ | autostart=true | ||
+ | autorestart=true | ||
+ | user=toto | ||
+ | stdout_logfile=/ | ||
+ | stderr_logfile=/ | ||
+ | </ | ||
+ | |||
+ | Si vous souhaitez que supervisor se place dans un répertoire avant de lancer la commande, ajoutez | ||
+ | directory=/ | ||
+ | ===== Commandes ===== | ||
+ | |||
+ | Pour se mettre dans le shell de supervisor | ||
+ | supervisorctl | ||
+ | |||
+ | < | ||
+ | supervisor> | ||
+ | |||
+ | default commands (type help < | ||
+ | ===================================== | ||
+ | add clear fg open quit remove | ||
+ | avail exit | ||
+ | </ | ||
+ | |||
+ | Pour lire les fichiers de config | ||
+ | > reread | ||
+ | Pour appliquer les fichiers de config | ||
+ | > update | ||
+ | |||
+ | Lister les process dispo | ||
+ | > avail | ||
+ | Pour désactiver un process | ||
+ | > remove nom_du_process | ||
+ | Activer un process | ||
+ | > add | ||
+ | |||
+ | Voir ce qui se passe dans un process | ||
+ | > fg nom_du_process | ||
+ | |||
+ | ===== Notification par mail ===== | ||
+ | |||
+ | En cas de crash on aimerait bien recevoir un mail, pour cela il faut utiliser un script python | ||
+ | |||
+ | https:// | ||
+ | |||
+ | apt install python-pip | ||
+ | pip install superlance | ||
+ | ou | ||
+ | easy_install superlance | ||
+ | |||
+ | si il manque des dépendances python, installez-les | ||
+ | |||
+ | Ensuite, créer une config pour supervisor ( https:// | ||
+ | < | ||
+ | [eventlistener: | ||
+ | command=crashmail -p program1 -p group1: | ||
+ | events=PROCESS_STATE_EXITED | ||
+ | </ | ||
+ | |||
+ | puis | ||
+ | supervisorctl reread | ||
+ | supervisorctl update | ||
+ | |||
+ | On peut aussi spécifier le mail de l' | ||
+ | < | ||
+ | [eventlistener: | ||
+ | command=crashmail -a -m dev@example.com -s '/ | ||
+ | events=PROCESS_STATE | ||
+ | </ | ||
+ | |||
+ | |||
+ | Plus d'info sur les events => http:// | ||
+ | |||
+ | ===== Les logs ===== | ||
+ | |||
+ | Supervisord rotate lui même ses logs (si > 50Mo, rotate sur 10 fichiers par défaut) mais si vous voulez utiliser logrotate, il est important de mettre l' | ||
+ | |||
+ | > **copytruncate** | ||
+ | > Truncate the original log file to zero size in place after creating a copy, instead of moving the old log file and optionally creating a new one. It can be used when some program cannot | ||
+ | |||
+ | |||
+ | < | ||
+ | / | ||
+ | daily | ||
+ | rotate 60 | ||
+ | copytruncate | ||
+ | compress | ||
+ | missingok | ||
+ | notifempty | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Puis de désactivez aussi la taille max des logs et la rotation automatique | ||
+ | < | ||
+ | [program: | ||
+ | directory=/ | ||
+ | command=/ | ||
+ | stderr_logfile=/ | ||
+ | stdout_logfile=/ | ||
+ | stdout_logfile_maxbytes=0 | ||
+ | stderr_logfile_maxbytes=0 | ||
+ | stdout_logfile_backups=0 | ||
+ | stderr_logfile_backups=0 | ||
+ | </ | ||
+ | |||
+ | Vous pouvez aussi rediriger les logs d' | ||
+ | redirect_stderr=true |