Compare commits
	
		
			4 Commits
		
	
	
		
			c9476bc2b5
			...
			f4ddd2f6df
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f4ddd2f6df | |||
| a200818518 | |||
| eb9a89d1c5 | |||
| 9f22c8fb14 | 
							
								
								
									
										42
									
								
								src/data.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										42
									
								
								src/data.rs
									
									
									
									
									
								
							| @ -1452,7 +1452,7 @@ impl BrainData { | |||||||
|         let mut nodes = self.app_nodes.write().unwrap(); |         let mut nodes = self.app_nodes.write().unwrap(); | ||||||
|         let mut app_contracts = self.app_contracts.write().unwrap(); |         let mut app_contracts = self.app_contracts.write().unwrap(); | ||||||
|         for node in nodes.iter_mut() { |         for node in nodes.iter_mut() { | ||||||
|             if self.daemon_tx.contains_key(&node.node_pubkey) { |             if self.app_daemon_tx.contains_key(&node.node_pubkey) { | ||||||
|                 node.offline_minutes = 0; |                 node.offline_minutes = 0; | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
| @ -1501,8 +1501,17 @@ impl BrainData { | |||||||
|         log::debug!("Running app contracts cron..."); |         log::debug!("Running app contracts cron..."); | ||||||
|         { |         { | ||||||
|             let mut app_contracts = self.app_contracts.write().unwrap(); |             let mut app_contracts = self.app_contracts.write().unwrap(); | ||||||
|  |             let app_nodes = self.app_nodes.read().unwrap(); | ||||||
|             app_contracts.retain_mut(|c| { |             app_contracts.retain_mut(|c| { | ||||||
|                 let node = self.find_app_node_by_pubkey(&c.node_pubkey).unwrap(); |                 let node = match app_nodes | ||||||
|  |                     .iter() | ||||||
|  |                     .find(|n| n.node_pubkey == c.node_pubkey) | ||||||
|  |                     .cloned() | ||||||
|  |                 { | ||||||
|  |                     Some(n) => n, | ||||||
|  |                     None => return c.locked_nano > 0, | ||||||
|  |                 }; | ||||||
|  | 
 | ||||||
|                 if node.offline_minutes == 0 { |                 if node.offline_minutes == 0 { | ||||||
|                     let operator_wallet = node.operator_wallet.clone(); |                     let operator_wallet = node.operator_wallet.clone(); | ||||||
|                     let minutes_to_collect = (Utc::now() - c.collected_at).num_minutes() as u64; |                     let minutes_to_collect = (Utc::now() - c.collected_at).num_minutes() as u64; | ||||||
| @ -1724,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