From 2c8549d7068624811c0cb9adad2e592d584ec404 Mon Sep 17 00:00:00 2001 From: Nicolas Joseph Date: Wed, 16 Oct 2024 18:07:50 -0400 Subject: [PATCH] fix: metrics console back up (#1836) --- apps/framework-cli/src/cli/local_webserver.rs | 4 ++++ apps/framework-cli/src/metrics.rs | 23 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/apps/framework-cli/src/cli/local_webserver.rs b/apps/framework-cli/src/cli/local_webserver.rs index 5e4981437..07b3734f5 100644 --- a/apps/framework-cli/src/cli/local_webserver.rs +++ b/apps/framework-cli/src/cli/local_webserver.rs @@ -312,8 +312,12 @@ async fn log_route(req: Request) -> Response> { } async fn metrics_log_route(req: Request, metrics: Arc) -> Response> { + debug!("Received metrics log route"); + let body = to_reader(req).await; let parsed: Result = serde_json::from_reader(body); + debug!("Parsed metrics log route: {:?}", parsed); + if let Ok(MetricEvent::StreamingFunctionEvent { count_in, count_out, diff --git a/apps/framework-cli/src/metrics.rs b/apps/framework-cli/src/metrics.rs index 4345d2f63..47a39f75e 100644 --- a/apps/framework-cli/src/metrics.rs +++ b/apps/framework-cli/src/metrics.rs @@ -19,7 +19,7 @@ use crate::metrics_inserter::MetricsInserter; use crate::utilities::constants::{CLI_VERSION, CONTEXT, CTX_SESSION_ID}; use crate::utilities::decode_object; use chrono::{DateTime, Utc}; -use log::warn; +use log::{debug, warn}; const DEFAULT_ANONYMOUS_METRICS_URL: &str = "https://moosefood.514.dev/ingest/MooseSessionTelemetry/0.6"; @@ -49,6 +49,7 @@ pub enum MetricsErrors { } #[derive(Debug, Clone, Deserialize)] +#[serde(untagged)] pub enum MetricEvent { // GetMetricsRegistryAsString(tokio::sync::oneshot::Sender), IngestedEvent { @@ -104,6 +105,7 @@ pub struct Metrics { registry: Arc>, } +#[derive(Clone, Debug)] pub struct Statistics { pub http_latency_histogram_aggregate: Histogram, pub http_latency_histogram: Family, @@ -262,6 +264,7 @@ impl Metrics { registry.register( TOTAL_LATENCY, "Total latency of HTTP requests", + // Those clones are ok because this is cloning an Arc reference behind the scenes data.http_latency_histogram_aggregate.clone(), ); registry.register( @@ -322,6 +325,9 @@ impl Metrics { if export_metrics { let _ = metrics_inserter.insert(message.clone()).await; } + + debug!("Received Metrics Event: {:?}", message); + match message { MetricEvent::IngestedEvent { timestamp: _, @@ -338,9 +344,20 @@ impl Metrics { path: route.clone(), }) .inc_by(bytes); + data.http_ingested_request_count.inc(); data.http_ingested_total_bytes.inc_by(bytes); + data.http_latency_histogram + .get_or_create(&HTTPLabel { + method: method.clone(), + path: route.clone(), + }) + .observe(latency.as_secs_f64()); + + data.http_latency_histogram_aggregate + .observe(latency.as_secs_f64()); + data.http_ingested_latency_sum_ms .inc_by(latency.as_millis() as u64); @@ -366,8 +383,10 @@ impl Metrics { path: route.clone(), }) .observe(latency.as_secs_f64()); + data.http_latency_histogram_aggregate .observe(latency.as_secs_f64()); + data.http_consumed_latency_sum_ms .inc_by(latency.as_millis() as u64); @@ -433,6 +452,8 @@ impl Metrics { .inc_by(bytes); } }; + + debug!("Updated metrics: {:?}", data); } });