Store network stats
This commit is contained in:
		
							parent
							
								
									93b398a54f
								
							
						
					
					
						commit
						948f905a66
					
				| @ -2,6 +2,7 @@ import config from './config'; | ||||
| import logger from './logger'; | ||||
| import DB from './database'; | ||||
| import lightningApi from './api/lightning-api-factory'; | ||||
| import statsUpdater from './tasks/stats-updater'; | ||||
| 
 | ||||
| logger.notice(`Mempool Server is running on port ${config.MEMPOOL.HTTP_PORT}`); | ||||
| 
 | ||||
| @ -13,8 +14,7 @@ class LightningServer { | ||||
|   async init() { | ||||
|     await DB.checkDbConnection(); | ||||
| 
 | ||||
|     const networkInfo = await lightningApi.getNetworkInfo(); | ||||
|     logger.info(JSON.stringify(networkInfo)); | ||||
|     statsUpdater.startService(); | ||||
| 
 | ||||
|     const networkGraph = await lightningApi.getNetworkGraph(); | ||||
|     logger.info('Network graph channels: ' + networkGraph.channels.length); | ||||
|  | ||||
							
								
								
									
										62
									
								
								lightning-backend/src/tasks/stats-updater.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								lightning-backend/src/tasks/stats-updater.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,62 @@ | ||||
| 
 | ||||
| import DB from '../database'; | ||||
| import logger from '../logger'; | ||||
| import lightningApi from '../api/lightning-api-factory'; | ||||
| 
 | ||||
| /* | ||||
| CREATE TABLE IF NOT EXISTS lightning_stats ( | ||||
| 		id int(11) NOT NULL AUTO_INCREMENT, | ||||
| 		added datetime NOT NULL, | ||||
|     channel_count int(11) NOT NULL, | ||||
|     node_count int(11) NOT NULL, | ||||
|     total_capacity double unsigned NOT NULL, | ||||
|     average_channel_size double unsigned NOT NULL, | ||||
|     CONSTRAINT PRIMARY KEY (id) | ||||
|   ) ENGINE=InnoDB DEFAULT CHARSET=utf8; | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| class LightningStatsUpdater { | ||||
|   constructor() {} | ||||
| 
 | ||||
|   public async startService() { | ||||
|     logger.info('Starting Lightning Stats service'); | ||||
| 
 | ||||
|     const now = new Date(); | ||||
|     const nextHourInterval = new Date(now.getFullYear(), now.getMonth(), now.getDate(), Math.floor(now.getHours() / 1) + 1, 0, 0, 0); | ||||
|     const difference = nextHourInterval.getTime() - now.getTime(); | ||||
| 
 | ||||
|     setTimeout(() => { | ||||
|       this.$logLightningStats(); | ||||
|       setInterval(() => { | ||||
|         this.$logLightningStats(); | ||||
|       }, 1000 * 60 * 60); | ||||
|     }, difference); | ||||
|   } | ||||
| 
 | ||||
|   private async $logLightningStats() { | ||||
|     const networkInfo = await lightningApi.getNetworkInfo(); | ||||
| 
 | ||||
|     try { | ||||
|       const query = `INSERT INTO lightning_stats(
 | ||||
|           added, | ||||
|           channel_count, | ||||
|           node_count, | ||||
|           total_capacity, | ||||
|           average_channel_size | ||||
|         ) | ||||
|         VALUES (NOW(), ?, ?, ?, ?)`;
 | ||||
| 
 | ||||
|       await DB.query(query, [ | ||||
|         networkInfo.channel_count, | ||||
|         networkInfo.node_count, | ||||
|         networkInfo.total_capacity, | ||||
|         networkInfo.average_channel_size | ||||
|       ]); | ||||
|     } catch (e) { | ||||
|       logger.err('$logLightningStats() error: ' + (e instanceof Error ? e.message : e)); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export default new LightningStatsUpdater(); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user