跳转到主要内容

Python 3兼容库,用于向Graphite指标服务器(Carbon)发送数据

项目描述

graphyte on PyPI (Python Package Index) GitHub Actions Tests

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 (8.7 kB 查看散列)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面