[Linux] 进程监控工具supervisor使用
Contents
supervisor是使用python开发的一个进程管工具
supervisor
可以方便的监听、启动、停止、重启一个或多个进程。
并监控进程状态,异常退出时能自动重启,进程自动恢复的能力。
supervisor的组件
- supervisord: 主进程名称,负责自行调用启动子程序,响应来自客户端的命令,重新启动崩溃或退出的子进程
- supervisorctl: 命令行客户端,提供终端交互界面
- Web Server: web用户界面,通过web界面查看和控制进程状态
- XML-RPC Interface: 用于询问和控制管理器及其运行的程序的XML-RPC接口
安装
ubuntu系统中安装
apt-get install supervisor
centos系统中安装
yum install supervisor
使用 pip 或者 easy_install安装
sudo pip install supervisor
sudo easy_install supervisor
生成配置文件
echo_supervisord_conf | sudo tee /etc/supervisord.conf
或者
echo_supervisord_conf > /etc/supervisord.conf
/etc/supervisord.conf配置文件注解
- [unix_http_server] 配置连接supervisord的sock的文件,包括sock文件路径,用户认证,默认开启,如关闭此项则[inet_http_server]项无法使用
- [inet_http_server] 配置supervisor的web管理界面,配置监听的地址和端口,默认为关闭状态
- [supervisord] 配置supervisor服务参数,例如日志,日志大小等等
- [supervisorctl] 用于配置supervisorctl管理程序参数
- [include] 包含其他配置文件,比如
|
|
使用supervisord管理程序
使用 python2.7 的 SimpleHTTPServer模块快速启动一个http server服务
创建配置文件 /etc/supervisor.d/simplehttpserver.conf
添加如下内容
|
|
第一行指定当前配置的程序名称,定义的程序名不能重复
第二行程序运行命令(20080 为 http server端口号)
使用root权限启动服务
|
|
查看启动的http服务进程
|
|
使用supervisord管理nginx
nginx默认运行状态是后台运行程序。supervisord不能管理此类程序需要,需要修改nginx主配置文件。 在nginx配置中最外层加入daemon off;
创建配置文件 /etc/supervisor.d/nginx.conf
添加如下内容
|
|
supervisordctl常用命令
supervisordctl -c /etc/supervisord.conf 指定配置文件,不指定时使用默认配置
supervisordctl status 查看进程运行状态
supervisordctl start 进程名 启动进程
supervisordctl stop 进程名 关闭进程
supervisordctl restart 进程名 重启进程
supervisordctl update 重新载入配置文件
supervisordctl shutdown 关闭supervisord
supervisordctl clear 进程名 清空进程日志
supervisordctl 进入到交互模式下。使用help查看所有命令。
supervisordctl start all
supervisordctl restart all
supervisordctl stop all
supervisordctl pid all
supervisordctl clear all
supervisordctl update all