19 个版本 (10 个破坏性更新)

0.11.1 2023年11月22日
0.10.0 2023年8月24日
0.9.0 2023年7月27日
0.8.0 2023年3月28日
0.1.1 2016年7月7日

#17 in 性能分析

Download history 4902/week @ 2024-03-14 4347/week @ 2024-03-21 4655/week @ 2024-03-28 4772/week @ 2024-04-04 4873/week @ 2024-04-11 5605/week @ 2024-04-18 5094/week @ 2024-04-25 4497/week @ 2024-05-02 4272/week @ 2024-05-09 4209/week @ 2024-05-16 3641/week @ 2024-05-23 4304/week @ 2024-05-30 4391/week @ 2024-06-06 4798/week @ 2024-06-13 5051/week @ 2024-06-20 3982/week @ 2024-06-27

19,077 每月下载量
用于 3 crate

MIT 许可证

66KB
1.5K SLoC

dogstatsd-rs

Build Status Crate Version

用于与 Dogstatsd 交互的 Rust 客户端

Dogstatsd 是 DataDog 为向其系统发送指标和事件而创建的自定义 StatsD 实现。通过此客户端,您可以报告任何类型的指标,对其进行标记,并享受自定义指标。

完整文档

使用方法

构建一个选项结构并创建一个客户端

use dogstatsd::{Client, Options};

// Binds to a udp socket on an available ephemeral port on 127.0.0.1 for
// transmitting, and sends to 127.0.0.1:8125, the default dogstatsd address.
let default_options = Options::default();
let default_client = Client::new(default_options).unwrap();

// Binds to 127.0.0.1:9000 for transmitting and sends to 10.1.2.3:8125, with a
// namespace of "analytics".
let custom_options = Options::new("127.0.0.1:9000", "10.1.2.3:8125", "analytics", vec!(String::new()));
let custom_client = Client::new(custom_options).unwrap();

// You can also use the OptionsBuilder API to avoid needing to specify every option.
let built_options = OptionsBuilder::new().from_addr(String::from("127.0.0.1:9001")).build();
let built_client = Client::new(built_options).unwrap();

开始发送指标

use dogstatsd::{Client, Options, ServiceCheckOptions, ServiceStatus};

let client = Client::new(Options::default()).unwrap();
let tags = &["env:production"];

// Increment a counter
client.incr("my_counter", tags).unwrap();

// Decrement a counter
client.decr("my_counter", tags).unwrap();

// Time a block of code (reports in ms)
client.time("my_time", tags, || {
    // Some time consuming code
}).unwrap();

// Report your own timing in ms
client.timing("my_timing", 500, tags).unwrap();

// Report an arbitrary value (a gauge)
client.gauge("my_gauge", "12345", tags).unwrap();

// Report a sample of a histogram
client.histogram("my_histogram", "67890", tags).unwrap();

// Report a sample of a distribution
client.distribution("distribution", "67890", tags).unwrap();

// Report a member of a set
client.set("my_set", "13579", tags).unwrap();

// Report a service check
let service_check_options = ServiceCheckOptions {
  hostname: Some("my-host.localhost"),
  ..Default::default()
};
client.service_check("redis.can_connect", ServiceStatus::OK, tags, Some(service_check_options)).unwrap();

// Send a custom event
client.event("My Custom Event Title", "My Custom Event Body", tags).unwrap();

基准测试

支持运行所有客户端命令的基准测试。在 Bencher 类型稳定之前,基准测试被隔离在 unstable 功能标志之后。要使用 rustup 运行基准测试

rustup run nightly cargo bench --features=unstable

依赖项

~1–6.5MB
~27K SLoC