perfmetrics

软件截图:
perfmetrics
软件详细信息:
版本: 0.9.5
上传日期: 20 Feb 15
许可: 免费
人气: 60

Rating: 5.0/5 (Total Votes: 1)

perfmetrics提供了一种简单的方式来增加软件的性能指标,Python库和应用程序 使用perfmetrics找到真正的瓶颈在生产中的应用。
所述perfmetrics包是Statsd守护进程通过Etsy的,而这又是石墨的一个客户机(即,碳守护程序)的客户端。因为perfmetrics包发送UDP数据包Statsd,perfmetrics没有增加I / O延迟对应用程序和小CPU开销。它可以在螺纹(同步)或事件驱动(异步)软件同样出色的工作。
用法
使用@metric和@metricmethod装饰包裹的功能和方法,应该发送时间和呼叫统计Statsd。添加装​​饰来,可能是一个瓶颈,包括库函数的任何函数或方法。
示例:
从perfmetrics导入公制
从perfmetrics进口metricmethod
@metric
高清MyFunction的():
 “”“你的东西,可能是昂贵的”“”
MyClass类(对象):
  @metricmethod
 高清的MyMethod(个体经营):
 “”“做一些其他的可能是昂贵的东西”“”
接下来,告诉perfmetrics如何连接到Statsd。 (除非你做的装饰没有任何效果。)理想情况下,你的应用程序应该在启动时的配置文件中读取Statsd URI,但下面的示例使用硬编码的URI进行简单:
从perfmetrics进口set_statsd_client
set_statsd_client('statsd://本地主机:8125')
对于我的xrange(1000):
  MyFunction的()
  MyClass的()的MyMethod()
如果您运行的代码,它会火2000 UDP数据包的端口8125.但是,除非你已经安装了石墨和Statsd,所有这些数据包将被忽略,丢弃。滴是一件好事:你不希望你的生产应用程序失败或减缓只是因为你的性能监控系统已停止或无法正常工作。
安装石墨Statsd接收和图形的指标。安装它们的一个好方法是graphite_buildout例如在GitHub上,这在自定义位置安装石墨Statsd没有root权限。
线程
虽然大多数程序发送的指标从任何线程到一个单一的全球Statsd服务器,有些程序需要使用不同的Statsd服务器为每个线程。如果你只需要一个全球性的Statsd服务器上,使用在应用程序启动的set_statsd_client功能。如果需要使用不同的Statsd服务器为每个线程,使用statsd_client_stack对象中的每个线程。用PUSH​​,POP,和明确的方法。
石墨提示
石墨将每个指标与多种分辨率时间序列。样品graphite_buildout店10秒的分辨率48小时,1小时的分辨率为31天,1天分辨率为5年。以产生从细粒度值的粗粒值,石墨计算的平均值(平均值)为每个时间跨度。
由于石墨计算平均值含蓄,最明智的方式来对待柜台石墨是作为价值“每秒点击”。这样一来,一个图可以不管其使用的分辨率水平产生正确的结果。
然而,治疗柜台命中每秒有不幸的后果。如果一些度量看到1000命中尖峰在一秒钟,然后下降到零为至少9秒,石墨图表对于该度量将显示一个尖峰100,而不是1000,因为石墨接收度量每10秒和尖峰看起来石墨像每秒100次点击,10秒的时间。
如果你希望你的图形显示1000年点击率,而不是每秒100次点击,应用石墨hitcount()函数,用10秒以上的分辨率。该hitcount功能将每秒值近似原始的命中次数。一定要提供一种分辨率值足够大,以通过对所得到的曲线图的至少一个像素的宽度来表示,否则石墨将计算命中计数的平均值,并产生一个混淆曲线图。
它通常是有道理的石墨处理空值为零,尽管这不是默认的;默认情况下,石墨绘制没有为空值。您可以打开该选项的每个图形。
参考文献
装饰
@metric
&NBSP;使用通知已Statsd UDP每一个函数被调用时。同时发送通话次数和时间信息。发送到Statsd度量的名称是<模块>。<函数名>。
@metricmethod
&NBSP;像@metric,但Statsd度量的名称是<类模块> <类名> <方法名>。
公制(STAT =无,率= 1,方法=假,计数=真,时间=真)
&NBSP;有多种选择的装饰或上下文管理。
&NBSP;统计是发送度量标准的名称;它设置为无使用的功能或方法的名称。速度可以让你减少通过选择一个随机抽样送到Statsd包的数量;例如,将其设置为0.1发送数据包的十分之一。如果方法参数为true,则默认度量名称是基于该方法的类名,而不是模块的名字。设置数量为False禁用发送到Statsd计数器的统计数据。设置时间为False禁用发送到Statsd的计时统计。
&NBSP;样品用作装饰:
&NBSP; @Metric('frequent_func',速率= 0.1,定时=假)
&NBSP;高清frequent_func():
&NBSP;“”“做的东西快速,频繁”“”
&NBSP;样品用作上下文管理器:
&NBSP;高清do_something():
&NBSP;与公制('doing_something'):
&NBSP;通
&NBSP;如果perfmetrics发送数据包过于频繁,UDP数据包可能会丢失,应用程序的性能可能会受到影响。可以减少数据包的数目,并使用公制装饰用的选项,而不是度量或metricmethod的CPU开销。上面装饰的例子使用的采样率和静态度量名称。它还会禁用定时信息的收集。
&NBSP;当使用公制作为一个上下文管理器,您必须提供统计参数,或者什么也不会被记录下来。
功能
statsd_client()
&NBSP;返回当前配置的StatsdClient。返回线程本地客户如果有一个,或全局客户如果有或无。
set_statsd_client(client_or_uri)
&NBSP;设置全局StatsdClient。该client_or_uri可以是StatsdClient,一个statsd:// URI或无。
statsd_client_from_uri(URI)
&NBSP;从创建一个URI一个StatsdClient。一个典型的URI是statsd://本地主机:8125。支持可选的查询参数前缀和gauge_suffix。默认前缀是空的,默认gauge_suffix是...查看StatsdClient文档,了解有关gauge_suffix更多信息。
StatsdClient方法
Python代码可以通过先得到使用statsd_client()方法,当前StatsdClient发送自定义指标。需要注意的是statsd_client()返回None如果没有客户端已配置。
最下方的方法具有可选的速率和的buf参数。率参数,当设置为一个小于1的值,使StatsdClient发送数据包的每个分组的随机样本,而不是。如果在buf参数是一个列表,StatsdClient追加分组内容到buf中列表,而不是发送数据包,从而能够在单个数据包发送的多个更新。请记住,UDP数据包的大小是有限的(限由网络而异,但1000字节通常是一个很好的猜测),以及任何额外的字节将被忽略。
定时(STAT,价值,率= 1,BUF =无)
&NBSP;记录的时间信息。统计是度量记录的名称和值以毫秒为单位的定时测量。需要注意的是Statsd维护多个数据点,每个定时度量,所以计时度量可以采取更多的磁盘空间比专柜或压力表。
计(STAT,价值,后缀=无,率= 1,BUF =无)
&NBSP;更新一计值。统计是度量记录的名称和值是新的计值。一计代表,如池的大小持久的价值。因为从不同的机器上经常发生冲突计,后缀通常适用于衡量的名字。如果后缀参数是一个字符串(包括空字符串),它覆盖默认的计后缀。
增量(统计,计数= 1,率= 1,BUF =无)
&NBSP;递增一个计数器由计数。需要注意的是Statsd清除它发出的度量石墨,这通常发生每10秒每次的所有计数器值。如果需要一个持久的值时,它可能是使用一个计数器的计代替更为合适。
DECR(统计,计数= 1,率= 1,BUF =无)
&NBSP;递减计数器由计数。
sendbuf(BUF)
&NBSP;发送BUF列表的内容Statsd

什么在此版本中是新的

  • 在添加一个可选的金字塔。吐温和类似的WSGI过滤器的应用程序,设置了Statsd客户为每个请求。

什么在0.9.4版本新

  • 在优化使用降低采样率

什么是0.9.2版本,新的

  • 在公制现在可以用来无论是作为装饰或一个上下文管理器。
  • 在制造StatsdClient的签名更像是詹姆斯Socol的StatsClient。

要求

  • 在Python中

类似的软件

显影剂的其他软件 Shane Hathaway

slowlog
slowlog

20 Feb 15

Yasso
Yasso

14 Apr 15

oauth2sample
oauth2sample

14 Apr 15

意见 perfmetrics

评论没有发现
添加评论
打开图片!