1 unstable release
| 0.2.0 | Apr 27, 2022 |
|---|
#581 in HTTP client
27KB
424 lines
prometheus-http-api-rs 0.2.0
A simple library to pull data from prometheus using its API
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
- Apache License, Version 2.0 (LICENSE or http://apache.org/licenses/LICENSE-2.0)
TODO
To be addressed soon
- Missing fallback to POST, some queries can grow paths the GET params limits.
- Missing
Instantsupport, currently we only support epochs as params. - Querying metadata:
/api/v1/seriesor/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/walreplayavailable 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/writesince prometheus v2.33 not efficient way to push data.
NOTES:
- The
json::Valueis 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.
Dependencies
~7–18MB
~250K SLoC