From f4ddd2f6df26c79294bb9d7bee626ea1239fc6af Mon Sep 17 00:00:00 2001 From: Noor Date: Thu, 17 Apr 2025 22:13:12 +0000 Subject: [PATCH] fix: metrics prometheus format --- src/data.rs | 29 +++++++++++++++++++++++++++++ src/http_server.rs | 10 +++------- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/data.rs b/src/data.rs index f9cc175..afa825a 100644 --- a/src/data.rs +++ b/src/data.rs @@ -1733,3 +1733,32 @@ impl BrainData { self.app_contracts.write().unwrap().push(app_contracts); } } + +impl BrainData { + pub fn metrics(&self) -> Result { + let app_nodes_read = self.app_nodes.read().unwrap(); + let app_node_no = app_nodes_read.len(); + drop(app_nodes_read); + let vm_nodes_read = self.vm_nodes.read().unwrap(); + let vm_node_no = vm_nodes_read.len(); + drop(vm_nodes_read); + let app_contract_no = self.list_all_app_contracts().len(); + let vm_contract_no = self.list_all_contracts().len(); + let account_no = self.list_accounts().len(); + let operator_no = self.list_operators().len(); + let locations = String::from("wip"); + + let metrics = vec![ + format!("app_nodes {app_node_no}"), + format!("vm_nodes {vm_node_no}"), + format!("app_contracts {app_contract_no}"), + format!("vm_contracts {vm_contract_no}"), + format!("operators {operator_no}"), + format!("accounts {account_no}"), + format!("locations {locations}"), + ] + .join("\n"); + + Ok(metrics) + } +} diff --git a/src/http_server.rs b/src/http_server.rs index 71c95bd..5d81585 100644 --- a/src/http_server.rs +++ b/src/http_server.rs @@ -20,11 +20,7 @@ pub async fn http_metrics_server(listen_address: SocketAddr, state: Arc>) -> impl Responder { - let vm_contracts = data.get_ref().list_all_contracts(); - let app_contracts = data.get_ref().list_all_app_contracts(); - let text = format!( - "App contracts: {:#?}\n\nVM contracts: {:#?}", - app_contracts, vm_contracts - ); - HttpResponse::Ok().body(text) + let metrics_data = data.get_ref().metrics().unwrap_or_default(); + + HttpResponse::Ok().body(metrics_data) }