向statsd发送有关python代码的性能指标

perfmetrics的Python项目详细描述


简介

perfmetrics包提供了一种添加软件性能的简单方法 python库和应用程序的度量。使用perfmetrics查找 生产应用程序中的真正瓶颈。

perfmetrics包是etsy的statsd守护进程的客户端,etsy 又是graphite的客户机(特别是carbon守护进程)。因为 perfmetrics包向statsd发送udp包,perfmetrics添加 应用程序没有I/O延迟,CPU开销很小。它可以工作 同样适用于线程(同步)或事件驱动(异步) 软件。

travisbadge

用法

使用 @metric @metricmethod 修饰符包装函数 以及应该向statsd发送计时和调用统计信息的方法。 将decorators添加到任何可能成为瓶颈的函数或方法, 包括库功能。

示例:

from perfmetrics import metric
from perfmetrics import metricmethod

@metric
def myfunction():
    """Do something that might be expensive"""

class MyClass(object):
    @metricmethod
    def mymethod(self):
        """Do some other possibly expensive thing"""

接下来,告诉perfmetrics如何连接到statsd。(在你之前, decorators不起作用。)理想情况下,应用程序应该读取 启动时来自配置文件的statsd uri,或者应该设置 statsd_uri环境变量。下面的示例使用 硬编码的uri:

from perfmetrics import set_statsd_client
set_statsd_client('statsd://localhost:8125')

for i in xrange(1000):
    myfunction()
    MyClass().mymethod()

如果运行该代码,它将在端口激发2000个udp数据包 8125。但是,除非你已经安装了Graphite和Statsd, 所有这些包都将被忽略并丢弃。掉下去是件好事: 你不希望你的生产应用程序失败或减速只是 因为您的性能监视系统已停止或不工作。

安装graphite和statsd来接收和绘制度量。一个好办法 安装它们的方法是github上的graphite构建示例 在没有根访问权限的自定义位置安装Graphite和StatSD。

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

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像