Skip to main content

Zope 2 请求监控

项目描述

<nav class="contents" id="table-of-contents" role="doc-toc">

目录

</nav>

介绍

haufe.requestmonitoring在 Zope 2.12 中引入的发布事件之上实现了详细的请求日志记录功能。

要求

  • Zope 2.12.0b2 或更高版本

  • 目前在 Zope 2.13.21 上测试

您可以将它与较旧的 Zope 版本 (2.10.x) 一起使用,但您还必须包括ZPublisherEventsBackport

特征

精细分辨率请求记录

用作ztopzanalysis的基础,即有助于确定 Zope 负载、检测长时间运行的请求并分析重新启动的原因。

此模块中的实现为IPubStartIPubSuccess/IPubFailure注册订阅者。对于这些事件中的每一个,都有以下形式的日志条目:

timestamp status request_time type request_id request_info

是写的。

字段

  • timestamp是格式为 %y%m%dT%H%M%S的当前时间。

  • 对于IPubStart事件,status0 ,对于将重试的请求为390 ,否则将IStatus的结果应用于响应。

  • 对于IPubStart事件, request_time0 。否则,将以秒为单位的请求时间。

  • 对于IPubStart类型+ ,否则为-

  • request_id是(进程)唯一的请求 ID。

  • request_info是应用于请求的IInfo 。

此外,当激活此日志记录时,会写入一个request_info == restarted的日志条目。除了request_infotimestamp所有其他字段都是0。它表明(显然)服务器已重新启动。以下请求获取以1开头的请求 ID 。

要激活此日志记录,必须同时激活timelogging.zcml (默认情况下启用),并且必须定义名称为timelogging的product-config部分,其中包含密钥filebase。它指定日志文件的基本名称;.<date>将附加到此基础。然后,必须定义ITicketIInfo适配器(例如来自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配置文件中的以下配置将安装 DumpTracer 并在经过一段时间后检查运行时间超过time的请求。

要激活此日志记录,必须同时激活monitor.zcml(默认关闭)并且 requestmonitor 配置部分必须存在:

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 请求”只是表示请求正在受到监控,有时您会在日志文件中得到无用的噪音。

您可以使用详细选项:将值设置为0以禁用日志行。每次监控一个或多个请求时,默认值 ( 1 ) 将显示日志行。2更详细,还显示有关请求 URL 的信息。

在 pdb 上转储跟踪

如果您在源代码上放置 Python 调试行,然后您想在 Zope 上对其进行测试,那么 Traceback 转储很快就会变成一场噩梦。

在这种情况下,您可以在执行调试器时禁用回溯转储。只需添加 DISABLE_HAUFE_MONITORING_ON_PDB环境变量:

environment-vars =
    ...
    DISABLE_HAUFE_MONITORING_ON_PDB True

安装

haufe.requestmonitoring添加到您的 buildout.cfg 文件的鸡蛋zcml选项中。

作者

执照

haufe.requestmonitoring在 Zope Public License 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 和字符串格式而不是字符串替换以避免可能的编码错误。参考:#5。[主题]

  • 允许监视器处理程序定义它的 zLOG 日志级别这使得为​​长时间运行的请求定义ERROR级别而不是WARNING成为可能,并在配置为通知ERROR级别日志时通过 Sentry 等工具获得通知。[主题]

  • 删除 Logger.py,它是 DumpTraceback.py 中“长请求记录器”的更简单版本,既不使用也不记录。[主题]

  • docs/HISTORY.txt移动到CHANGES.rst。[主题]

  • PEP8 兼容性

0.4.0 (2013-09-20)

  • 添加了与旧版本 Zope 的复古兼容性,而无需手动修补 Zope。[贾科莫斯]

  • 您现在可以添加DISABLE_HAUFE_MONITORING_ON_PDB envvar 以在 Python pdb上停止转储回溯。[库尔]

0.3.0 (2012-10-16)

  • 不要在最近的 Python 版本上使用已弃用的线程框架依赖项。[库尔]

  • 修复了 Zope 2.13 的 egg 依赖项。[库尔]

  • 为记录器添加了详细配置选项。[库尔]

0.2.3 - (2009/08/11)

  • 更新了文档。

0.2.2 - (2009/07/20)

  • 小清理。

  • 次要文档清理。

0.2.1 - (2009/05/28)

  • 默认配置“成功记录”。

  • 略微更新的文档。

0.2.0 - (2009/05/12)

  • 初始发行。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

haufe.requestmonitoring-0.6.0.tar.gz (18.0 kB 查看哈希

已上传 source