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 性能分析
19,077 每月下载量
用于 3 crate
66KB
1.5K SLoC
dogstatsd-rs
用于与 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