zopehealthwatcher允许您监视和调试zope应用程序的线程。
ZopeHealthWatcher的Python项目详细描述
zopehealthwatcher允许您监视zope应用程序的线程, 不管它是一个zeo客户端,还是一个普通的zope服务器。
对于服务器上运行的每个线程,您将知道它是活动的还是 空转。当它处于活动状态时,您将得到一个执行堆栈。
在线程被锁定的情况下进行调试也很有用:您将知道 问题所在的位置。
您可以通过浏览器或控制台脚本监视它。
zopehealthwatcher基于死锁调试器代码, 见http://plone.org/products/deadlockdebugger。
安装
如果运行zc.buildout,请将ZopeHealthWatcher产品添加到 你的构建文件。
例如
[buildout] parts = zhw [zhw] recipe = zc.recipe.egg eggs = ZopeHealthWatcher scripts = zope_health_watcher
您也可以使用pip或easy_install安装它。
配置
安装包后,打开位于 zopehealthwatcher并更改ACTIVATED和SECRET值,因此 工具已激活:
ACTIVATED = True SECRET = 'MySuperPass'
用法
有两种查询工具的方法:使用zope_health_watcher脚本或 通过浏览器。
Zope_健康观察者
zope_health_watcher获取要运行的zope服务器的根url:
$ zope_health_watcher http://localhost:8080 Idle: 4 Busy: 1 OK - Everything looks fine
它将返回空闲和繁忙线程的数量。
如果您的服务器负载很高(例如4个繁忙的线程),该工具将 返回一些相关信息,如时间、系统负载(仅限Linux)。 内存信息(仅限Linux)和每个繁忙线程的当前 执行堆栈、查询、url和用户代理:
$ zope_health_watcher http://localhost:8080 Information: Time 2009-05-18T18:23:34.415319 Sysload Meminfo Dump: Thread -1339518976 QUERY: GET /test? URL: http://localhost:8080/test HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10 File "/Volumes/MacDev/bitbucket.org/zopewatcher/parts/zope2/lib/python/ZServer/PubCore/ZServerPublisher.py", line 25, in __init__ response=b) ... roles = getRoles(container, name, value, _noroles) Thread -1340051456 QUERY: GET /test? URL: http://localhost:8080/test HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10 File "/Volumes/MacDev/bitbucket.org/zopewatcher/parts/zope2/lib/python/ZServer/PubCore/ZServerPublisher.py", line 25, in __init__ response=b) ... roles = getRoles(container, name, value, _noroles) Thread -1341648896 not busy Thread -1341116416 QUERY: GET /test? URL: http://localhost:8080/test HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10 File "/Volumes/MacDev/bitbucket.org/zopewatcher/parts/zope2/lib/python/ZServer/PubCore/ZServerPublisher.py", line 25, in __init__ response=b) ... roles = getRoles(container, name, value, _noroles) Thread -1340583936 QUERY: GET /test? URL: http://localhost:8080/test HTTP_USER_AGENT: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10 File "/Volumes/MacDev/bitbucket.org/zopewatcher/parts/zope2/lib/python/ZServer/PubCore/ZServerPublisher.py", line 25, in __init__ response=b) ... roles = getRoles(container, name, value, _noroles) Idle: 1 Busy: 4 WARNING - Warning, high load
如果服务器关闭或无法访问,脚本将返回失败:
$ bin/zope_health_watcher http://localhost:8080 Idle: 0 Busy: 0 FAILURE - [Errno socket error] (61, 'Connection refused')<> > ZopeWAVECHER 也在返回正确的退出代码,所以它可以 供Nagios等第三方程序使用:
- 确定=0
- 警告=1
- 故障=2
- 临界值=3
网络访问
使用url,可以通过web访问html版本 http://host:port/manage-zhw?秘密。此URL必须根据 在custom.py中输入的值。
请注意,此url不受密码保护。