From b65d7c0c5dc6d5d470b9604f69b110cd2760c40d Mon Sep 17 00:00:00 2001 From: Darren B <68653294+Devd0@users.noreply.github.com> Date: Thu, 18 Apr 2024 15:56:21 -0400 Subject: [PATCH] limit ALERT metrics to 31 days --- dataplane-webserver/src/metrics/mod.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dataplane-webserver/src/metrics/mod.rs b/dataplane-webserver/src/metrics/mod.rs index 14ce9cb75..a3c44b367 100644 --- a/dataplane-webserver/src/metrics/mod.rs +++ b/dataplane-webserver/src/metrics/mod.rs @@ -7,7 +7,6 @@ use log::{debug, error, warn}; use reqwest::{Client, Response}; use serde_json::Value; use std::time::{Duration, SystemTime, UNIX_EPOCH}; - pub mod expression_validator; pub mod types; @@ -132,12 +131,18 @@ pub async fn query_prometheus( // Check if the time range is within the allowed limits (e.g., 1 day) let start_sec = start.parse::().unwrap(); let end_sec = end.parse::().unwrap(); - if end_sec - start_sec > 86_400 { + if end_sec - start_sec > 86_400 && !query.starts_with("ALERTS{") { // 1 day in seconds return HttpResponse::BadRequest() .json("Time range too large, must be less than or equal to 1 day"); } + if query.starts_with("ALERTS{") && end_sec - start_sec > 2_678_400 { + // 31 days in seconds + return HttpResponse::BadRequest() + .json("Time range too large, must be less than or equal to 31 days for ALERT metrics"); + } + // Construct query URL let query_url = format!( "{}/api/v1/query_range",