tokio metrics

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-06-25 05:05:02 +00:00
parent 5ec49b3f62
commit cce270d938
13 changed files with 157 additions and 33 deletions

View file

@ -153,6 +153,7 @@ fn body_limit_layer(server: &Server) -> DefaultBodyLimit { DefaultBodyLimit::max
fn catch_panic(err: Box<dyn Any + Send + 'static>) -> http::Response<http_body_util::Full<bytes::Bytes>> {
conduit_service::services()
.server
.metrics
.requests_panic
.fetch_add(1, std::sync::atomic::Ordering::Release);

View file

@ -17,11 +17,14 @@ pub(crate) async fn spawn(
return Err(StatusCode::SERVICE_UNAVAILABLE);
}
let active = server.requests_spawn_active.fetch_add(1, Ordering::Relaxed);
let active = server
.metrics
.requests_spawn_active
.fetch_add(1, Ordering::Relaxed);
trace!(active, "enter");
defer! {{
let active = server.requests_spawn_active.fetch_sub(1, Ordering::Relaxed);
let finished = server.requests_spawn_finished.fetch_add(1, Ordering::Relaxed);
let active = server.metrics.requests_spawn_active.fetch_sub(1, Ordering::Relaxed);
let finished = server.metrics.requests_spawn_finished.fetch_add(1, Ordering::Relaxed);
trace!(active, finished, "leave");
}};
@ -45,12 +48,13 @@ pub(crate) async fn handle(
}
let active = server
.metrics
.requests_handle_active
.fetch_add(1, Ordering::Relaxed);
trace!(active, "enter");
defer! {{
let active = server.requests_handle_active.fetch_sub(1, Ordering::Relaxed);
let finished = server.requests_handle_finished.fetch_add(1, Ordering::Relaxed);
let active = server.metrics.requests_handle_active.fetch_sub(1, Ordering::Relaxed);
let finished = server.metrics.requests_handle_finished.fetch_add(1, Ordering::Relaxed);
trace!(active, finished, "leave");
}};

View file

@ -108,7 +108,7 @@ async fn handle_shutdown(server: &Arc<Server>, tx: &Sender<()>, handle: &axum_se
error!("failed sending shutdown transaction to channel: {e}");
}
let pending = server.requests_spawn_active.load(Ordering::Relaxed);
let pending = server.metrics.requests_spawn_active.load(Ordering::Relaxed);
if pending > 0 {
let timeout = Duration::from_secs(36);
trace!(pending, ?timeout, "Notifying for graceful shutdown");

View file

@ -21,12 +21,21 @@ pub(super) async fn serve(
info!("Listening on {addrs:?}");
while join_set.join_next().await.is_some() {}
let spawn_active = server.requests_spawn_active.load(Ordering::Relaxed);
let handle_active = server.requests_handle_active.load(Ordering::Relaxed);
let spawn_active = server.metrics.requests_spawn_active.load(Ordering::Relaxed);
let handle_active = server
.metrics
.requests_handle_active
.load(Ordering::Relaxed);
debug_info!(
spawn_finished = server.requests_spawn_finished.load(Ordering::Relaxed),
handle_finished = server.requests_handle_finished.load(Ordering::Relaxed),
panics = server.requests_panic.load(Ordering::Relaxed),
spawn_finished = server
.metrics
.requests_spawn_finished
.load(Ordering::Relaxed),
handle_finished = server
.metrics
.requests_handle_finished
.load(Ordering::Relaxed),
panics = server.metrics.requests_panic.load(Ordering::Relaxed),
spawn_active,
handle_active,
"Stopped listening on {addrs:?}",