Circus是与supervisor类似的进程监控工具,它也是使用Python编写的。
下面我们使用circus来监控一个wsgi
应用。
安装
Circus支持python2.6, 2.7,3.2 以及3.3,安装Circus之前,需要先安装一些开发包:
$ yum install libzmq-dev libevent-dev python-dev python-virtualenv
然后创建虚拟环境,并安装circus
$ virtualenv /tmp/circus
$ cd /tmp/circus
$ bin/pip install circus
$ bin/pip install circus-web
$ bin/pip install chaussette
执行完上述命令之后,在虚拟环境的bin目录会增加很多可执行脚本。
使用
Chaussette 提供了一个简单的hello world
应用,执行以下命令:
$ bin/chaussette
访问页面http://localhost:8080
,页面将返回hello world
。
停止Chaussette
,在当前目录添加circus.ini
,内容如下:
[circus]
statsd = 1
httpd = 1
[watcher:webapp]
cmd = bin/chaussette --fd $(circus.sockets.web)
numprocesses = 3
use_sockets = True
[socket:web]
host = 127.0.0.1
port = 9999
上面的配置文件告诉Circus,绑定socket到9999端口,并启动3个chaussettes进程,同时启动Circus web控制面板,并开启统计模块。
保存文件之后,执行circusd
$ bin/circusd --daemon circus.ini
现在访问http://127.0.0.1:9999
,就可以访问到hello world应用,跟前面例子的区别是现在socket改由Circus来管理。
还可以通过http://localhost:8080
访问控制面板。
交互
使用circusctl
来管理监控的进程。
$ bin/circusctl
circusctl 0.7.1
circusd-stats: active
circushttpd: active
webapp: active
(circusctl)
进入交互控制台之后,输入help
获取所有的命令:
(circusctl) help
Documented commands (type help <topic>):
========================================
add get list numprocesses quit rm start stop
decr globaloptions listen numwatchers reload set stats
dstats incr listsockets options restart signal status
Undocumented commands:
======================
EOF help
列出所有的web进程,并增加一个:
(circusctl) list webapp
13712,13713,13714
(circusctl) incr webapp
4
(circusctl) list webapp
13712,13713,13714,13973
此外,还可以使用circus-top查看当前进程占用内存、CPU的实时情况:
$ bin/circus-top
使用下面命令完全停止Circus
$ bin/circusctl quit
ok
网友评论