1、supervisor
python语言编写的进程管理工具,分client和server端,它可以很方便的监听、启动、停止、重启一个或多个进程。
当一个进程意外被杀死,supervisor监听到进程死后,可以很方便的让进程自动恢复,不再需要程序员或系统管理员自己编写代码来控制。
supervisot能提供接口,可扩展功能,一个是event机制,再一个是xml_rpc,supervisor的web管理端和远程调用的时候,就要用到它了
2、supervisord(server)
supervisord是supervisor的服务端程序。运行supervisor时会启动一个进程supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启
干的活:启动supervisor程序自身,启动supervisor管理的子进程,响应来自clients的请求,重启闪退或异常退出的子进程,把子进程的stderr或stdout记录到日志文件中,生成和处理Event。
3、supervisorctl(client)
supervisorctl 查看子进程状态,启动/停止/重启子进程,获取running子进程的列表等。最牛逼的一点是,supervisorctl不仅可以连接到本机上的supervisord,还可以连接到远程的supervisord,当然在本机上面是通过UNIX socket连接的,远程是通过TCP socket连接的。supervisorctl和supervisord之间的通信,是通过xml_rpc完成的。 相应的配置在[supervisorctl]块里面
命令 | 含义 |
---|---|
supervisorctl status | 查看所有子进程服务状态 |
supervisorctl restart | 重启所有子进程服务 |
supervisorctl restart name | 重启子进程名字为name的服务 |
supervisorctl start name | 开启子进程名字为name的服务 |
supervisorctl stop all | 关闭所有子进程服务 |
supervisorctl stop name | 停止子进程名字为name的服务 |
supervisorctl shutdown | 关闭所有子进程服务 |
supervisorctl reload | 重载配置文件,重启所有子进程服务 |
supervisorctl update | 更新所有服务,一般用在添加新服务后 |
supervisorctl update name | 更新子进程名字为name服务 |
4、 Web Server
Web Server主要可以在界面上管理进程,Web Server其实是通过XML_RPC来实现的,可以向supervisor请求数据,也可以控制supervisor及子进程。配置在[inet_http_server]块里面
5、XML_RPC接口
这个就是远程调用的,上面的supervisorctl和Web Server就是它弄的;
二、实操
1、安装
pip install supervisor yum install epel-release yum install -y supervisor
2、配置文件
默认生成的可执行文件存放路径
whereis supervisord whereis supervisorctl whereis echo_supervisord_conf
案例
tree /etc/supervisor/ /etc/supervisor/ ├── conf.d ##被管理的进程服务配置文件 │ ├── alertmanager.conf │ ├── mqdb.conf │ ├── node_exporter.conf │ └── prometheus.conf └── supervisord.conf ## 主配置文件
cat supervisord.conf
; supervisor config file [unix_http_server] file=/var/run/supervisor.sock ; (the path to the socket file) chmod=0700 ; sockef file mode (default 0700) [inet_http_server] ; inet (TCP) server disabled by default port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) [supervisord] user=root ; setuid to this UNIX account at startup; recommended if root logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) logfile_maxbytes=1024MB ; (max main logfile bytes b4 rotation;default 50MB) logfile_backups=10 ; (num of main logfile rotation backups;default 10) ; 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.sock ; use a unix:// URL for a unix socket history_file=/etc/supervisor/history.log ; use readline history if available prompt=mqdb1.internal.moqi.ai ; cmd line prompt (default "supervisor") minfds=65535 ; (min. avail startup file descriptors;default 1024) ; 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. [include] files = /etc/supervisor/conf.d/*.conf
supervisor简介_学无止境gwx的博客-CSDN博客_supervisor是什么
运维技术之一、supervisorctl 守护进程的安装和使用_weixin_34319817的博客-CSDN博客
supervisorctl命令的使用_惟肖肖肖的博客-CSDN博客_supervisorctl