ffwd的微度量库
项目描述
shumway
一个用于向 FFWD 代理发送指标的小型库。
需求
- Python 3.7。在 3.7、3.8 和最新 PyPy3 编译时测试通过。
- 支持 Linux 和 OS X
使用方法
(env) $ pip install shumway
计数器
创建一个默认计数器并发送到 FFWD
import shumway
mr = shumway.MetricRelay(SERVICE_NAME)
mr.incr(METRIC_NAME)
mr.flush()
使用一个值初始化计数器
import shumway
mr = shumway.MetricRelay(SERVICE_NAME)
counter = shumway.Counter(metric_name, SERVICE_NAME, value=10)
mr.set_counter(metric_name, counter)
mr.incr(metric_name)
mr.flush()
不同的增加值
创建一个命名计数器并按不同于 1 的值增加
import shumway
mr = shumway.MetricRelay(SERVICE_NAME)
mr.incr(METRIC_NAME, 2)
mr.flush()
自定义计数器属性
为指标设置自定义属性
import shumway
mr = shumway.MetricRelay(SERVICE_NAME)
counter = shumway.counter(metric_name, SERVICE_NAME,
{attr_1: value_1,
attr_2: value_2})
mr.set_counter(metric_name, counter)
mr.incr(metric_name)
mr.flush()
注意:如果您在调用 set_counter
时使用重复的名称,它将覆盖计数器。您可能希望为每组设置的属性使用唯一的指标名称。
计时器
import shumway
mr = shumway.MetricRelay(SERVICE_NAME)
timer = mr.timer('timing-this-thing')
with timer:
...task you want to time
mr.flush()
自定义计时器属性
计时器也可以独立创建,以便设置自定义属性
import shumway
mr = shumway.MetricRelay(SERVICE_NAME)
timer = shumway.Timer('timing-this-thing', SERVICE_NAME,
{'attr_1': value_1, 'attr_2': value_2})
with timer:
# ...task you want to time
mr.set_timer('timing-this-thing', timer)
mr.flush()
与指标对象交互
指标对象(如计时器)本身也有一个 flush
函数以及一个 as_dict
函数
import shumway
timer = shumway.Timer('timing-this-thing', SERVICE_NAME,
{'attr_1': value_1, 'attr_2': value_2})
timer_as_dict = timer.as_dict()
timer.flush(lambda dict: do_smth())
非自定义指标默认属性
指标中继也可以创建具有常见属性的指标
import shumway
attributes = dict(foo='bar')
mr = shumway.MetricRelay(SERVICE_NAME, default_attributes=attributes)
资源标识符
指标中继还可以发送资源标识符
import shumway
resources = dict(podname='my_ephemeral_podname')
mr = shumway.MetricRelay(SERVICE_NAME, default_resources=resources)
有关资源标识符的更多信息,请参阅 Heroic 文档
发送指标
有两种方式可以将指标发送到 ffwd
代理
发出一个指标
您可以立即发出一个一次性的事件类型指标
import shumway
mr = shumway.MetricRelay('my-service')
# some event happened
mr.emit('a-successful-event', 1)
# some event happened with attributes
mr.emit('a-successful-event', 1, {'attr_1': value_1, 'attr_2': value_2})
# an event with a multiple value happened
mr.emit('a-successful-event', 5)
刷新所有指标
对于批量类型的指标,您可以在准备好后刷新指标
import shumway
mr = shumway.MetricRelay('my-service')
# measure all the things
# time all the things
if not dry_run:
mr.flush()
现有指标
使用 in
检查指标中继中指标的存在性
>>> import shumway
>>> mr = shumway.MetricRelay('my-service')
>>> counter = shumway.Counter('thing-to-count', 'my-service', value=5)
>>> mr.set_counter('thing-to-count', counter)
>>> 'thing-to-count' in mr
True
>>> 'not-a-counter' in mr
False
自定义 FFWD 代理
默认情况下,shumway
将指标发送到本地 ffwd
代理,地址为 127.0.0.1:19000
。
如果您的 ffwd
代理在其他位置,则在初始化 MetricRelay
时传递该信息
import shumway
mr = shumway.MetricRelay(SERVICE_NAME, ffwd_ip='10.99.0.1', ffwd_port=19001)
# do the thing
通过 HTTP 向 FFWD 发送指标
除了通过 UDP,也可以通过设置 use_http
标志通过 HTTP 发送指标
import shumway
mr = shumway.MetricRelay(SERVICE_NAME,
ffwd_host="http://my-metrics-api.com",
ffwd_port=8080,
ffwd_path="/v1/metrics",
use_http=True)
ffwd_host
参数应该是 HTTP 端点,并且可选地可以设置 ffwd_path
以指定路径。
变更
未发布
4.0.0
- 删除 python3.6 并使用 python3.7 作为最低要求版本
3.0.0 - 3.0.2
- 由于依赖项更新和支持 Python 版本的变化,进行了主要版本升级。
2.0.0
- 对于
Meter()
、Counter()
、Timer()
和MetricRelay(...).emit()
的位置参数进行了更改,以添加resources
。如果您只使用命名参数,则这应该不会有问题。
开发者设置
为了开发和运行测试,您的系统必须安装所有支持的 Python 版本。我们建议使用 pyenv。
设置
$ git clone git@github.com:spotify/shumway.git && cd shumway
# make a virtualenv
(env) $ pip install -r dev-requirements.txt
运行测试
要运行整个测试套件
# outside of the virtualenv
# if tox is not yet installed
$ pip install tox
$ tox
如果您想为特定的 Python 版本运行测试套件
# outside of the virtualenv
$ tox -e py37
要运行单个测试,请直接调用 nosetests
# inside virtualenv
(env) $ nosetests test/metrics_test.py
行为准则
本项目遵守 开源行为准则。通过参与,您应遵守此准则。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
shumway-4.0.0.tar.gz (12.2 kB 查看哈希值)
构建分布
shumway-4.0.0-py2.py3-none-any.whl (12.8 kB 查看哈希值)
关闭
shumway-4.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88963721855a8a1de28438fbe0f825e179126631303dfb3c5c331035a9936bd9 |
|
MD5 | aa81de71c178c9eda113f663c5e95a00 |
|
BLAKE2b-256 | 4181b63b5b2a3170af7b77088eaf76770144afd3b0b25b223084783b1ba19538 |
关闭
shumway-4.0.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6d4eae66baeee3fd2bc81217adb4084aa13ccf324e92ab751a9c46349cc9d4df |
|
MD5 | c82d2c23b454cf068a4991cd9334f99a |
|
BLAKE2b-256 | 9e56f67e3f271294a267d7f0a49e5faf83eb580a72fad04d67a59d167808e71d |