Python 3兼容库,用于向Graphite指标服务器(Carbon)发送数据
项目描述
graphyte是一个小型Python库,用于向Graphite指标服务器(Carbon)发送数据。我们编写它是因为现有的graphitesend库不支持Python 3,并且它还需要gevent来异步使用。graphyte在Python 3.5+以及Python 2.7上进行了测试,并使用标准库的threading模块进行异步使用。
此库位于Python包索引(PyPI)上,因此要安装它,请启动命令提示符,如果您使用虚拟环境,请激活它,然后输入
pip install graphyte
使用graphyte很简单——只需调用init()来初始化默认发送器,然后调用send()来发送消息。例如,要将system.sync.foo.bar 42 {timestamp}\n同步发送到graphite.example.com:2003
import graphyte
graphyte.init('graphite.example.com', prefix='system.sync')
graphyte.send('foo.bar', 42)
如果您想在后台线程上异步发送(例如,在Web服务器上下文中),只需指定一个发送间隔。例如,这将设置一个每10秒发送一次的后台线程
graphyte.init('graphite.example.com', prefix='system.async', interval=10)
graphyte.send('foo.bar', 42)
如果您想发送带标签的指标,使用方式如下
graphite.send('foo.bar', 42, tags={'ding': 'dong'})
对于更高级的使用,例如您想发送到多个服务器或想继承 Sender 类,您可以直接实例化 Sender 的实例。例如,为了实例化两个发送者,分别发送到不同的服务器(一个同步,一个使用后台线程,发送间隔为10秒),可以使用以下类似的方法
sender1 = graphyte.Sender('graphite1.example.com', prefix='system.one')
sender2 = graphyte.Sender('graphite2.example.com', prefix='system.two', interval=10)
sender1.send('foo.bar1', 42)
sender2.send('foo.bar2', 43)
如果您想通过 UDP 而不是 TCP 发送,只需在 init() 或 Sender() 调用中添加 protocol='udp'。
或者,为了自定义消息的记录方式或发送到套接字的方式,继承 Sender 并重写 send_message(或者如果您想重写日志和异常处理,甚至可以重写 send_socket)。
class CustomSender(graphyte.Sender):
def send_message(self, message):
print('Sending bytes in some custom way: {!r}'.format(message))
默认情况下,发送消息时发生的异常会被记录。如果您想引发并传播异常,请以 raise_send_errors=True 实例化 Sender。当指定 interval 时设置 raise_send_errors 是一个错误。
使用 Python 日志系统(使用日志记录器名称“graphyte”)记录套接字发送错误。如果发送者初始化时设置了 log_sends=True,则所有发送都会在 INFO 级别记录。
您还可以使用 graphyte 直接从命令行发送指标
python -m graphyte foo.bar 42
有命令行参数可以指定服务器和端口以及其他配置。输入 python -m graphyte --help 获取帮助。
阅读 graphyte.py 中的代码以获取更多详细信息 - 它非常小巧!
graphyte 由 Ben Hoyt 编写,并使用宽松的 MIT 许可证许可(请参阅 LICENSE.txt)。
相关工作: delphid 是 graphyte 的一个分支,支持 statsd 协议。请参阅 delphid 的分支更改。
项目详情
graphyte-1.7.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5c6061f32375ea9de8cccd78b259c928670fbabcf6fd4ddbf160e77124289be2 |
|
MD5 | 3007d278984fb4e0df44800ef3f07ce6 |
|
BLAKE2b-256 | 90d8516d885a705a341c6c681b8407350378f2b0f485056338166e4a108c8bec |