# rocket_health
> ๐ง Drop-in `/health` route for [Rocket](https://rocket.rs) APIs with uptime and rolling average latency metrics.
[](https://crates.io/crates/rocket_health)
[](https://docs.rs/rocket_health)
[](https://github.com/juliengriffoul/rocket_health/actions)
---
## โจ Features
- ๐ Easy integration into any Rocket API
- ๐ Tracks server **uptime**
- โก Measures **average response latency** (rolling window)
- ๐ค Exposes `/health` route returning structured JSON
Example response:
```json
{
"status": "ok",
"uptime_seconds": 432.123,
"mean_latency_seconds": 0.0054
}
````
---
## ๐ฆ Installation
Add to your `Cargo.toml`:
```toml
[dependencies]
rocket_health = "0.1"
rocket = { version = "0.5", features = ["json"] }
```
---
## ๐ Usage
### Step 1: Mount health route and fairing
```rust
#[macro_use] extern crate rocket;
use rocket_health::mount_health_route;
#[launch]
fn rocket() -> _ {
let rocket = rocket::build();
mount_health_route(rocket)
}
```
### Step 2: Start your Rocket app
The `/health` route is now available:
```
GET /health
```
Returns uptime and latency in seconds (float). Latency is computed using a sliding window of the last 100 requests.
---
## ๐งช Testing
You can unit test the handler or compute test coverage using [`cargo-tarpaulin`](https://github.com/xd009642/tarpaulin):
```sh
cargo install cargo-tarpaulin
cargo tarpaulin --out Html --ignore-tests --line --target-dir tarpaulin-target/ --skip-clean
```