原文地址 Mapz的Blog
前言
跑着的进程被系统杀啦?OOM?CPU爆了?一个稳定的系统环境需要一个进程监控工具,supervisor是一款基于Pyhton的进程监控工具,这次我们来学习使用之。
官方文档点我
安装
用pip安装的话,python3上现在还没有可用的安装包(貌似)
所以我们用虚拟环境搭载python2.7安装supervisor
假设我们已经安装好了Python的虚拟环境工具 virturlenv
在你合适的目录下
1 | virtualenv --python=python2.7 ./supervisor_env |
安装完成!
使用
1 | echo_supervisord_conf |
这个可以显示supervisor的默认配置项目
我们把这些配置导入一个文件
1 | echo_supervisord_conf > ./supervisord.conf |
然后使用 supervisord -c 配置文件路径 就可以启动了
如果不用-c参数则会按下列顺序来查找配置
$CWD/supervisord.conf, $CWD/etc/supervisord.conf, /etc/supervisord.conf
所以我们的启动命令为
1 | supervisord -c ./supervisord.conf |
配置
配置include文件内容
我们可以把所有的配置项目都写入到 supervisord.conf 里面,但是这样显然不方便管理,我们最好把监控不同程序的配置分别写成配置文件,然后在supervisord.conf中来引用他们
新建一个目录来存储我们的各目录配置
1 | mkdir process_config |
编辑supervisord.conf,最下方include注释解开,改为
1 | [include] |
配置程序监控
以我机器上经常因为OOM而挂掉的elasticsearch为例,我们来写一份配置
我们的安装路径位于
~/Downloads/elasticsearch-5.2.2/bin
所以这个进程启动命令应该是
1 | ~/Downloads/elasticsearch-5.2.2/bin/elasticsearch |
我们在 process_config 目录下创建新配置文件 elasticsearch.conf
1 | cd process_config |
编辑之
1 | [program:elasticsearch] |
管理
supervisor 自带了Shell管理工具 supervisorctl
运行方式和运行supervisor一致
1 | supervisorctl -c ./supervisord.conf |
运行后进入shell
1 | > status # 查看程序状态 |
实战
运行 supervisor 后老出错找不到elasticsearch,然后路径什么的配置的并没有问题呀
网上找了个办法,使用一个bash文件来打开elas,然后supervisor中配置这个bash文件
创建程序的启动脚本
创建一个脚本来启动elas,并加入权限
1 | mkdir bashs |
编辑 bashs/elasticsearch.sh
1 |
|
重新配置 elasticsearch.conf
1 | [program:elasticsearch] |
启动,检查状态
1 | elasticsearch RUNNING pid 35058, uptime 0:06:11 |
已经启动成功啦~~