summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEllie Huxtable <ellie@elliehuxtable.com>2023-11-18 18:07:23 +0000
committerGitHub <noreply@github.com>2023-11-18 18:07:23 +0000
commit7575a83fa7ad16860d2c5c7e56ae6ea949e38aa8 (patch)
treeabed6c74f43bcd4288f02437b517c3ea20ba88f8
parent15d214e2372308fa1d12b576a675c9e2cbf6cde1 (diff)
feat: add some metrics related to Atuin as an app (#1399)
-rw-r--r--atuin-server/src/handlers/history.rs8
-rw-r--r--atuin-server/src/handlers/record.rs5
2 files changed, 13 insertions, 0 deletions
diff --git a/atuin-server/src/handlers/history.rs b/atuin-server/src/handlers/history.rs
index 508eed6c..cdee3988 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 0100c693..91b937b3 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),