C/C++教程

supervisor、supervisord、supervisorctl

本文主要是介绍supervisor、supervisord、supervisorctl,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、概念

 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

这篇关于supervisor、supervisord、supervisorctl的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!