#datadog #statsd #dogstatsd

datadog-statsd

Rust 的 dogstatsd 客户端

3 个版本

0.1.2 2024 年 3 月 13 日
0.1.1 2021 年 4 月 3 日
0.1.0 2021 年 4 月 1 日

#86性能分析

Download history 534/week @ 2024-04-23 775/week @ 2024-04-30 354/week @ 2024-05-07 441/week @ 2024-05-14 441/week @ 2024-05-21 521/week @ 2024-05-28 457/week @ 2024-06-04 522/week @ 2024-06-11 675/week @ 2024-06-18 1023/week @ 2024-06-25 646/week @ 2024-07-02 837/week @ 2024-07-09 672/week @ 2024-07-16 537/week @ 2024-07-23 745/week @ 2024-07-30 642/week @ 2024-08-06

每月 2,696 次下载

MIT 许可证

30KB
513

Rust DogStatsd

CI Latest version

在 Rust 中实现 statsd 的 DogStatsD 客户端。

使用客户端库

datadog-statsd 包作为依赖项添加到您的 Cargo.toml 文件中

[dependencies]
datadog-statsd = "0.1.2"

statsd 的工作需要 rustc >= 1.31.0。

然后您可以得到一个客户端实例并开始跟踪指标

// Load the crate
extern crate datadog_statsd;

// Import the client object.
use datadog_statsd::Client;

// Get a client with the prefix of `myapp`. The host should be the
// IP:port of your statsd daemon.
let client = Client::new("127.0.0.1:8125", "myapp", Some(vec!["common1", "common2:test"]),).unwrap();

跟踪指标

创建客户端后,您可以跟踪计时器和指标

let tags = &Some(vec!["tag1", "tag2:test"]);

// Increment a counter by 1
client.incr("some.counter", tags);

// Decrement a counter by 1
client.decr("some.counter", tags);

// Update a gauge
client.gauge("some.value", 12.0, tags);

// Modify a counter by an arbitrary float.
client.count("some.counter", 511.0, tags);

// Send a histogram value as a float.
client.histogram("some.histogram", 511.0, tags);

跟踪计时器

可以使用 timer()time() 更新计时器

// Update a timer based on a calculation you've done.
client.timer("operation.duration", 13.4, tags);

// Time a closure
client.time("operation.duration", tags, || {
	// Do something expensive.
});

事件 & 服务检查

// Send a datadog event.
client.event("event title", "event text", AlertType::Warning, tags);

// Send a datadog service check.
client.service_check(
    "myapp.service.check.name",
    ServiceCheckStatus::Critical,
    tags,
);

管道

可以使用管道一次性将多个指标发送到 StatsD

let mut pipe = client.pipeline():

// Increment a counter by 1
pipe.incr("some.counter");

// Decrement a counter by 1
pipe.decr("some.counter");

// Update a gauge
pipe.gauge("some.value", 12.0);

// Modify a counter by an arbitrary float.
pipe.count("some.counter", 511.0);

// Send a histogram value as a float.
pipe.histogram("some.histogram", 511.0);

// Set max UDP packet size if you wish, default is 512
pipe.set_max_udp_size(128);

// Send to StatsD
pipe.send(&client);

管道还有助于简化函数的测试,因为您可以传递一个管道并确信不会发送任何 UDP 数据包。

许可证

MIT 许可证 下许可。

依赖项

~330–560KB