A tool for a long time in silence: supervisor

Keywords: Linux supervisor Redis Zookeeper Unix

Note that since the supervisor cannot monitor the background program, all commands executed by the command need to be executed in the foreground, such as nginx: command = /usr/local/bin/nginx -g 'daemon off;'

Talk about the benefits of this tool:
Manage your process, terminate the automatic restart service process abnormally
Turn off the machine and start the service process automatically
Centralized management can restart the service process in batches
Install supervisor

yum install epel-release
yum install -y supervisor

Systemctl enable Supervisor
Systemctl start supervisor start service

Edit the configuration file / etc / supervisor.conf

; Sample supervisor config file.

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)
;chmod=0700                 ; sockef file mode (default 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001        ; (ip_address:port specifier, *:port for all iface)-Modify the listening port, you can web Administration
username=root            ; (default is no username (open server))-web Manage user name
password=123               ; (default is no password (open server))-web Management password

[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10          ; (num of main logfile rotation backups;default 10)
loglevel=info               ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false              ; (start in foreground if true;default false)
minfds=1024                 ; (min. avail startup file descriptors;default 1024)
minprocs=200                ; (min. avail process descriptors;default 200)
;umask=022                  ; (process file creation umask;default 022)
;user=chrism                 ; (default is current user, required if root)
;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
;directory=/tmp              ; (default is not to cd during start)
;nocleanup=true              ; (don't clean up tempfiles at start;default false)
;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)
;environment=KEY=value       ; (key value pairs to add to environment)
;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available

; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.

;[program:theprogramname]
;command=/bin/cat              ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=true              ; retstart at unexpected quit (default: true)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

; The below sample eventlistener section shows all possible
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.

;[eventlistener:theeventlistenername]
;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;events=EVENT                  ; event notif. types to subscribe to (req'd)
;buffer_size=10                ; event buffer queue size (default 10)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=-1                   ; the relative start priority (default -1)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions
;serverurl=AUTO                ; override serverurl computation (childutils)

; The below sample group section shows all possible group values,
; create one or more 'real' group: sections to create "heterogeneous"
; process groups.

;[group:thegroupname]
;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
;priority=999                  ; the relative start priority (default 999)

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.
[program:redis]     -Add one redis Startup service
directory = /root/redis-2.8.17/
command = /root/redis-2.8.17/src/./redis-server /root/redis-2.8.17/redis.conf
autostart = true                                               ;stay supervisord It starts when it starts
startsecs = 5                                                   ;If there is no abnormal exit after 5 seconds of startup, it will be regarded as normal startup
priority=200                           **;The smaller the priority number, the earlier to execute**
autorestart = true                                            ;Automatic restart after abnormal exit of program
startretries = 3                                                ;Number of automatic retries for startup failure, default is 3
user = root                                                      ;Which user started
redirect_stderr = true                                      ;hold stderr Redirection to stdout,default false
stdout_logfile_maxbytes = 20MB                    ;stdout Log file size, default 50 MB
stdout_logfile_backups = 20
stdout_logfile = /etc/supervisord.d/redis.log-Output log

[program:logjar]-start-up jar Package attention java Environment variable problems, using jdk Specified directory
directory = /root/
command = /usr/local/java/jdk1.8.0_171/bin/java -jar /root/log-api-imp-0.0.1-SNAPSHOT.jar
autostart = true                                               ;stay supervisord It starts when it starts
startsecs = 5                                                   ;If there is no abnormal exit after 5 seconds of startup, it will be regarded as normal startup
priority=300
autorestart = true                                            ;Automatic restart after abnormal exit of program
startretries = 3                                                ;Number of automatic retries for startup failure, default is 3
user = root                                                      ;Which user started
redirect_stderr = true                                      ;hold stderr Redirection to stdout,default false
stdout_logfile_maxbytes = 20MB                    ;stdout Log file size, default 50 MB
stdout_logfile_backups = 20
stdout_logfile = /etc/supervisord.d/logjar.log

[program:zookeeper]
directory = /root/zookeeper/bin/
command = /root/zookeeper/bin/zkServer.sh start-foreground -Add this parameter, and zookeeper Run at the front desk, otherwise an error will be reported
autostart = true                                               ;stay supervisord It starts when it starts
startsecs = 5                                                   ;If there is no abnormal exit after 5 seconds of startup, it will be regarded as normal startup
priority=100
autorestart = true                                            ;Automatic restart after abnormal exit of program
startretries = 3                                                ;Number of automatic retries for startup failure, default is 3
user = root                                                      ;Which user started
redirect_stderr = true                                      ;hold stderr Redirection to stdout,default false
stdout_logfile_maxbytes = 20MB                    ;stdout Log file size, default 50 MB
stdout_logfile_backups = 20
stdout_logfile = /etc/supervisord.d/zookeeper.log
environment=JAVA_HOME="/usr/local/java/jdk1.8.0_171"-point javahome environment variable

;[include]
;files = /etc/supervisord.d/*.ini

Trample:
1. Note: semicolon is a comment. I didn't understand the configuration at the beginning. I found that I couldn't log in to web management
2. Environment variables are required for zookeeper execution
3. The configuration file cannot be identified by [include]. I copied the redis, jar, and zookeeper configuration files to / etc / supervisor.conf, and the implementation succeeded. The configuration file is used when starting the service, as shown in the following figure

web management page

supervisor can also use command management
supervisorctl

Status view program status
stop name? Close the name program
start name
restart name? Restart the name program
reread reads the updated configuration file and will not start the newly added program
update? Restart the program modified by the configuration file
,-supervisor

Posted by nwoottonn on Fri, 29 Nov 2019 10:20:32 -0800