Je prévois d'exécuter plusieurs processus à l'aide de superviseur et veuillez trouver mon fichier supervisord.conf ci-dessous:
[supervisord]
[program:bash]
command=xyz
stdout_logfile =/tmp/bash.log
redirect_stderr=true
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock
[unix_http_server]
file=/tmp/supervisor.sock ; path to your socket file
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
Je souhaite rediriger la sortie standard du processus nommé bash vers la console du superviseur afin que lorsque je démarre le superviseur en utilisant
/usr/bin/supervisord
commande, je pouvais voir les journaux de processus enfant. Comment puis-je faire ceci ? J'ai essayé de mettre syslog pour l'attribut stdout_logfile mais cela n'a pas fonctionné.
Vous pouvez rediriger la sortie standard du programme vers la sortie standard du superviseur à l'aide des options de configuration suivantes:
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
Explication:
/dev/fd/1
(qui est identique à /proc/self/fd/1
), le système clone en fait le descripteur de fichier # 1 (stdout) de ce processus. Utiliser ceci comme stdout_logfile
oblige donc supervisord
à rediriger la sortie standard du programme vers sa propre sortie standard.stdout_logfile_maxbytes=0
désactive la rotation des fichiers journaux, ce qui n'est évidemment pas significatif pour stdout. Ne pas spécifier cette option entraînera une erreur car la valeur par défaut est 50 Mo et le superviseur n'est pas assez intelligent pour détecter que le fichier journal spécifié n'est pas un fichier normal.Pour plus d'informations:
http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html
Voir la transcription ci-dessous d'un exemple de session. Supervisord capture sûrement la sortie standard du ping. De quoi d'autres avez-vous besoin?
(svd)08/09 16:26 [nodakai@kaidev01] ~/prog/svd$ cat supervisord.conf
[supervisord]
[program:ping]
command=ping 8.8.8.8
stdout_logfile =/tmp/ping.log
redirect_stderr=true
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock
[unix_http_server]
file = /tmp/supervisor.sock
[inet_http_server]
port = 127.0.0.1:9001
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
(svd)08/09 16:26 [nodakai@kaidev01] ~/prog/svd$ supervisorctl -c supervisord.conf
ping RUNNING pid 27365, uptime 0:02:02
supervisor> tail ping
: icmp_req=97 ttl=48 time=59.1 ms
64 bytes from 8.8.8.8: icmp_req=98 ttl=48 time=59.2 ms
64 bytes from 8.8.8.8: icmp_req=99 ttl=48 time=59.1 ms
64 bytes from 8.8.8.8: icmp_req=100 ttl=48 time=59.4 ms
64 bytes from 8.8.8.8: icmp_req=101 ttl=48 time=59.8 ms
64 bytes from 8.8.8.8: icmp_req=102 ttl=48 time=59.2 ms
64 bytes from 8.8.8.8: icmp_req=103 ttl=48 time=59.4 ms
64 bytes from 8.8.8.8: icmp_req=104 ttl=48 time=59.5 ms
64 bytes from 8.8.8.8: icmp_req=105 ttl=48 time=59.6 ms
64 bytes from 8.8.8.8: icmp_req=106 ttl=48 time=59.5 ms
64 bytes from 8.8.8.8: icmp_req=107 ttl=48 time=60.1 ms
64 bytes from 8.8.8.8: icmp_req=108 ttl=48 time=59.4 ms
64 bytes from 8.8.8.8: icmp_req=109 ttl=48 time=59.5 ms
64 bytes from 8.8.8.8: icmp_req=110 ttl=48 time=59.5 ms
64 bytes from 8.8.8.8: icmp_req=111 ttl=48 time=59.4 ms
64 bytes from 8.8.8.8: icmp_req=112 ttl=48 time=59.1 ms
64 bytes from 8.8.8.8: icmp_req=113 ttl=48 time=59.3 ms
64 bytes from 8.8.8.8: icmp_req=114 ttl=48 time=59.2 ms
64 bytes from 8.8.8.8: icmp_req=115 ttl=48 time=59.4 ms
64 bytes from 8.8.8.8: icmp_req=116 ttl=48 time=59.5 ms
64 bytes from 8.8.8.8: icmp_req=117 ttl=48 time=59.5 ms
64 bytes from 8.8.8.8: icmp_req=118 ttl=48 time=59.6 ms
64 bytes from 8.8.8.8: icmp_req=119 ttl=48 time=59.4 ms
64 bytes from 8.8.8.8: icmp_req=120 ttl=48 time=59.4 ms
64 bytes from 8.8.8.8: icmp_req=121 ttl=48 time=59.2 ms
64 bytes from 8.8.8.8: icmp_req=122 ttl=48 time=59.3 ms
64 bytes from 8.8.8.8: icmp_req=123 ttl=48 time=59.5 ms
64 bytes from 8.8.8.8: icmp_req=124 ttl=48 time=59.5 ms
64 bytes from 8.8.8.8: icmp_req=125 ttl=48 time=59.3 ms
supervisor>
J'étais en fait un peu perplexe de lire votre réponse, car c'était la fonction de base du démon supervisord
. Peut-être y a-t-il des malentendus à propos de ce que vous avez appelé la "console supervord" ?? La console bash que vous utilisez pour démarrer le démon supervisord
n'imprimera rien. Vous devez vous connecter au démon par la commande supervisorctl
via le socket de domaine Unix dont vous avez spécifié le chemin avec le serverurl = unix:///tmp/supervisor.sock
et file = /tmp/supervisor.sock
lignes.
(svd)08/09 3:51 [nodakai@kaidev01] ~/prog/svd$ supervisorctl -c supervisord.conf
foo FATAL Exited too quickly (process log may have details)
supervisor> help
default commands (type help <topic>):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version
supervisor> tail foo
-rw-r-- 1 nodakai nodakai 1521 8月 9 03:43 supervisord.log
-rw-r--r-- 1 nodakai nodakai 6 8月 9 03:43 supervisord.pid
合計 32
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:10 bin
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 include
drwxrwxr-x 3 nodakai nodakai 4096 8月 9 03:07 lib
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 local
-rw-rw-r-- 1 nodakai nodakai 346 8月 9 03:43 supervisord.conf
-rw-rw-r-- 1 nodakai nodakai 340 8月 9 03:42 supervisord.conf~
-rw-rw-r-- 1 nodakai nodakai 1651 8月 9 03:43 supervisord.log
-rw-r--r-- 1 nodakai nodakai 6 8月 9 03:43 supervisord.pid
合計 32
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:10 bin
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 include
drwxrwxr-x 3 nodakai nodakai 4096 8月 9 03:07 lib
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 local
-rw-rw-r-- 1 nodakai nodakai 346 8月 9 03:43 supervisord.conf
-rw-rw-r-- 1 nodakai nodakai 340 8月 9 03:42 supervisord.conf~
-rw-rw-r-- 1 nodakai nodakai 1781 8月 9 03:43 supervisord.log
-rw-r--r-- 1 nodakai nodakai 6 8月 9 03:43 supervisord.pid
合計 32
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:10 bin
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 include
drwxrwxr-x 3 nodakai nodakai 4096 8月 9 03:07 lib
drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 local
-rw-rw-r-- 1 nodakai nodakai 346 8月 9 03:43 supervisord.conf
-rw-rw-r-- 1 nodakai nodakai 340 8月 9 03:42 supervisord.conf~
-rw-rw-r-- 1 nodakai nodakai 1911 8月 9 03:43 supervisord.log
-rw-r--r-- 1 nodakai nodakai 6 8月 9 03:43 supervisord.pid
supervisor> status
foo FATAL Exited too quickly (process log may have details)
supervisor> quit
(svd)08/09 3:51 [nodakai@kaidev01] ~/prog/svd$
De plus, l'interface graphique Web est très pratique. Ajoutez ces lignes à votre fichier de configuration:
[inet_http_server]
port = 127.0.0.1:9001
Voir le document officiel pour les détails.