supervisord进程管理服务

简介官网 http://supervisord.org/supervisor是一个允许用户监视和控制在linux操作系统的进程数量的客户端/服务器系统。由python语言编写,用以监控服务器的运行,发现问题能立即自动预警及自动重启等功能。supervisor还要求管理的程序是非daemon程序,supervisord会帮你把它转成daemon程序。 组件supervisord服务端,他负责在他自己的进程下起一个子进程,相应来自客户端的命令,重启崩溃或异常退出的子进程,输出相关日志,针对于子进程活跃期间的时间进行生成和管理配置文件位置: /etc/supervisord.conf 注意配置合理权限 supervisorctl命令行客户端,有supervisord提供的一个shell-like接口,通过它,用户可以连接到不同的supervisorctl进程,查看,起停子进程,列出正在运行的子进程。通过TCP进行交互,提供认证,在[supervisorctl]段进行统一的配置 web serversupervisorctl的web管理界面,通过访问http://localhost:9001/来管理子进程状态,[inet_http_server]这段进行配置 安装前提条件是要有python环境,linux一般自带python环境,这里以centOS为例。 yum安装yum install -y supervisor启动systemctl start supervisor配置文件解析生成配置文件:echo_supervisord_conf > /tmp/supervisord.conf一般yum安装后配置文件默认位置是/etc/supervisor/supervisord.conf。其中注释是以分号开头 [unix_http_server] #这段是通过socket文件启动的web server,这个要有,因为命令行supervisorctl是通过这个实现的。file = /tmp/supervisor.sockchmod = 0777chown= nobody:nogroupusername = userpassword = 123[inet_http_server] #通过网络端口启动的web serverport = 127.0.0.1:9001username = userpassword = 123[supervisord] #这块是服务配置logfile = /tmp/supervisord.log 日志文件logfile_maxbytes = 50MB 日志文件最大sizelogfile_backups=10 日志轮询下备份数loglevel = info 日志级别pidfile = /tmp/supervisord.pid pid文件位置nodaemon = false 如果是true,supervisor将在前端启动minfds = 1024 supervisord启动成功的最小文件描述符数minprocs = 200 supervisord启动成功的最小进程描述符数umask = 022user = chrism 启动用户,这块要注意,这个用户要有相应的目录权限identifier = supervisor supervisor进程的 identifier字符串,用户RPC协议接口directory = /tmp 当supervisord服务daemonizes时,切换到这个目录,可用这个%(here)s变量来扩展到整个配置文件nocleanup = true 禁止supervisord在启动时间清空任何存在的AUTO子日志文件childlogdir = /tmp AUTO自日志文件目录strip_ansi = false 除去在子日志文件中所有的 ANSI转义序列environment = KEY1="value1",KEY2="value2" 一个键/值的列表,一个环境变量吧?[supervisorctl]serverurl = unix:///tmp/supervisor.sockusername = chrispassword = 123prompt = mysupervisor String used as supervisorctl prompt.作为supervisorctl提示字符串。管理进程配置配置文件位置:/etc/supervisor/conf.d/一般有如下配置项: ...

August 20, 2019 · 2 min · jiezi

supervisorctl常用指令

查看帮助help help <action> 关闭supervisordshutdown 重载配置文件并重启supervisord和programreload 读取当前运行配置和program配置文件的差异reread 重载配置文件并重启受影响的programupdate 重启program(不会重载配置文件)restart <name> restart <name> <name> restart all 清空program日志clear <name> clear <name> <name> clear all 前台显示program(Ctrl+C退出)fg <name> 显示supervisord或program IDpid pid <name> pid all 启动programstart <name> start <name> <name> start all 停止programstop <name> stop <name> <name> stop all 查看program状态status <name> status <name> <name> status 输出program最新日志(默认stdout,Ctrl+C退出)tail [-f] <name> [stdout|stderr] (default stdout) 输出supervisord最新日志(Ctrl+C退出)maintail [-f]

April 22, 2019 · 1 min · jiezi