supervisor 进程控制服务

记得N多年前用Qmail的时候,qmail的官方推荐使用一个叫做Daemontools的工具监控qmail的一系列复杂的进程,在进程挂起的时候会自动重启进程。这次介绍的supervisor(官网http://supervisord.org)也是这样一个类似的东西,它基于python,能随时监控系统中某些进程的状态,并在“适当的时候给予适当的操作”。

还是照旧收到站长推荐的Ubuntu操作系统为例,安装依旧是经典的:

sudo apt-get install supervisor

这里就以监控nginx为例

cd /etc/supervisor/conf.d

vi nginx.conf

[program:nginx] #定义监控系统的名称
command=ngixn #重启进程的命令
autorstart=true #是否自动启动
#默认这些就够了,系统还支持
process_name=%(program_name)s #进程名称,默认是程序名称
numprocs=1 #进程数量
directory=/tmp #路径
umask=022 #掩码
priority=999 #优先级,越大被开起的越早
autorestart=true #自动重启
startsecs=10 #启动等待时间(秒)
startretries=3 #启动重试次数
stopsignal=TERM #关闭信号
stopwaitsecs=10 #关闭前等待时间
user=chrism #监控用户权限
redirect_stderr=false #重定向报错输出
stdout_logfile=/a/path #输入重定向为日志
stdout_logfile_maxbytes=1MB #日志大小
stdout_logfile_backups=10 #日志备份
stdout_capture_maxbytes=1MB
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment=A=1,B=2 #预定义环境变量
serverurl=AUTO #系统URL

启动supervisor

/etc/init.d/supervisor start

查看系统状态:

root@www:/etc/supervisor/conf.d# supervisorctl status nginx
nginx RUNNING pid 21995, uptime 0:11:20

可以说是一目了然了!

如果你跟我一样是通过apt方式安装,系统默认不会开启那个基于http的UI控制台。可以通过如下方式开启:

vi /etc/supervisor/supervisord.conf,添加如下:

[inet_http_server]
port = 192.168.1.60:9001 #IP和绑定端口
username = admin #管理员名称
password = 123456 #管理员密码

这样就可以直接通过访问http来惯例进程了,很方便!

PS:

多嘴几句,其实站长本人很不赞同通过这样的工具直接干预系统的启动和重启,仅仅作为一个监控台还是不错的,主要出于几个方面的考虑:

  1. 系统进程会无缘无故的挂掉,要么是系统问题,要么是程序问题,要么是压力问题,所有的问题都属于“故障”,需要追查原因,如果故障能够自动恢复,那迟早会被习惯性的忽略。
  2. 从逻辑上说,supervisor本身也是一个进程,是不是也要有个进程监控重启?这就会陷入一个逻辑上的死循环。
推荐阅读:
Open media vault 开启Wi-Fi热点

之前家里弱电箱一直放着着一套W Read more

硬件中断问题和性能优化

自打从硬件方向研究性能优化起, Read more

Kubernetes的部署

之前我们通过几个概念简单的介绍 Read more

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请补全下列算式: *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据