#metrics #graphite #tokio #carbon

tk-carbon

在tokio-rs之上实现carbon(graphite)客户端协议

2个不稳定版本

使用旧的Rust 2015

0.2.0 2017年11月24日
0.1.0 2017年3月2日

#4#carbon

MIT/Apache

61KB
649

Carbon绑定库为Tokio

状态:测试版

文档 | Github | Crate

一个提交数据到carbon(graphite)的库。使用tokio在异步主循环中工作。

功能

  1. 可插拔的名称解析(服务发现)
  2. 动态重新连接到新的主机
  3. 连接到多个主机,如果名称解析到多个主机则重复记录。

许可证

许可证为以下之一

贡献

除非您明确声明,否则根据Apache-2.0许可证定义的,任何有意提交给作品并由您包括在内的贡献,均应按上述方式双重许可,不附加任何额外条款或条件。


lib.rs:

Carbon客户端协议实现

文档 | Github | Crate

高级接口

let (carbon, init) = Carbon::new(&Config::new().done());
init.connect_to(resolver.subscribe("localhost:2003"), &handle);
// now you can submit metrics
carbon.add_metric("my.metric", 10);

这允许协议

  1. 连接到解析到的所有地址
  2. 在失败时重新连接
  3. 当DNS名称解析到的IP更改时重新连接到新主机

请参阅示例以获取更多完整示例。

低级接口

如果您不想使用连接池,可以将carbon实例连接到特定连接

use tk_carbon::{Carbon, Config};

let (carbon, init) = Carbon::new(&Config::new().done());
handle.spawn(TcpStream::connect(&addr, &handle)
    .and_then(move |sock| init.from_connection(sock, &handle2))
    .map_err(|e| unimplemented!()));
// use carbon the same way as above
carbon.add_metric("my.metric", 10);

通用

Carbon对象对于连接池和原始接口是相同的,并且只要运行的tokio循环的网络代码仍然存活,就可以从任何线程中使用。

您不必等待连接建立后发送度量,它们将被缓冲到配置限制(请参阅Config的文档)。

依赖关系

~7MB
~108K SLoC