supervisor overview

supervisor:一个进程管理系统

  • supervisor是一个客户端服务端皆可用的进程管理系统,用户可以用它来监控和管理类unix操作系统上的一系列进程
  • supervisor和launchd,daemontools,runit这些进程管理工具类似,但supervisor并不是“process id 1”的初始化代替者,而是作为进程和项目/用户关系的控制系统

一、supervisor概述:

  • 便利性:supervisor是将需要管理的服务进程作为它的子进程的方式启动的,在进程出现crash的情况下可以自动重启,而且直接通过配置就可以在supervisor服务启动时直接启动想要管理进程;不必要像rc.d脚本那样,逐个为进程编写各异的、复杂的初始化命令,而且避免了rc.d脚本在进程crash后不自动重启服务的问题
  • 精准性:Unix下面监控一个进程up/down的精准状态是比较难的,.pid文件标记进程状态也不是很可靠;但是supervisor将进程作为子进程启动的方式,就保证了它可以一直知道它子进程的当前状态,而且可以方便的查询到状态信息
  • “监管委托”:很多时候用户只是需要控制进程状态,一个进程运行过程中并不想也不需要充分的shell操作权限,可监听TCP端口的一些进程往往会需要root用户才能进行启动或重启;但是通常这种情况下,普通用户需要可以终止或者重启一个进程,但是提供给普通用户的权限往往是不够用的,同时很多时候我们不能任意提供普通用户root权限或者sudo权限;找各种情况下,supervisor作为root用户启动,那就可以允许普通用户通过supervisor去控制进程了;supervisor被赋予了有限的操作权限后,允许用户查看进程状态,直接通过 stop, start, restart这些简单的命令就可以控制supervisor管理下的子进程
  • 进程组管理:有时候进程需要成组或者是按照一定的优先顺序进行启动或者终止操作,这个时候很难解释给用户怎么样做控制,而supervisor允许用户给进程分配优先级,也允许用户通过supervisorctl客户端调用start all,restart all这些命令去批量启动或者重启服务进程;这些进程可以被编辑分组,并配置好他们之间的逻辑关系作为一个进程组进行进程管理

二、supervisor的优势:

  • 简单:supervisor通过固定的.ini格式配置管理的,这个.ini文件有固定的格式,按照约定的格式编写配置,直接可以实现crash重启、日志回旋的功能,而且很容易上手
  • 集中:supervisor提供了一系列进程的管理方法,既可以分别管理进程也可以组管理进程;可以通过配置让supervisor实现本地/远程命令行控制,甚至是web界面方式进行进程管理
  • 高效:supervisor通过fork/exec 启动子进程,一些管理工具那样依赖PID文件或者定期检测的方式重启失败进程,但是supervisor不一样,因为在进程终止的时候,操作系统会立刻发消息给supervisor
  • 扩展:supervisor有个简单的事件通知协议,无论是哪一种开发语言开发的工程都可以用supervisor来监控,而且还有个XML-RPC interface来管控;在python程序开发过程中supervisor可以直接作为扩展点使用
  • 兼容:supervisor可以运行在除windows外的任意操作系统里:Linux, Mac OS X, Solaris, and FreeBSD都是支持的;加上supervisor是基于python语言实现的,所以也不强求C语言编译器

三、supervisor的组件:

supervisord:

  • supervisord负责启动子项目作为supervisor的子进程,响应supervisor client的命令,重启crash掉或者已经存在的子进程,以标准输入输出记录子进程的log,在子进程生命周期内生成和把控点对点的事件通信
  • 一般服务配置写在/etc/supervisord.conf中,文件中包含子进程管理的.ini文件即可,需要关注的就是文件的权限管理问题,因为权限配置对于子进程的一些数据和文件的使用是有影响的

supervisorctl:

  • supervisorctl相当于supervisor的命令行客户端,把supervisord提供的功能做了封装,让用户可以通过supervisorctl连接不同的supervisord进程,获取子进程状态,启动或终止子进程,还可以查看当前supervisord下运行的进程有哪些
  • 这个命令行客户端负责和unix内部或TCP socket交流;在服务允许用户执行命令之前,一个服务可以断言当前客户端的用户是否应该提供用户身份凭据
  • supervisorctl客户端通常是和supervisord服务使用一个配置文件,但是任何一个[supervisorctl]下的配置文件都可以运行

Web Server:

  • 如果你启动supervisord的时候启用了internet端口,一个和supervisorctl功能类似的web用户界面就可以直接通过浏览器访问;在激活[inet_http_server]模块配置以后,用户可以通过类似http://localhost:9001/这样的地址,直接查看和控制进程状态

XML-RPC接口

  • 启动一个XML-RPC的web服务和http的web服务是一样的,都可以用来查询和控制supervisor和项目的运行状态

四、平台要求:

  • linux和Mac OS均可以支持,但是windows不支持;
  • python3.4或者python2.7版本可以更好的兼容supervisor,目前为止python2.6及以上版本都支持supervisor的使用
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,861评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,263评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,033评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,999评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,000评论 6 400
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,483评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,850评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,827评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,366评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,404评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,525评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,130评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,853评论 3 338
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,293评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,426评论 1 276
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,082评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,590评论 2 366

推荐阅读更多精彩内容