statsd度量类和客户机

statsdmetrics的Python项目详细描述


https://travis-ci.org/farzadghanei/statsd-metrics.svg?branch=masterhttps://ci.appveyor.com/api/projects/status/bekwcg8n1xe0w0n9/branch/master?svg=true

statsd和statsd客户机的度量类(单个请求或发送批处理请求中的每个度量)。

度量类表示statsd协议中使用的数据(不包括io),以创建, 表示和分析statsd请求。所以任何statsd服务器和客户机 IO实现可以使用它们来发送/接收STATSD请求。

该库还附带了一组使用相同度量类的丰富statsd客户机,以及 python标准库套接字模块。

度量类

  • 计数器
  • 计时器
  • 仪表
  • 设置
  • 高度计
fromstatsdmetricsimportCounter,Timercounter=Counter('event.login',1,0.2)counter.to_request()# returns event.login:1|c|@0.2timer=Timer('db.search.username',27.4)timer.to_request()# returns db.search.username:27.4|ms

分析statsd请求中的指标

fromstatsdmetricsimportparse_metric_from_requestevent_login=parse_metric_from_request('event.login:1|c|@.2')# event_login is a Counter object with count = 1 and sample_rate = 0.2mem_usage=parse_metric_from_request('resource.memory:2048|g')# mem_usage is a Gauge object with value = 2028

statsd客户机

  • client.Client:默认客户端,使用udp在每次调用时发送请求
  • client.BatchClient:缓冲度量并使用udp在批处理请求中刷新它们
  • client.tcp.TCPClient:使用TCP在每个调用上发送请求
  • client.tcp.TCPBatchClient:缓冲度量,并使用tcp在批处理请求中刷新它们

发送STATSD请求

fromstatsdmetrics.clientimportClient# default client, send metrics over UDPclient=Client("stats.example.org")client.increment("login")client.decrement("connections",2)client.timing("db.search.username",3500)client.gauge("memory",20480)client.gauge_delta("memory",-256)client.set("unique.ip_address","10.10.10.1")# helpers for timing operationschronometer=client.chronometer()chronometer.time_callable("func1_duration",func1)# decorate functions to send timing metrics for the duration of their running time@chronometer.wrap("func2_duration")deffunc2():pass# send timing for duration of a with blockwithclient.stopwatch("with_block_duration"):pass

通过BatchClient在批处理请求中发送多个度量,或者 使用可用的客户端作为上下文管理器:

fromstatsdmetrics.clientimportClientclient=Client("stats.example.org")withclient.batch_client()asbatch_client:batch_client.increment("login")batch_client.decrement("connections",2)batch_client.timing("db.search.username",3500)# now all metrics are flushed automatically in batch requests

或者通过显式地创建BatchClient对象:

fromstatsdmetrics.clientimportBatchClientclient=BatchClient("stats.example.org")client.set("unique.ip_address","10.10.10.1")client.gauge("memory",20480)client.flush()# sends one UDP packet to remote server, carrying both metrics# timing helpers are available on all clientschronometer=client.chronometer()chronometer.time_callable("func1_duration",func1)@chronometer.wrap("func2_duration")deffunc2():passwithclient.stopwatch("with_block_duration"):passclient.flush()

安装

$ pip install statsdmetrics

唯一的依赖项是Python2.7+和setuptools。 测试了cpython 2.7、3.4+、3.7-dev、pypypy和jython2.7)

但是在开发(和测试)环境中 pytestmock是必需的(对于python 2)。 typing是推荐的。

# on dev/test env
$ pip install -r requirements-dev.txt

开发

测试

Tox最方便使用它运行测试,因为它可以处理虚拟虚拟机的创建

$ tox

当安装了开发依赖项(最好是虚拟环境)时, 可以通过调用pytest来运行测试。

$ pytest

集成测试作为测试套件的一部分提供,它提供虚拟服务器(但实际上是监听 网络套接字)来捕获请求,而不是处理它们。然后发送一些度量和 断言捕获的请求是否与预期的匹配。

许可证

statsd度量是根据 MIT license

麻省理工学院许可证(MIT)

版权所有(c)2015-2018 Farzad Ghanei

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

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

推荐PyPI第三方库


热门话题
java如何测试JUnit中是否使用常量?   java JMC飞行记录强制完整GC吗?   验证java这种处理客户机/服务器散列密码的技术可以吗?   java建模两个相同但功能不同的对象的好方法是什么?   java i++i的价值是什么?   java的方法区域和堆栈区域   java故障保护:是否可以使用它执行函数<T,R>?   java ArrayIndexOutOfBoundsException嵌套循环if语句   java我无法连接布局。它们不会在Android Studio中显示   java如何在SpringMVC中从用户输入创建新的url   java我的SQL语句有什么问题?无法插入NULL   java Spring MVC主目录404错误Intellij Idea   java如何在ubuntu中部署play框架项目?   本机JNIC代码中的java Openssl同步   java从中读取文本。db文件一次一行