https://github.com/loshz/metrics_server
A hassle-free, single-responsibility, safe HTTP/S server used to easily expose metrics in your application.
https://github.com/loshz/metrics_server
http https metrics rust server
Last synced: 11 months ago
JSON representation
A hassle-free, single-responsibility, safe HTTP/S server used to easily expose metrics in your application.
- Host: GitHub
- URL: https://github.com/loshz/metrics_server
- Owner: loshz
- License: mit
- Created: 2022-02-09T06:10:32.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-05-29T23:43:42.000Z (over 1 year ago)
- Last Synced: 2025-03-15T15:15:04.537Z (11 months ago)
- Topics: http, https, metrics, rust, server
- Language: Rust
- Homepage: https://docs.rs/metrics_server
- Size: 95.7 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# metrics_server
[](https://github.com/loshz/metrics_server/actions/workflows/ci.yml)
[](https://crates.io/crates/metrics_server)
[](https://docs.rs/metrics_server)
[](https://github.com/loshz/metrics_server/blob/main/LICENSE)
>**Note**: This lib's API should _**NOT**_ currently be considered stable - it might change before v1.
A hassle-free, single-responsibility, safe HTTP/S server used to easily expose metrics in an application.
This crate provides a thread safe, minimalstic HTTP/S server used to buffer metrics and serve them via a standard `/metrics` endpoint. It's aim is to remove the boilerplate needed to create such simple mechanisms. It is currently somewhat oppinionated and naive in order to maintain little complexity.
## Usage
Include the lib in your `Cargo.toml` dependencies:
```toml
[dependencies]
metrics_server = "0.15"
```
To enable TLS support, pass the optional feature flag:
```toml
[dependencies]
metrics_server = { version = "0.15", features = ["tls"] }
```
### HTTP
```rust
use metrics_server::MetricsServer;
// Create a new HTTP server and start listening for requests in the background.
let server = MetricsServer::http("localhost:8001");
// Publish your application metrics.
let bytes = server.update("my_awesome_metric = 10".into());
assert_eq!(22, bytes);
// Stop the server.
server.stop().unwrap();
```
### HTTPS
Note: there is currently no option to skip TLS cert verification.
```rust
use metrics_server::MetricsServer;
// Load TLS config.
let cert = include_bytes!("/path/to/cert.pem").to_vec();
let key = include_bytes!("/path/to/key.pem").to_vec();
// Create a new HTTPS server and start listening for requests in the background.
let server = MetricsServer::https("localhost:8443", cert, key);
// Publish your application metrics.
let bytes = server.update("my_awesome_metric = 10".into());
assert_eq!(22, bytes);
// Stop the server.
server.stop().unwrap();
```
### Serve a custom URL
```rust
use metrics_server::MetricsServer;
// Create a new server and specify the URL path to serve.
let mut server = MetricsServer::new("localhost:8001", None, None);
server.serve_uri("/path/to/metrics");
// Publish your application metrics.
let bytes = server.update("my_awesome_metric = 10".into());
assert_eq!(22, bytes);
// Stop the server.
server.stop().unwrap();
```
For more comprehensive usage, see the included [examples](./examples).