#metrics #timer #graphite #statsd #prometheus #logging-framework

dipstick

快速、通用的指标库,将仪表与报告后端解耦。类似于日志框架,但具有计数器、计时器和仪表。支持组合输出(例如日志 + graphite)、采样、聚合、计划推送等。

53次发布

0.9.2 2024年6月21日
0.9.1 2023年1月16日
0.9.0 2020年5月25日
0.7.11 2019年8月30日
0.4.11 2017年11月29日

#53 in 调试

Download history 46/week @ 2024-05-01 64/week @ 2024-05-08 55/week @ 2024-05-15 59/week @ 2024-05-22 65/week @ 2024-05-29 53/week @ 2024-06-05 121/week @ 2024-06-12 255/week @ 2024-06-19 40/week @ 2024-06-26 116/week @ 2024-07-03 82/week @ 2024-07-10 67/week @ 2024-07-17 196/week @ 2024-07-24 94/week @ 2024-07-31 27/week @ 2024-08-07 87/week @ 2024-08-14

424 每月下载量
用于 2 crates

MIT/Apache

180KB
4K SLoC

crates.io docs.rs Build Status

dipstick 油标尺图片

这是一个功能丰富的Rust应用程序指标库,
对应用程序的影响最小,并可选择输出到下游系统。

功能

Dipstick是一个帮助各种应用程序收集和发送指标的实用工具。因此,它需要一些设置来满足个人需求。浏览手册和许多示例应该能帮助你了解可能的配置。

简而言之,dipstick启用的应用程序 可以

  • 将指标发送到控制台、日志、statsd、graphite或prometheus(一个或多个)
  • 本地聚合指标值(计数、总和、平均值、最小值、最大值和速率)
  • 计划或程序化发布聚合指标
  • 自定义输出统计和格式
  • 定义全局或作用域(例如每个请求)指标
  • 统计采样指标(statsd)
  • 选择同步或异步操作
  • 选择缓冲或立即输出
  • 在运行时切换指标后端

为了方便,dipstick使用稳定的Rust构建,具有最少的、特征门控的依赖。性能、安全和人体工程学也是首要考虑的因素。

非目标

Dipstick的重点在于指标收集(输入)和转发(输出)。虽然它乐于聚合基本统计信息,但为了简单和性能,Dipstick将不会

  • 绘制图表
  • 发送警报
  • 跟踪直方图

这些最好通过下游的时间序列可视化和管理工具来完成。

给我看看代码!

这是一个基本的聚合和自动发布计数器指标

use dipstick::*;

fn main() {
    let bucket = AtomicBucket::new();
    bucket.drain(Stream::write_to_stdout());
    bucket.flush_every(std::time::Duration::from_secs(3));
    let counter = bucket.counter("counter_a");
    counter.count(8);
}

希望声明静态指标的持久化应用程序将更喜欢使用 metrics!

use dipstick::*;

metrics! { METRICS = "my_app" => {
        pub COUNTER: Counter = "my_counter";
    }
}

fn main() {
    METRICS.target(Graphite::send_to("localhost:2003").expect("connected").metrics());
    COUNTER.count(32);
}

有关示例应用程序,请参阅示例。有关文档,请参阅手册

要在项目中使用Dipstick,请将以下行添加到您的Cargo.toml中的[dependencies]部分

dipstick = "0.9.0"

外部功能

可以使用spirit-dipstick包从文本文件配置dipstick。

构建

在构建CRATE之前,只需运行普通的make即可。这将运行cargo几次以运行测试、基准、lint等。不幸的是,仍然需要nightly Rust才能运行benchclippy

待办事项/缺失/弱点

  • Prometheus支持仍然很原始(未经过测试)。目前只支持push gateway方法。
  • 还没有"拉"指标的后端。至少应提供tiny-http监听器功能。
  • 还没有提供与常用框架(Actix等)的快速集成功能。
  • 线程局部桶可能会有所帮助。
  • "滚动"聚合器对于"拉"指标会很棒。当前的桶实现会在刷新后重置。

许可证

Dipstick是在Apache 2.0和MIT许可证的条款下许可的。

依赖项

~2–7MB
~44K SLoC