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 logger from './logger'; | ||||||
| import DB from './database'; | import DB from './database'; | ||||||
| import lightningApi from './api/lightning-api-factory'; | 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}`); | logger.notice(`Mempool Server is running on port ${config.MEMPOOL.HTTP_PORT}`); | ||||||
| 
 | 
 | ||||||
| @ -13,8 +14,7 @@ class LightningServer { | |||||||
|   async init() { |   async init() { | ||||||
|     await DB.checkDbConnection(); |     await DB.checkDbConnection(); | ||||||
| 
 | 
 | ||||||
|     const networkInfo = await lightningApi.getNetworkInfo(); |     statsUpdater.startService(); | ||||||
|     logger.info(JSON.stringify(networkInfo)); |  | ||||||
| 
 | 
 | ||||||
|     const networkGraph = await lightningApi.getNetworkGraph(); |     const networkGraph = await lightningApi.getNetworkGraph(); | ||||||
|     logger.info('Network graph channels: ' + networkGraph.channels.length); |     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