#statsd #metrics #macro #extensible #cadence #udp #histogram

cadence-macros

Cadence 宏,一个可扩展的 Rust Statsd 客户端

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 调试

Download history 738/week @ 2024-03-14 956/week @ 2024-03-21 526/week @ 2024-03-28 878/week @ 2024-04-04 655/week @ 2024-04-11 696/week @ 2024-04-18 889/week @ 2024-04-25 665/week @ 2024-05-02 576/week @ 2024-05-09 784/week @ 2024-05-16 735/week @ 2024-05-23 655/week @ 2024-05-30 1166/week @ 2024-06-06 1343/week @ 2024-06-13 894/week @ 2024-06-20 1100/week @ 2024-06-27

每月4,588次下载
4 crates 中使用

Apache-2.0/MIT

245KB
3K SLoC

cadence-macros

build status docs.rs crates.io Rust 1.60+

Cadence 文档

宏文档

一个用于 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