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 调试
424 每月下载量
用于 2 crates
180KB
4K SLoC
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才能运行bench
和clippy
。
待办事项/缺失/弱点
- Prometheus支持仍然很原始(未经过测试)。目前只支持push gateway方法。
- 还没有"拉"指标的后端。至少应提供tiny-http监听器功能。
- 还没有提供与常用框架(Actix等)的快速集成功能。
- 线程局部桶可能会有所帮助。
- "滚动"聚合器对于"拉"指标会很棒。当前的桶实现会在刷新后重置。
许可证
Dipstick是在Apache 2.0和MIT许可证的条款下许可的。
依赖项
~2–7MB
~44K SLoC