11 个版本 (5 个稳定)
1.4.0 | 2024年4月28日 |
---|---|
1.3.0 | 2024年3月23日 |
1.2.0 | 2024年2月21日 |
1.0.0 | 2023年12月2日 |
0.25.0 | 2021年3月21日 |
#224 in 调试
每月4,588次下载
在 4 crates 中使用
245KB
3K SLoC
cadence-macros
一个用于 Rust 的可扩展 Statsd 客户端!
Cadence 是一种快速灵活的方式,可以从您的应用程序中发出 Statsd 指标。`cadence-macros` crate 提供了一些包装器,可以消除发出指标时通常需要的许多样板代码,同时还可以与任何与之相关的标签一起发出。
功能
- 支持 通过 UDP(或可选的 Unix 套接字)将计数器、计时器、直方图、分布、仪表、计量器和集合发送到 Statsd。
- 通过 `MetricSink` trait 支持其他后端。
- 支持 Datadog 风格的指标标签。
- 宏 以简化常见的指标发送调用
- 一个简单而灵活的指标发送 API。
安装
要在您的项目中使用 `cadence-macros`,请将其添加到您的 `Cargo.toml` 文件中的依赖项。
[dependencies]
cadence-macros = "x.y.z"
用法
要使用此 crate 中的宏,您需要设置一个全局默认的 Statsd 客户端。按常规配置一个 cadence::StatsdClient
并使用 set_global_default
函数将其设置为默认值。之后,您就可以使用此 crate 中的宏。
use std::net::UdpSocket;
use std::time::Duration;
use cadence::prelude::*;
use cadence::{StatsdClient, QueuingMetricSink, BufferedUdpMetricSink, DEFAULT_PORT};
use cadence_macros::{statsd_count, statsd_time, statsd_gauge, statsd_meter, statsd_histogram, statsd_distribution, statsd_set};
// Normal setup for a high-performance Cadence instance
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
socket.set_nonblocking(true).unwrap();
let host = ("metrics.example.com", DEFAULT_PORT);
let udp_sink = BufferedUdpMetricSink::from(host, socket).unwrap();
let queuing_sink = QueuingMetricSink::from(udp_sink);
let client = StatsdClient::from_sink("my.prefix", queuing_sink);
// Set the default client to use for macro calls
cadence_macros::set_global_default(client);
// Macros!
statsd_count!("some.counter", 123);
statsd_count!("some.counter", 123, "tag" => "val");
statsd_count!("some.counter", 123, "tag" => "val", "another" => "thing");
statsd_time!("some.timer", 123);
statsd_time!("some.timer", 123, "tag" => "val");
statsd_time!("some.timer", 123, "tag" => "val", "another" => "thing");
statsd_time!("some.timer", Duration::from_millis(123), "tag" => "val", "another" => "thing");
statsd_gauge!("some.gauge", 123);
statsd_gauge!("some.gauge", 123, "tag" => "val");
statsd_gauge!("some.gauge", 123, "tag" => "val", "another" => "thing");
statsd_gauge!("some.gauge", 123.123, "tag" => "val", "another" => "thing");
statsd_meter!("some.meter", 123);
statsd_meter!("some.meter", 123, "tag" => "val");
statsd_meter!("some.meter", 123, "tag" => "val", "another" => "thing");
statsd_histogram!("some.histogram", 123);
statsd_histogram!("some.histogram", 123, "tag" => "val");
statsd_histogram!("some.histogram", 123, "tag" => "val", "another" => "thing");
statsd_histogram!("some.histogram", Duration::from_nanos(123), "tag" => "val", "another" => "thing");
statsd_histogram!("some.histogram", 123.123, "tag" => "val", "another" => "thing");
statsd_distribution!("some.distribution", 123);
statsd_distribution!("some.distribution", 123, "tag" => "val");
statsd_distribution!("some.distribution", 123, "tag" => "val", "another" => "thing");
statsd_distribution!("some.distribution", 123.123, "tag" => "val", "another" => "thing");
statsd_set!("some.set", 123);
statsd_set!("some.set", 123, "tag" => "val");
statsd_set!("some.set", 123, "tag" => "val", "another" => "thing");
限制
以下描述了 Cadence 宏当前实现的一些限制。
- 值标签不受支持。例如,当使用宏时,以下标签样式无法设置:
client.count_with_tags("some.counter", 123).with_tag_value("beta").send()
其他
有关Cadence的更多信息,请参阅仓库根目录中的README。
依赖项
约350KB