7 releases
0.2.0 | May 28, 2024 |
---|---|
0.1.5 | Sep 4, 2022 |
0.1.4 | Mar 31, 2022 |
0.1.3 | Nov 19, 2021 |
0.1.1 | Feb 15, 2021 |
#197 in HTTP server
1,959 downloads per month
Used in 2 crates
20KB
241 lines
prometheus-hyper
Helper library to export prometheus metrics using tokio and hyper. It's intended to help writing prometheus exporters without the need to setup and maintain a http (no https) webserver. If the program also uses a http server for other purposes this package is probably not the best way and prometheus should be used directly.
This crate is similar to prometheus_exporter.
If you are not in a tokio
environment you might choose that one.
Use this crate when:
- you write an async app that wants to export metrics
- want to interact directly with prometheus.
- don't want to care about the webserver to host the
/metrics
endpoint
Don't use this crate when:
- you write a rest-api, in that case you should prob just implement the
/metrics
endpoint with your rest-framework. - you want to avoid
tokio
. - you are writing a library, in that case use plain prometheus and let the binary application decide which HTTP server to use.
This crate optimizes for typical metrics scraping, e.g. a scrape interval by few prometheus instances (usually 1) with a usual interval (e.g. 1s). It's optimized for a low foot-print, rather than being able to serve 100.000 metrics requests per sec.
Usage
Add this to your Cargo.toml
:
[dependencies]
prometheus-hyper = "0.2"
The crate exports a single struct Server
with a single fn run
:
Pass your registry to the server, and provide it with a shutdown_future.
The server will shut down, once the future completes.
tokio::spawn(Server::run(
Arc::clone(®istry),
SocketAddr::from(([0; 4], 8080)),
std::future::pending(),
));
This will start the exporter and bind the http server to 0.0.0.0:8080
. After
that you can just update the metrics as you used to.
See the documentation and the examples for more information on how to use this crate.
Dependencies
~6–15MB
~180K SLoC