From 13e2a54eb2c64a7be91b746af57a5ad46e57b75f Mon Sep 17 00:00:00 2001 From: shiroyashik Date: Sat, 1 Mar 2025 14:41:14 +0300 Subject: [PATCH] made query metrics better --- src/api/figura/websocket/types/c2s.rs | 8 ++++---- src/api/figura/websocket/types/s2c.rs | 12 ++++++------ src/metrics.rs | 18 ++++++++++++++---- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/api/figura/websocket/types/c2s.rs b/src/api/figura/websocket/types/c2s.rs index bc30eb1..00276d3 100644 --- a/src/api/figura/websocket/types/c2s.rs +++ b/src/api/figura/websocket/types/c2s.rs @@ -92,10 +92,10 @@ impl From for Vec { impl C2SMessage { pub fn name(&self) -> &'static str { match self { - C2SMessage::Token(_) => "c2s>token", - C2SMessage::Ping(_, _, _) => "c2s>ping", - C2SMessage::Sub(_) => "c2s>sub", - C2SMessage::Unsub(_) => "c2s>unsub", + C2SMessage::Token(_) => "C2S;TOKEN", + C2SMessage::Ping(_, _, _) => "C2S;PING", + C2SMessage::Sub(_) => "C2S;SUB", + C2SMessage::Unsub(_) => "C2S;UNSUB", } } } diff --git a/src/api/figura/websocket/types/s2c.rs b/src/api/figura/websocket/types/s2c.rs index d8d0129..9896a00 100644 --- a/src/api/figura/websocket/types/s2c.rs +++ b/src/api/figura/websocket/types/s2c.rs @@ -88,12 +88,12 @@ impl From for Vec { impl S2CMessage { pub fn name(&self) -> &'static str { match self { - S2CMessage::Auth => "s2c>auth", - S2CMessage::Ping(_, _, _, _) => "s2c>ping", - S2CMessage::Event(_) => "s2c>event", - S2CMessage::Toast(_, _, _) => "s2c>toast", - S2CMessage::Chat(_) => "s2c>chat", - S2CMessage::Notice(_) => "s2c>notice", + S2CMessage::Auth => "S2C;AUTH", + S2CMessage::Ping(_, _, _, _) => "S2C;PING", + S2CMessage::Event(_) => "S2C;EVENT", + S2CMessage::Toast(_, _, _) => "S2C;TOAST", + S2CMessage::Chat(_) => "S2C;CHAT", + S2CMessage::Notice(_) => "S2C;NOTICE", } } } diff --git a/src/metrics.rs b/src/metrics.rs index 2d45a9a..9ab0eaa 100644 --- a/src/metrics.rs +++ b/src/metrics.rs @@ -43,8 +43,10 @@ fn create_mf(name: String, help: String, field_type: MetricType, metric: Metric) } pub async fn track_metrics(req: Request, next: Next) -> Result, StatusCode> { + let method = req.method().to_string(); + let route = http_route(&req).to_string(); + let start = Instant::now(); - let uri = req.uri().path().to_string(); // Call the next middleware or handler let response = next.run(req).await; @@ -52,18 +54,26 @@ pub async fn track_metrics(req: Request, next: Next) -> Result(req: &Request) -> &str { + req.extensions() + .get::() + .map_or_else(|| "", |mp| mp.as_str()) +} + pub static REQUESTS: LazyLock = LazyLock::new(|| { - register_histogram_vec!("sculptor_requests_count", "Number of requests", &["uri", "code"], vec![0.025, 0.250, 0.500]).unwrap() + register_histogram_vec!("sculptor_requests_count", "Number of requests", &["method", "uri", "code"], vec![0.025, 0.250, 0.500]).unwrap() }); pub static PINGS: LazyLock = LazyLock::new(|| { - register_histogram_vec!("sculptor_pings_count", "Number of pings", &["type"], vec![0.000003, 0.00002, 0.0002]).unwrap() + register_histogram_vec!("sculptor_pings_count", "Number of pings", &["type"], vec![0.000001, 0.00001, 0.0001]).unwrap() }); pub static PINGS_ERROR: LazyLock = LazyLock::new(|| {