用于监视生产系统性能的轻量级计时器和wsgi中间件

pynba的Python项目详细描述


PYNBA

pynba是一个wsgi中间件,用于 pinba 。它允许实时监控/统计 使用mysql作为只读接口的服务器。它适用于python 2.7,>;=3.3和 PyPy</P>

它收集并处理由多个python进程通过udp发送的数据。 并以简单的"报告"的良好可读形式显示统计信息 为原始数据提供只读接口,以便 生成更复杂的报告和统计信息。

用户还可以使用带有任意 标签.

为什么是另一个统计经理?

因为品巴摇滚!

并且iscool entertainment已经使用pinba来监视基于php的 应用程序。

要求

这个库只依赖于pinba。 在使用PYNBA之前,您需要安装这些软件包。

安装过程需要安装setuptools。 如果不是,请参阅此软件包的安装。

设置

如果要安装正式版本,请执行以下操作:

$ pip install pynba

但我您更喜欢使用当前的开发版本,请执行:

$ git clone https://github.com/johnnoone/pynba.git
$ python setup.py install

用法

说您的主要wsgi应用程序是:

def app(environ, start_response):
    ...

导入pynba decorator,并用它装饰主应用程序:

from pynba.wsgi import monitor

@monitor(('127.0.0.1', 30002))
def app(environ, start_response):
    ...

每次处理应用程序时,都会发送一个新的UPD流。

您还可以标记流程,例如:

@monitor(('127.0.0.1', 30002), tags={'foo': 'bar'})
def app(environ, start_response):
    ...

最后,您可以使用计时器来测量代码的特定部分。 对于它,只需导入pynba代理,并使用它创建新计时器:

from pynba.wsgi import pynba

timer = pynba.timer(foo="bar")
timer.start()
...
timer.stop()

但你可能想监督简单的脚本。对于这种用法,请使用脚本监视器

from pynba.util import ScriptMonitor

monitor = ScriptMonitor(('127.0.0.1', 30002), tags={'foo': 'bar'})
timer = monitor.timer(foo='bar')
timer.start()
...
timer.stop()
monitor.send()

有些用例在src/examples/

记录和调试

pynba登录到"pynba"记录器。你应该在里面插个处理器。例如, 假设您想将所有内容记录到syslog,这里是modop:

import logging
import logging.handlers
logger = logging.getLogger('pynba')
logger.setLevel(logging.DEBUG)
logger.setHandler(logging.handlers.SysLogHandler)

另一个方面是,报告将尽可能谨慎,而不是 对错误引发异常。此功能可以直接禁用到 报告者实例。

对于wsgi用法:

from pynba.wsgi import PynbaMiddleware

monitored_app = PynbaMiddleware(app, ('127.0.0.1', 30002))
monitored_app.reporter.raise_on_fail = True

装饰版:

$ pip install pynba
0

或脚本用法:

$ pip install pynba
1

贡献

调试时,可以使用以下命令重建C包:

$ pip install pynba
2

与php扩展的区别

关于发送的数据:

  • ru-utime ru-stime 表示当前 处理,而不是共享资源。

  • 无法使用当前wsgi自动处理文档大小 规范。您可以手动设置此值,如下所示:

    $ pip install pynba
    
    3
  • 内存峰值 当前也未实现。和之前的数据一样, 您可以手动设置此值,如下所示:

    $ pip install pynba
    
    4
  • 内存占用 目前也未实现。和之前的数据一样, 您可以手动设置此值,如下所示:

    $ pip install pynba
    
    5

关于计时器:

  • python版本允许每个计时器标记有多个值。 只需声明任何序列、映射或可调用。此示例:

    $ pip install pynba
    
    6

    将为pinba数据库中的3个标记填充4个值:

    $ pip install pynba
    
    7

其他附加功能:

  • 脚本监视器 允许监视单个脚本。 iscool娱乐 使用它来监控我们的AMQ员工。

许可证

这个包裹是RELE的根据麻省理工学院的执照。 有关详细说明,请参见许可证文档。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java和Javascript之间共享常量   c#无法使用Gson反序列化字节[]   如果字符串是实十进制数字,则在Java中仅显示十进制数字   与Android Studio的java FireBase同步失败   web应用程序的Java Oracle数据库更改通知问题   数组中缺少整数的java嵌套循环   zos在z/os上以TOD格式(一天中的时间)转换Java时间戳   java JAXB未根据注释生成XML(JDK 1.7)   java使用Twitter4j和Geolocation查找在该地区发布推文的用户,但如何获取用户ID?   在Libgdx中实现简单运动模糊的java意外结果   java在Android数据库中插入另一个EditText值?   java标准偏差数组(我的算法错误)   java如何修复M1 Mac的Ant javascript标记?   java遍历树标记值的长度   java理解Springboot中的Cron,自动发送电子邮件   java如何将“Data.Json”文件从资产保存到内部存储器,然后将其用于读/写   java代码在编写FirstDuplicate方法时会遇到时间限制问题   java将HTML转换为PDF并将其添加到段落中   javascript css()未设置正文标记的背景属性