feat: add healthcheck endpoint
This commit is contained in:
parent
44251fa2f7
commit
d6900c7aa9
3 changed files with 30 additions and 1 deletions
|
@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
### Added
|
||||||
|
- added healthcheck endpoint
|
||||||
|
|
||||||
## [v0.2.3] - 2020-04-08
|
## [v0.2.3] - 2020-04-08
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
@ -28,3 +28,8 @@ ARGS:
|
||||||
|
|
||||||
```
|
```
|
||||||
For configuration options, see the included sample config file.
|
For configuration options, see the included sample config file.
|
||||||
|
|
||||||
|
### Endpoints:
|
||||||
|
There's two endpoints available:
|
||||||
|
- `/metrics`, which serves the metrics
|
||||||
|
- `/health`, which should always return a 200 status code
|
||||||
|
|
|
@ -49,7 +49,15 @@ lazy_static! {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn serve_req(_req: Request<Body>) -> std::result::Result<Response<Body>, hyper::Error> {
|
async fn serve_req(req: Request<Body>) -> std::result::Result<Response<Body>, hyper::Error> {
|
||||||
|
match req.uri().path() {
|
||||||
|
"/metrics" => serve_metrics().await,
|
||||||
|
"/health" => serve_health_check().await,
|
||||||
|
_ => serve_not_found().await,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn serve_metrics() -> std::result::Result<Response<Body>, hyper::Error> {
|
||||||
let encoder = TextEncoder::new();
|
let encoder = TextEncoder::new();
|
||||||
|
|
||||||
HTTP_COUNTER.inc();
|
HTTP_COUNTER.inc();
|
||||||
|
@ -71,6 +79,20 @@ async fn serve_req(_req: Request<Body>) -> std::result::Result<Response<Body>, h
|
||||||
Ok(response)
|
Ok(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn serve_health_check() -> std::result::Result<Response<Body>, hyper::Error> {
|
||||||
|
Ok(Response::builder()
|
||||||
|
.status(200)
|
||||||
|
.body(Body::from(vec![]))
|
||||||
|
.unwrap())
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn serve_not_found() -> std::result::Result<Response<Body>, hyper::Error> {
|
||||||
|
Ok(Response::builder()
|
||||||
|
.status(404)
|
||||||
|
.body(Body::from(vec![]))
|
||||||
|
.unwrap())
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) async fn start_serving_metrics(config: Config) -> std::result::Result<(), hyper::Error> {
|
pub(crate) async fn start_serving_metrics(config: Config) -> std::result::Result<(), hyper::Error> {
|
||||||
let serve_future = Server::bind(&config.listener).serve(make_service_fn(|_| async {
|
let serve_future = Server::bind(&config.listener).serve(make_service_fn(|_| async {
|
||||||
Ok::<_, hyper::Error>(service_fn(serve_req))
|
Ok::<_, hyper::Error>(service_fn(serve_req))
|
||||||
|
|
Loading…
Reference in a new issue