diff options
author | Ellie Huxtable <ellie@elliehuxtable.com> | 2023-11-18 18:07:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-18 18:07:23 +0000 |
commit | 7575a83fa7ad16860d2c5c7e56ae6ea949e38aa8 (patch) | |
tree | abed6c74f43bcd4288f02437b517c3ea20ba88f8 /atuin-server | |
parent | 15d214e2372308fa1d12b576a675c9e2cbf6cde1 (diff) |
feat: add some metrics related to Atuin as an app (#1399)
Diffstat (limited to 'atuin-server')
-rw-r--r-- | atuin-server/src/handlers/history.rs | 8 | ||||
-rw-r--r-- | atuin-server/src/handlers/record.rs | 5 |
2 files changed, 13 insertions, 0 deletions
diff --git a/atuin-server/src/handlers/history.rs b/atuin-server/src/handlers/history.rs index 508eed6cd..cdee39882 100644 --- a/atuin-server/src/handlers/history.rs +++ b/atuin-server/src/handlers/history.rs @@ -6,6 +6,7 @@ use axum::{ Json, }; use http::StatusCode; +use metrics::counter; use time::{Month, UtcOffset}; use tracing::{debug, error, instrument}; @@ -65,6 +66,8 @@ pub async fn list<DB: Database>( if req.sync_ts.unix_timestamp_nanos() < 0 || req.history_ts.unix_timestamp_nanos() < 0 { error!("client asked for history from < epoch 0"); + counter!("atuin_history_epoch_before_zero", 1); + return Err( ErrorResponse::reply("asked for history from before epoch 0") .with_status(StatusCode::BAD_REQUEST), @@ -93,6 +96,8 @@ pub async fn list<DB: Database>( user.id ); + counter!("atuin_history_returned", history.len() as u64); + Ok(Json(SyncHistoryResponse { history })) } @@ -127,6 +132,7 @@ pub async fn add<DB: Database>( let State(AppState { database, settings }) = state; debug!("request to add {} history items", req.len()); + counter!("atuin_history_uploaded", req.len() as u64); let mut history: Vec<NewHistory> = req .into_iter() @@ -146,6 +152,8 @@ pub async fn add<DB: Database>( // Don't return an error here. We want to insert as much of the // history list as we can, so log the error and continue going. if !keep { + counter!("atuin_history_too_long", 1); + tracing::warn!( "history too long, got length {}, max {}", h.data.len(), diff --git a/atuin-server/src/handlers/record.rs b/atuin-server/src/handlers/record.rs index 0100c6936..91b937b39 100644 --- a/atuin-server/src/handlers/record.rs +++ b/atuin-server/src/handlers/record.rs @@ -1,5 +1,6 @@ use axum::{extract::Query, extract::State, Json}; use http::StatusCode; +use metrics::counter; use serde::Deserialize; use tracing::{error, instrument}; @@ -23,11 +24,15 @@ pub async fn post<DB: Database>( "request to add records" ); + counter!("atuin_record_uploaded", records.len() as u64); + let too_big = records .iter() .any(|r| r.data.data.len() >= settings.max_record_size || settings.max_record_size == 0); if too_big { + counter!("atuin_record_too_large", 1); + return Err( ErrorResponse::reply("could not add records; record too large") .with_status(StatusCode::BAD_REQUEST), |