Linux进程监控工具Supervisor简易使用教程

技术

專 欄

gw1770df,Python中文社区专栏作者,从事Python开发工作,全栈工程师。

博客:

https://word.gw1770df.cc

Github:

https://github.com/gw1770df

Supervisor

官网为 http://supervisord.org/

A Process Control System

使用b/s架构、运行在类Unix系统上一个进程监控管理系统。
它可以使进程以daemon方式运行,并且一直监控进程,在意外退出时能自动重启进程。

安装

Supervisor是使用python开发的一个进程管工具,安装和使用都非常简单。使用 pip 或者 easy_install 安装会非常方便,自动解决依赖关系。


      1. `– sudo pip install supervisor``
2. `– sudo easy_install supervisor`


    

pip的安装请参考 Python pip 安装使用教程

初识

安装完成后系统会增加几个命令

supervisord 用于启动supervisor服务。

supervisorctl 用于管理supervisor服务,管理使用supervisor启动的进程。

安装好supervisor后需要手动的生成配置文件。

echo\_supervisord\_conf | sudo tee /etc/supervisord.conf

supervisor默认读取的配置文件为/etc/supervisord.conf,建议将配置文件放在此位置。

我们先简单的查看一下 supervisord.conf,配置文件格式和ini格式配置文件相同,由节、键、值组成,配置文件注释为 ;

[unix_http_server]
此节是配置连接supervisord的sock的文件,包括sock文件路径,用户认证。使用supervisorctl命令进行管理进程时,使用的就是此sock文件。默认保持开启,如将此项关闭[inet_http_server] 则无法使用。

[inet_http_server]
此节配置supervisor的web管理界面,配置监听的地址和端口,已经用户认证。默认为关闭状态。如需开启则将此节注释去掉,然后修改相应的键值。

[supervisord]
此节为配置supervisor服务参数,例如日志,日志大小等一些参数。

[supervisorctl]
用于配置supervisorctl管理程序参数,例如sock文件路径,需要和[unix_http_server]相同。

[include]
此节作用为包含其他配置文件,本文建议开启此项,包含额外的配置文件,将需要管理的进程配置写入到额外的配置文件,不需要经常编辑主配置文件,保证安全性。修改代码为


      1. `[include]`
2. `files = /etc/supervisor.d/*.conf`


    

读取/etc/supervisor.d/文件夹下所有后缀为conf的文件。

第一步

配置第一个使用supervisord管理的程序

我们使用 python2.7来作为演示,使用SimpleHTTPServer模块方便快速的启动一个http server。

1,创建配置文件 /etc/supervisor.d/test1.conf,写入一下内容


      1. `[program:simplehttpserver]`
2. `command=/usr/bin/env python2.7 -m SimpleHTTPServer 20080`


    

这是一个最简单的例子,第一行指定当前配置的程序名称。第二行程序运行命令(20080 为 http server端口号)。

2,第一个程序已经配置好,接下来就可以启动supervisord来查看一下效果。
输入命令 sudo supervisord 即可启动服务。
很多机器会打印出几行信息,这并不代表程序出错,意思是


      1. `“
 supervisord 
 是使用
 root
 身份来启动的,读取默认位置的配置文件,如果需要读取其他位置配置文件请使用
  
 -
 c 
 参数”`


    

3,现在使用 ps -ef | grep python 来检查一下刚才配置的程序是否已经启动。到此为止我们的第一步已经完成。

详细配置

picture.image

picture.image

**必要参数只有 command,其他未可选参数。

[program:x] 自定义的程序名不能重复**

配置示例

管理tornado应用

需要启动4个进程,分别监听四个连续端口(20081 – 20084)。
将错误输出定向到标准输出,每个端口标准输出写入到不同文件中,单个文件最大50MB,最多保存3个备份。
启动前等待3秒。
supervisord启动时自动启动。程序运行出错自动重启,最大尝试重启次数3次。

picture.image

管理nginx

nginx默认运行状态是后台运行程序。supervisord不能管理此类程序需要,需要修改nginx主配置文件。
在nginx最外层加入 daemon off ;

最简单的配置。


      1. `[program:nginx]`
2. `command=/usr/sbin/nginx ;建议使用绝对路径。`


    

supervisorctl

supervisor进程管理工具,可以方便启动停止进程,查看程序日志,重新载入配置文件。
如果supervisord配置文件不再默认位置,使用supervisorctl工具时需要指定配置文件路径 supervisordctl -c 配置文件路径

常用命令


      1. `supervisordctl status 查看进程运行状态`
2. `supervisordctl start 进程名 启动进程`
3. `supervisordctl stop 进程名 关闭进程`
4. `supervisordctl restart 进程名 重启进程`
5. `supervisordctl update 重新载入配置文件`
6. `supervisordctl shutdown 关闭supervisord`
7. `supervisordctl clear 进程名 清空进程日志`
8. `supervisordctl 进入到交互模式下。使用help查看所有命令。`


    

start stop restart + all 表示启动,关闭,重启所有进程。

如果一个进程启动了多个副本,例如上文tornado-test,关闭所有副本。

ARTICLES

近期热门文章

生成器

关于生成器的那些事儿

爬虫代理

如何构建爬虫代理服务

地理编码

怎样用Python实现地理编码

nginx日志

使用Python分析nginx日志

淘宝女郎

一个批量抓取淘女郎写真图片的爬虫

IP代理池

突破反爬虫的利器——开源IP代理池

布隆去重

基于Redis的Bloomfilter去重(附代码)

QQ空间爬虫

QQ空间爬虫最新分享,一天 400 万条数据

匿名代理池

进击的爬虫:用Python搭建匿名代理池

在公众号底部回复上述关键词可直接打开相应文章

picture.image

我 们 终 将 改 变 潮 水 的 方 向

§

§

Python中文社区

www.python-cn.com

picture.image

picture.image

致力于成为

国内最好的Python社区

QQ群:152745094

专栏作者申请邮箱

sinoandywong@gmail.com

— Life is short,we use Python —

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
火山引擎大规模机器学习平台架构设计与应用实践
围绕数据加速、模型分布式训练框架建设、大规模异构集群调度、模型开发过程标准化等AI工程化实践,全面分享如何以开发者的极致体验为核心,进行机器学习平台的设计与实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论