11个版本 (7个重大更新)
0.8.0 | 2022年9月21日 |
---|---|
0.7.1 | 2021年8月5日 |
0.7.0 | 2021年1月26日 |
0.5.0 | 2020年9月17日 |
0.2.0 | 2019年9月9日 |
#854 in 算法
每月下载量2,680
16KB
210 行
Epimetheus
一个易于使用的Prometheus兼容指标库。
Epimetheus可能是让您的Rust应用程序提供指标最简单的方法。只需在代码中添加指标工具,并在main()
中调用spawn_http_server()
即可。
观察您的哈希表增长!
metric!(my_data_len).set(my_data.len());
metric!(my_data_cap).set(my_data.capacity());
监控您函数的延迟!
let start = Instant::now();
my_function();
metric!(my_function_duration_sum).add(start.elapsed().as_secs_f64());
metric!(my_function_duration_count).add(1.0);
跟踪您响应的状态码!
let resp = compute_response();
metric!(responses{code=resp.status()}).add(1.0);
Ok(resp)
然后连接到端口9898查看发生了什么
$ curl localhost:9898
my_data_cap 1024
my_data_len 764
my_function_duration_count 6032
my_function_duration_sum 8.32
responses{code="200 OK"} 5443
responses{code="404 Not Found"} 587
responses{code="500 Internal Server Error"} 2
您的程序还可以调用epimetheus::query()
来检查其自身的指标。如果您只计划以这种方式访问指标,则可以跳过调用spawn_http_server()
。
特性
- 多线程支持!大家共享同一组指标。
- 格式与Prometheus兼容。将Prometheus的警惕目光投向您的程序,并获得漂亮的图表。
- 更新指标速度快(...大部分如此。详见下文。)
- 端口号可以通过环境变量
RUST_METRICS_PORT
进行自定义。 - 代码非常易于阅读 - 不到200行。 查看!
- 公有领域。
性能
- 更新未标记的指标(如上面的
my_data_len
)速度快(~500ns无竞争,~5us竞争)。 - 更新标记的指标(如上面的
responses
)较慢(~1us无竞争,~10us竞争)。 - HTTP服务器非常简单,一次只能处理一个客户端;通常这无关紧要。
其他事项
Epimetheus是Prometheus的兄弟,因此命名了这个包。
贡献
请将错误报告发送到~asayers/[email protected]。
请将补丁发送到~asayers/[email protected],并包含以下文本
我将此软件的所有版权利益捐赠给公共领域。我做出这一捐赠是为了公众的利益,损害我的继承人及后继者的利益。我打算使这一捐赠成为永久放弃根据版权法对这一软件所拥有的一切现有和未来权利的明确行为。
依赖项
~1MB
~12K SLoC