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日

#112Web 编程

Download history 15042/week @ 2024-04-22 11580/week @ 2024-04-29 14752/week @ 2024-05-06 14808/week @ 2024-05-13 14165/week @ 2024-05-20 11962/week @ 2024-05-27 17915/week @ 2024-06-03 24258/week @ 2024-06-10 25615/week @ 2024-06-17 29470/week @ 2024-06-24 22064/week @ 2024-07-01 18834/week @ 2024-07-08 18626/week @ 2024-07-15 19605/week @ 2024-07-22 17363/week @ 2024-07-29 14436/week @ 2024-08-05

70,578 每月下载量
用于 11 个 Crates (4 直接)

MIT 许可证

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