#prometheus-exporter #hyper #tokio

prometheus-hyper

small Tokio/Hyper server to run Prometheus metrics

6 releases

0.1.5 Sep 4, 2022
0.1.4 Mar 31, 2022
0.1.3 Nov 19, 2021
0.1.2 Mar 9, 2021
0.1.1 Feb 15, 2021

#607 in HTTP server

Download history 503/week @ 2023-11-20 419/week @ 2023-11-27 380/week @ 2023-12-04 247/week @ 2023-12-11 263/week @ 2023-12-18 128/week @ 2023-12-25 216/week @ 2024-01-01 382/week @ 2024-01-08 323/week @ 2024-01-15 374/week @ 2024-01-22 250/week @ 2024-01-29 267/week @ 2024-02-05 358/week @ 2024-02-12 610/week @ 2024-02-19 1410/week @ 2024-02-26 2083/week @ 2024-03-04

4,493 downloads per month
Used in 2 crates

Apache-2.0 OR MIT

17KB
177 lines

Crates.io docs.rs pipeline status coverage report license dependencies lines of code

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 this one. Keep in mind there is an vulnerability for tiny-http < 0.8: https://rustsec.org/advisories/RUSTSEC-2020-0031.html

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.1"

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(&registry),
    SocketAddr::from(([0; 4], 8080)),
    shutdown_future,
));

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–17MB
~189K SLoC