专栏首页Python中文社区Linux进程监控工具Supervisor简易使用教程

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 安装会非常方便,自动解决依赖关系。

– sudo pip install supervisor`– 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] 此节作用为包含其他配置文件,本文建议开启此项,包含额外的配置文件,将需要管理的进程配置写入到额外的配置文件,不需要经常编辑主配置文件,保证安全性。修改代码为

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

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

第一步

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

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

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

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

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

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

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

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

详细配置

必要参数只有 command,其他未可选参数。 [program:x] 自定义的程序名不能重复

配置示例

管理tornado应用

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

管理nginx

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

最简单的配置。

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

supervisorctl

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

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

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

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

本文分享自微信公众号 - Python中文社区(python-china),作者:gw1770df

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-11-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python数据采集Selenium、PantomJS浅谈

    專 欄 ❈ yea yee,Python中文社区专栏作者,python三年,独立开发者,擅长flask,mongodb,pandas,bokeh,熟悉skle...

    Python中文社区
  • 利用深度学习建立流失模型(附完整代码)

    失去一个老用户会带来巨大的损失,大概需要公司拉新10个新用户才能予以弥补。如何预测客户即将流失,让公司采取合适的挽回措施,是每个公司都要关注的重点问题。

    Python中文社区
  • Python的dict实现原理及与Java的比较探究

    Python内部很地方都使用着dict这种结构,在对象属性dict就是一个字典,所以对其效率要求很高。 dict采用了哈希表,最低能在 O(1)时间内完成搜索。...

    Python中文社区
  • 如何设计运维友好的服务器端系统

    如果我们在开发的时候,就充分考虑到系统的运维需求,就算只进行了一些简单的约束,都能让运维工作有巨大的改进。我想这也是所谓DevOps流行起来的原因吧。

    韩伟
  • golang hotfix热更新详解

    软件的热更新就是指在保持系统正常运行的情况下对系统进行更新升级.常见的情况有:系统服务升级、修复现有逻辑、服务配置更新等.

    mojocn
  • .Net Core Linux centos7行—发布程序到生产环境

    2.绑定的url不一致,可能是域名不一致,也可能是schema不一致(http,https)

    旺财的城堡
  • 巧用WINDOWS IP安全策略

    windows服务器的安全可以通过设定IP安全策略来得到一定的保护,对于每个Windows系统运维人员来说IP安全策略是必备的技能之一。

    孙杰
  • 46. Vue路由传参的基本使用

    上一章节讲解了vue-router的基本使用,本章节来开始看看如何在路由中设置参数。

    Devops海洋的渔夫
  • 【基础知识】现在很火的app上的deeplink技术,到底是什么?

    主编前言: Deeplink,简单讲,就是你在手机上点击一个链接之后,可以直接链接到app内部的某个页面,而不是app正常打开时显示的首页。不似web,一个链接...

    iCDO互联网数据官
  • 译文: 低调奢华有内涵的「Runtime」

    你期待看到的是最近更新的Xcode 8 和Swift3.0?你又错了:这次要聊的是我们的老相好——Objective-C!(译者:这篇文章发表于2016年10月...

    iOS Development

扫码关注云+社区

领取腾讯云代金券