用于生成应用程序统计信息的度量系统
markus的Python项目详细描述
markus是一个用于生成度量的python库。
Code: | https://github.com/willkg/markus |
---|---|
Issues: | https://github.com/willkg/markus/issues |
License: | MPL v2 |
Documentation: | http://markus.readthedocs.io/en/latest/ |
目标
Markus通过以下方法更容易在您的程序中生成度量:
- 提供多个后端(datadog statsd,statsd,logging,logging rollup, 等等)用于将数据发送到不同的位置
- 同时向多个后端发送度量值
- 为简单的测试提供测试框架
- 提供一个分离的体系结构,使编写代码更容易生成 无需担心创建和配置 metrics客户端已经完成了——类似于python日志python日志 这样的模块
我在mozilla的崩溃接收管道的收集器中使用它。彼得用过 它也用来建立我们的符号查找服务器。
安装
要安装Markus,请运行:
$ pip install markus
(可选)安装 markus.backends.datadog.DatadogMetrics后端:
$ pip install markus[datadog]
快速启动
与使用日志库类似,每个python模块都可以创建 MetricsInterface(松散地等同于python日志记录器) 包括在模块导入时,并使用该时间生成度量。
例如:
import markus metrics = markus.get_metrics(__name__)
使用__name__创建MetricsImplementation将导致 生成前缀由__name__确定的所有stats键 是指向该模块的点式python路径。
然后您可以在模块中的任何位置使用MetricsImplementation:
@metrics.timer_decorator('chopping_vegetables') def some_long_function(vegetable): for veg in vegetable: chop_vegetable() metrics.incr('vegetable', 1)
在应用程序启动时,使用要用于的后端配置markus 发布度量及其所需的任何选项。
例如,让我们配置指标以发布到日志和数据狗:
import markus markus.configure( backends=[ { # Log metrics to the logs 'class': 'markus.backends.logging.LoggingMetrics', }, { # Log metrics to Datadog 'class': 'markus.backends.datadog.DatadogMetrics', 'options': { 'statsd_host': 'example.com', 'statsd_port': 8125, 'statsd_namespace': '' } } ] )
编写测试时,请使用MetricsMock简化测试:
import markus from markus.testing import MetricsMock def test_something(): with MetricsMock() as mm: # ... Do things that might publish metrics # This helps you debug and write your test mm.print_records() # Make assertions on metrics published assert mm.has_metric(markus.INCR, 'some.key', value=1)
历史记录
1.2.0(2018年4月27日)
功能
- 将.clear()添加到MetricsMock使构建pytest更容易 使用MetricsMock上下文的fixture和操作记录以方便 测试。#29
bug修复
- 更新CycDead后端固定^ {TT11}$和^ {TT12}$ 发送datadog现在支持的histogrammetrics类型。#31
1.1.2(2018年4月5日)
输入错误修复
- 确定上一版本的日期。呃。
1.1.1(2018年4月5日)
功能
- 正式切换到Semver。
错误修复
- 修复MetricsMock,使其继续工作,即使configure 被称为。#27
1.1(2017年11月13日)
功能
- 添加了markus.utils.generate_tag实用函数
1.0(2017年10月30日)
功能
- 增加了对Python2.7的支持。
- 添加了使用 用于statsd pings的pystatsd客户端。谢谢你,哈维尔!
错误修复
- 在文档中添加了LoggingRollupMetrics。
- Mozilla已经运行Markus 6个月了,所以我们 现在可以标记为生产就绪。
0.2(2017年4月19日)
功能
- 添加了一个markus.backends.logging.LoggingRollupMetrics后端 汇总指标并对其进行一些简单的计算。可能有用 用于开发的轻剖面。
错误修复
- 许多文档修复。谢谢你,彼得!
0.1(2017年4月10日)
最初的写作。