supervisor进程管理工具

  • A+
所属分类:Linux基础 Linux技术

Supervisor是一个进程管理工具,就是有一个进程需要每时每刻不断的运行,但是这个进程又有可能由于各种原因有可能停止运行。当进程停止运行的时候我们希望能自动重新启动,Supervisor就可以帮我们实现。Supervisor是用Python开发的,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

supervisor命令

supervisord             启动服务

supervisorctl            启动supervisor的命令行窗口

安装部署

yum install supervisor

添加web监控,可以通过9001端口在浏览器访问,stop start tailf管理

[root@4bcba35c60f8 /]# vi /etc/supervisord.conf 
[include]
files = supervisord.d/*.ini

[inet_http_server]
port=172.16.1.1:9001
username=user
password=123456

创建elasticsearch守护进程

[root@es-01 supervisord.d]# vi /etc/supervisord.d/elastic.ini 
[program: elastic]
command= sh /usr/local/elasticsearch/bin/elasticsearch
autorestart=true
autostart=true
stdout_logfile_maxbytes = 100MB
stdout_logfile=/var/log/elastic_out.log
stderr_logfile=/var/log/elastic_error.log
user=es
startsecs=1
environment=JAVA_HOME=/usr/local/jdk1.8

program 守护进程名

command 执行的命令

autorestart 程序异常退出是否自启动

autostart 是否随supervisor一同启动

stdout_logfile_maxbytes 日志轮询切割大小

stdout_logfile 标准文件输出

stderr_logfile 错误文件输出

user 程序运行的用户

startsecs 程序运行多长时间算启动成功

environment 定义环境变量

supervisord使用 -c 指定配置文件

supervisord -c /etc/supervisord.conf
supervisorctl  status

加入开机自启动

[root@es-01 ~]#vim /etc/rc.local
supervisord -c /etc/supervisord.conf

常用命令

supervisord 初始启动Supervisord,启动、管理配置中设置的进程

sudo supervisorctl status  查看素有spawn进程的状态

supervisorctl stop programxxx 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。

supervisorctl start programxxx 启动某个进程

supervisorctl restart programxxx     重启某个进程

supervisorctl stop groupworker:     重启所有属于名为groupworker这个分组的进程(start,restart同理)

supervisorctl stop all 停止全部进程,注:start、restart、stop都不会载入最新的配置文件。

supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。

supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

注意:显示用stop停止掉的进程,用reload或者update都不会自动重启

参考:

https://www.cnblogs.com/heyongboke/p/9188125.html

http://xiaorui.cc/2015/12/21/python-supervisor%E7%AE%A1%E7%90%86%E8%BF%9B%E7%A8%8B%E6%97%B6%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/

注意:

mongodb不要使用fork参数,否则启动失败,配置文件删掉以下配置

processManagement:
  fork: true

YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: