1、supervisor简介
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。
2、supervisor部署
1 | $ sudo pip install supervisor |
3、supervisor使用
3.1 生成配置文件
1 | $ echo_supervisord_conf > /work/admin/supervisor/supervisor.conf |
启动supervisor
1 | $ supervisord -c /work/admin/supervisor/supervisord.conf |
3.2 配置文件说明
1 | [unix_http_server] |
3.3.1 也可以用以下配置文件直接覆盖supervisord.conf ,将[program:]的配置修改为自己的服务
1 | ; Sample supervisor config file. |
3.3 supervisor命令说明
1 | supervisorctl status //查看所有进程的状态 |
注:把es换成all可以管理配置中的所有进程。直接输入supervisorctl进入supervisorctl的shell交互界面,此时上面的命令不带supervisorctl可直接使用。
3.4 使用systemctl管理supervisor
1 | $ sudo vim /usr/lib/systemd/system/supervisord.service |
添加开机启动
1 | $ sudo systemctl enable supervisord |
3.5 注意项
默认supervisor是用root用户启动服务,如果不想每次查看日志都提权,把supervisor的配置文件中加上(user=admin),表示用admin来启动服务
1 | [supervisord] |
supervisor定时重启服务
写到crontab计划任务里面
1 | /usr/bin/supervisorctl -usupervisor -px4PdZ1l1kDhlcgmL restart kibana |