prometheus-http-api

Crates.ioprometheus-http-api
lib.rsprometheus-http-api
version0.2.0
sourcesrc
created_at2022-04-27 14:40:41.950559
updated_at2022-04-27 14:40:41.950559
descriptionAPI to interact with Prometheus HTTP API
homepage
repositoryhttps://github.com/sebosp/prometheus-http-api-rs
max_upload_size
id576077
size38,186
Seb Ospina (sebosp)

documentation

README

prometheus-http-api-rs 0.2.0

A simple library to pull data from prometheus using its API

Rust Crates.io Documentation

Upcoming docs crate documentation.

Usage

Add dependency in Cargo.toml:

[dependencies]
prometheus-http-api = "0.2.0"

Use prometheus_http_api

use prometheus_http_api::*;

#[tokio::main]
async fn main() {
    let query = Query::Instant(InstantQuery::new("up"));
    let request = DataSourceBuilder::new("localhost:9090")
        .with_query(query)
        .build()
        .unwrap();
    let res_json = request.get().await;
    tracing::info!("{:?}", res_json);
}

License

TODO

To be addressed soon

  • Missing fallback to POST, some queries can grow paths the GET params limits.
  • Missing Instant support, currently we only support epochs as params.
  • Querying metadata: /api/v1/series or /api/v1/labels /api/v1/label/<label_name>/values
  • Target state /api/v1/targets
  • AlertManagers /api/v1/alertmanagers
  • Status Config /api/v1/status/config
  • Status flags /api/v1/status/flags
  • Runtime info /api/v1/status/runtimeinfo, available since prometheus v2.2
  • Build info /api/v1/status/buildinfo, available since prometheus v2.14
  • TSDB metrics /api/v1/status/tsdb, available since prometheus v2.14
  • WAL Replay status /api/v1/status/walreplay available since prometheus v2.15

Not stable endpoints:

  • Querying exemplars /api/v1/query_exemplars (experimental)
  • Rules /api/v1/rules (doesn't have stability guarantees from prometheus v1)
  • Alerts /api/v1/alerts (doesn't have stability guarantees from prometheus v1)
  • Target Metadata /api/v1/targets/metadata (experimental)
  • Metric Metadata /api/v1/metadata(experimental)

Admin endpoints

Since prometheus v2.18, require -web.enable-admin-api

  • Snapshots /api/v1/admin/tsdb/snapshot
  • Delete timeseries /api/v1/admin/tsdb/delete_series
  • Clean tombstones /api/v1/admin/tsdb/clean_tombstones

Write endpoint

Requires --web.enable-remote-write-receiver.

  • Prometheus remote write protocol /api/v1/write since prometheus v2.33 not efficient way to push data.

NOTES:

  • The json::Value is not necessarily a number, it may be a string:

JSON does not support special float values such as NaN, Inf, and -Inf, so sample values are transferred as quoted JSON strings rather than raw numbers.

Commit count: 19

cargo fmt