28 个版本
0.8.3 | 2024年4月8日 |
---|---|
0.8.2 | 2023年12月30日 |
0.7.1 | 2023年10月29日 |
0.6.6 | 2023年4月17日 |
0.3.0 | 2021年7月10日 |
#112 在 Web 编程
70,578 每月下载量
用于 11 个 Crates (4 直接)
150KB
3K SLoC
prometheus-http-query
该 crate 提供了访问 Prometheus HTTP API 的接口,并在适用的情况下利用 Rust 的类型系统。
示例
use prometheus_http_query::{Client, Error, Selector, RuleKind};
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), Error> {
let client = Client::default();
// Evaluate a PromQL query.
let q = "topk by (code) (5, prometheus_http_requests_total)";
let response = client.query(q).get().await?;
assert!(response.data().as_vector().is_some());
// Retrieve active alerts.
let alerts = client.alerts().await;
assert!(alerts.is_ok());
// Retrieve recording rules.
let recording_rules = client.rules().kind(RuleKind::Recording).get().await;
assert!(recording_rules.is_ok());
// Retrieve a list of time series that match certain labels sets ("series selectors").
let select1 = Selector::new()
.eq("handler", "/api/v1/query");
let select2 = Selector::new()
.eq("job", "node")
.regex_eq("mode", ".+");
let time_series = client.series(&[select1, select2]).get().await;
assert!(time_series.is_ok());
Ok(())
}
兼容性
该库通常与从 v2.30 开始的 Prometheus 版本兼容。由于 Prometheus 服务器的新版本支持额外的方法和查询参数,某些客户端方法可能在旧版本中失败。运行 Prometheus 服务器版本 >= 2.46 以确保最大兼容性。
测试
为了运行所有测试,必须在 https://127.0.0.1:9090
上运行 Prometheus 服务器。目前不需要特殊配置,只需运行: cargo test
贡献
请不要犹豫,提交问题以报告错误、提问或提出建议。如果您有任何开放性问题,也欢迎您解决。
如果您打算提交代码,请确保测试成功通过。
依赖项
~4–19MB
~310K SLoC