diff --git a/crates/api-grub/src/monitoring.rs b/crates/api-grub/src/monitoring.rs index e763003..3aa8b21 100644 --- a/crates/api-grub/src/monitoring.rs +++ b/crates/api-grub/src/monitoring.rs @@ -70,34 +70,21 @@ impl MonitoringImporter { let client = Client::new(); let url = format!("http://{}/e-data-front/auth/login", self.ip); let fortoken = ForTokenCredentials::new(&self.login, &self.password); - // dbg!(&fortoken); + let client = client .post(url) .header("Content-Type", "application/json") .json(&fortoken); let resp = client.send().await?; let auth = resp.json::().await?; - // dbg!(&auth); + self.set_ts(&fortoken.ts).await; self.access_token = auth.access_token.to_owned(); Ok(()) } - // [ DEPRECATED ] - // pub async fn close_session(&mut self) -> anyhow::Result<()> { - // let client = Client::new(); - // let url = format!("http://{}/e-data-front/auth/logout", self.ip); - // let client = client - // .post(url) - // .header("Content-Type", "application/json") - // .header("access-token", &self.access_token); - - // let _ = client.send().await?; - - // self.access_token.clear(); - // Ok(()) - // } + pub async fn get_metrics_list(&self) -> anyhow::Result> { let client = Client::new(); let mut vec: Vec<(String, String)> = Vec::new(); @@ -108,7 +95,6 @@ impl MonitoringImporter { .header("access-token", &self.access_token) .json(&Query::default()); let resp = client.send().await?.text().await?; - // dbg!(&resp.text().await); let resp: Value = serde_json::from_str(&resp)?; if let Some(arr) = resp.as_array() { for measure in arr { @@ -123,11 +109,9 @@ impl MonitoringImporter { if cls.is_empty() { return Err(Error::msg("Invalid JSON in response. Wrong types of fields (`id` or `cls`)")); } - // let measure_name = format!("{}${}", cls, id); vec.push((format!("{}${}", cls, id), name.to_string())); } } - // dbg!(vec); } else { return Err(Error::msg("Invalid JSON in response")); } @@ -143,9 +127,6 @@ impl MonitoringImporter { let client = Arc::new(Client::new()); let measures = measures.clone(); let arc = Arc::new(self.clone()); - // dbg!(&measures.display()); - - // dbg!(&measures.len()); let chunk_size = get_chunk_size(measures.len()); info!("List of measures was divided by chunks with len {}, preparing for {} requests ...", chunk_size, measures.len() / chunk_size); @@ -163,26 +144,20 @@ impl MonitoringImporter { }); jh_vec.push(jh); } - // let mut vals = Vec::new(); - let mut counter = 0; + for event in jh_vec { match event.await { Ok(val) => { if let Ok(val) = val { - counter+=1; match crate::export::Exporter::export_extended_metrics(val).await { Ok(bytes) => {info!("Successfully transmitted {} bytes to the Prometehus exporter", bytes)}, Err(er) => error!("Cannot export data to the Prometehus exporter due to : `{}`", er), } - // vals.push(val); } }, Err(er) => println!("Fatal error on async task: {}", er), } } - info!("Total preproccessed metrics - {}", counter); - // dbg!(&vals); - // dbg!(&vals.len()); Ok(()) } async fn process_endpoint(measure: Arc, client: Arc, arc: Arc, hm: &HashMap) -> anyhow::Result { @@ -195,20 +170,14 @@ impl MonitoringImporter { tokio::task::yield_now().await; let resp: Value = serde_json::from_str(&resp)?; - // let a = Self::extract_metric_data(resp); - // dbg!(&resp); Ok( PrometheusMetricsExtended::new_zvks(Self::extract_metric_data(resp, hm).await?).await ) } fn extract_metric_data(json: Value, hm: &HashMap) -> Pin>> + Send + '_>> { - // dbg!(hm); Box::pin(async move { - dbg!(&json); return match json { Value::Object(obj) => { - // let resp: Value = serde_json::from_str(&obj)?; - // let desc = return Ok(vec![Self::process_value(&obj, hm).await?]) }, Value::Array(arr) => { @@ -219,9 +188,6 @@ impl MonitoringImporter { vec.append(&mut val); } } - // dbg!(&vec); - // dbg!(vec.len()); - // todo!(); return Ok(vec) }, _ => Err(Error::msg("Invalid JSON format")), @@ -229,9 +195,6 @@ impl MonitoringImporter { }) } async fn process_value(obj : &Map, hm: &HashMap) -> anyhow::Result { - // dbg!(obj); - // dbg!(hm); - // todo!(); let id = obj.get("$id"); let val = obj.get("value"); let description = { @@ -246,7 +209,6 @@ impl MonitoringImporter { .unwrap_or_else(|| &zero) .to_owned() } - // dbg!(dola_ip) }; if id.is_none() || val.is_none() { @@ -258,8 +220,6 @@ impl MonitoringImporter { if id.is_empty() { return Err(Error::msg("Empty `id` field. Invalid JSON response")) } - // dbg!(obj); - // todo!(); Ok(MetricOutputExtended { id : id.to_owned(),