metrics #3
							
								
								
									
										29
									
								
								src/data.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										29
									
								
								src/data.rs
									
									
									
									
									
								
							| @ -1733,3 +1733,32 @@ impl BrainData { | |||||||
|         self.app_contracts.write().unwrap().push(app_contracts); |         self.app_contracts.write().unwrap().push(app_contracts); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | impl BrainData { | ||||||
|  |     pub fn metrics(&self) -> Result<String, Error> { | ||||||
|  |         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) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | |||||||
| @ -20,11 +20,7 @@ pub async fn http_metrics_server(listen_address: SocketAddr, state: Arc<BrainDat | |||||||
| 
 | 
 | ||||||
| #[get("/metrics")] | #[get("/metrics")] | ||||||
| async fn homepage(data: web::Data<Arc<BrainData>>) -> impl Responder { | async fn homepage(data: web::Data<Arc<BrainData>>) -> impl Responder { | ||||||
|     let vm_contracts = data.get_ref().list_all_contracts(); |     let metrics_data = data.get_ref().metrics().unwrap_or_default(); | ||||||
|     let app_contracts = data.get_ref().list_all_app_contracts(); | 
 | ||||||
|     let text = format!( |     HttpResponse::Ok().body(metrics_data) | ||||||
|         "App contracts: {:#?}\n\nVM contracts: {:#?}", |  | ||||||
|         app_contracts, vm_contracts |  | ||||||
|     ); |  | ||||||
|     HttpResponse::Ok().body(text) |  | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user