向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第三方库


热门话题
多线程重新构造使用线程池和BlockingQueue的I/O密集型Java web服务   java SWT CTabFolder检查CTAB是否存在   java如何防止具体类的实例化?   java如何将子域定向到正确的JBoss应用程序?   java Android外部文件出现不一致   java FileSystemNotFoundException:未安装提供程序“jndi”   显示jframe上的java隐藏单选按钮   java CXF客户端TCP连接在每个请求之间关闭   Hadoop查询、日期、循环、BASH或Java   java从长类型到十进制类型对象的转换类型错误   java为什么不在用户消息中提供用户提供的数据?有可能的威胁/攻击吗?   使用作用域存储MediaStore的应用程序中的java共享意图问题   java我可以通过将成员指针传递给方法并在方法中分配来初始化它吗?   java如何在一个包含正负值的数组中找到最大的负值?   java有比较二叉树路径的简单方法吗?   java Swagger(ui)不显示操作   java KairosDB缺失值的线性插值   用于此特定求和的java循环