Zope 2 请求监控
项目描述
简介
haufe.requestmonitoring在Zope 2.12引入的发布事件之上实现了一个详细的请求日志功能。
需求
Zope 2.12.0b2或更高版本
目前已在Zope 2.13.21上进行了测试
您可以使用此功能与较旧的Zope版本(2.10.x)一起使用,但您还必须包含ZPublisherEventsBackport。
功能
高分辨率请求日志
作为ztop和zanalyse的基础,即帮助确定Zope负载、检测长时间运行请求以及分析重启原因。
此模块中的实现注册了IPubStart和IPubSuccess/IPubFailure的订阅者。对于这些事件中的每一个,都会写入一个如下形式的日志条目:
timestamp status request_time type request_id request_info
。
字段
timestamp是当前时间,格式为%y%m%dT%H%M%S。
status对于IPubStart事件为0,对于将重试的请求为390,否则应用响应的IStatus的结果。
request_time对于IPubStart事件为0。否则,它将是秒为单位的请求时间。
type对于IPubStart事件为+,否则为-。
request_id是(进程)唯一的请求ID。
request_info是应用于请求的IInfo。
此外,当此日志激活时,还会写入一个包含request_info == restarted的日志条目。除了request_info和timestamp之外的所有字段都是0。这显然表示服务器已重新启动。后续请求的请求ID从1开始。
要激活此日志,必须激活timelogging.zcml(默认启用)并定义一个名为timelogging的product-config部分,其中包含键filebase。它指定了日志文件的基准名;将在该基准上附加.<date>。然后,必须定义ITicket、IInfo适配器(例如来自info的适配器)。可以为响应定义IStatus适配器。
示例
<product-config timelogging> filebase /path/to/request-logs/instance-foo </product-config>
成功请求日志
此日志写入两个文件<base>_good.<date>和<base>_bad.<date>。对于每个请求,都会将一个字符写入好的或坏的日志文件,具体取决于请求是否成功。这意味着,对于这些日志文件来说,文件大小很重要。
通常,响应代码>= 500被视为失败的请求。当您需要不同的分类时,可以注册一个ISuccessFull适配器。
要激活此日志,必须激活successlogging.zcml(默认启用)并定义一个名为successlogging的product-config部分,其中包含键filebase。它指定了日志文件的基准名(如上所述表示为<base>)。
示例
<product-config successlogging> filebase /path/to/request-logs/successful-foo </product-config>
监控长时间运行请求
haufe.requestmonitoring允许您监控长时间运行的请求。以下是在您的zope.conf配置文件中的配置,它将安装转储跟踪器并在period时间过后检查运行时间超过time的请求。
要启用此日志记录,必须激活monitor.zcml(默认关闭)并且必须存在请求监控配置部分。
zope-conf-additional = %import haufe.requestmonitoring <requestmonitor requestmonitor> # default is 1m period 10s # default is 1 verbosity 2 <monitorhandler dumper> factory haufe.requestmonitoring.DumpTraceback.factory # 0 --> no repetition repeat -1 time 10s </monitorhandler> </requestmonitor>
典型的转储跟踪看起来像这样(它显示了URL和当前的堆栈跟踪)。
2009-08-11 14:29:09 INFO Zope Ready to handle requests 2009-08-11 14:29:09 INFO RequestMonitor started 2009-08-11 14:29:14 INFO RequestMonitor monitoring 1 requests 2009-08-11 14:29:19 INFO RequestMonitor monitoring 1 requests 2009-08-11 14:29:24 INFO RequestMonitor monitoring 1 requests 2009-08-11 14:29:24 WARNING RequestMonitor.DumpTrace Long running request Request 1 "/foo" running in thread -497947728 since 14.9961140156s Python call stack (innermost first) Module /home/junga/sandboxes/review/parts/instance/Extensions/foo.py, line 4, in foo Module Products.ExternalMethod.ExternalMethod, line 231, in __call__ - __traceback_info__: ((), {}, None) Module ZPublisher.Publish, line 46, in call_object Module ZPublisher.mapply, line 88, in mapply Module ZPublisher.Publish, line 126, in publish Module ZPublisher.Publish, line 225, in publish_module_standard Module ZPublisher.Publish, line 424, in publish_module Module Products.ZopeProfiler.ZopeProfiler, line 353, in _profilePublishModule Module Products.ZopeProfiler.MonkeyPatcher, line 35, in __call__ Module ZServer.PubCore.ZServerPublisher, line 28, in __init__
日志行“RequestMonitor监控X个请求”只是表明有一个请求正在监控,有时你会在日志文件中得到无用的噪声。
您可以调整verbosity选项:将值设置为0以禁用日志行。默认值(1)将在每次有一个或多个请求正在监控时显示日志行。值为2时更为详细,还会显示关于请求URL的信息。
在pdb上转储跟踪
如果在您的源代码上放置了一个Python调试行,然后您想要测试运行Zope,那么跟踪转储很快就会变得令人头疼。
在这种情况下,您可以在执行调试器时禁用跟踪转储。只需添加DISABLE_HAUFE_MONITORING_ON_PDB环境变量即可。
environment-vars = ... DISABLE_HAUFE_MONITORING_ON_PDB True
安装
将haufe.requestmonitoring添加到您的buildout.cfg文件的eggs和zcml选项。
许可
haufe.requestmonitoring在Zope公共许可证V 2.1(ZPL)下发布。请参阅LICENSE.txt。
更改日志
0.6.0 (2021-05-12)
支持Zope 4 / Python 3。[tschorr]
0.5.1 (2018-04-03)
修复日志格式。参考:#9 [mamico]
0.5.0 (2016-09-29)
对于所有日志输出,使用Unicode和字符串format而不是字符串替换,以避免可能的编码错误。参考:#5。[thet]
允许monitorhandler定义它的zLOG日志级别。这使得可以在长时间运行的请求中定义ERROR级别而不是WARNING级别,并在配置为通知ERROR级别日志时通过Sentry等工具获得通知。[thet]
移除Logger.py,它是DumpTraceback.py中“长请求记录器”的简单版本,没有使用也没有文档说明。[thet]
将docs/HISTORY.txt移动到CHANGES.rst。[thet]
PEP8兼容性
0.4.0 (2013-09-20)
添加了与旧版本的Zope的向后兼容性,而不必手动修补Zope。[giacomos]
现在,您可以在Python pdb上添加DISABLE_HAUFE_MONITORING_ON_PDB环境变量来停止转储跟踪。[keul]
0.3.0 (2012-10-16)
不再在较新的Python版本上使用已废弃的threadframe依赖。[keul]
修复了Zope 2.13的egg依赖。[keul]
为记录器添加了verbosity配置选项。[keul]
0.2.3 - (2009/08/11)
更新了文档。
0.2.2 - (2009/07/20)
进行了轻微的清理。
对文档进行了轻微的清理。
0.2.1 - (2009/05/28)
默认配置为‘successlogging’。
略微更新了文档。
0.2.0 - (2009/05/12)
初始版本。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。