@@ -157,3 +157,63 @@ export const numberOfProofPublished = new client.Counter({
157157 help : 'The number of proofs published(since last restart)' ,
158158 labelNames : [ 'network' ] ,
159159} ) ;
160+
161+ const gaugeCpuUser = new client . Gauge ( {
162+ name : 'process_cpu_user_seconds_total' ,
163+ help : 'Total user CPU time spent by the process in seconds.' ,
164+ labelNames : [ 'label' ] , // Adding label
165+ } ) ;
166+
167+ const gaugeCpuSystem = new client . Gauge ( {
168+ name : 'process_cpu_system_seconds_total' ,
169+ help : 'Total system CPU time spent by the process in seconds.' ,
170+ labelNames : [ 'label' ] , // Adding label
171+ } ) ;
172+
173+ const gaugeMemoryUsage = new client . Gauge ( {
174+ name : 'process_memory_bytes' ,
175+ help : 'Memory usage of the process in bytes.' ,
176+ labelNames : [ 'label' ] , // Adding label
177+ } ) ;
178+
179+ const gaugeHeapTotal = new client . Gauge ( {
180+ name : 'process_heap_total_bytes' ,
181+ help : 'Total heap memory allocated by the process in bytes.' ,
182+ labelNames : [ 'label' ] , // Adding label
183+ } ) ;
184+
185+ const gaugeHeapUsed = new client . Gauge ( {
186+ name : 'process_heap_used_bytes' ,
187+ help : 'Heap memory used by the process in bytes.' ,
188+ labelNames : [ 'label' ] , // Adding label
189+ } ) ;
190+
191+ const gaugeRss = new client . Gauge ( {
192+ name : 'process_rss_bytes' ,
193+ help : 'Resident set size (RSS) memory used by the process in bytes.' ,
194+ labelNames : [ 'label' ] , // Adding label
195+ } ) ;
196+
197+ export function startResourceMetricsUpdate ( label : string ) {
198+ register . registerMetric ( gaugeCpuUser ) ;
199+ register . registerMetric ( gaugeCpuSystem ) ;
200+ register . registerMetric ( gaugeMemoryUsage ) ;
201+ register . registerMetric ( gaugeHeapTotal ) ;
202+ register . registerMetric ( gaugeRss ) ;
203+
204+ // Set an interval to regularly update the resource metrics
205+ setInterval ( ( ) => {
206+ const memoryUsage = process . memoryUsage ( ) ;
207+ const cpuUsage = process . cpuUsage ( ) ;
208+
209+ // Update CPU metrics
210+ gaugeCpuUser . labels ( label ) . set ( cpuUsage . user / 1e6 ) ; // Convert from microseconds to seconds
211+ gaugeCpuSystem . labels ( label ) . set ( cpuUsage . system / 1e6 ) ; // Convert from microseconds to seconds
212+
213+ // Update memory metrics
214+ gaugeMemoryUsage . labels ( label ) . set ( memoryUsage . rss ) ; // Resident set size (RSS)
215+ gaugeHeapTotal . labels ( label ) . set ( memoryUsage . heapTotal ) ; // Total heap allocated
216+ gaugeHeapUsed . labels ( label ) . set ( memoryUsage . heapUsed ) ; // Heap memory in use
217+ gaugeRss . labels ( label ) . set ( memoryUsage . rss ) ; // RSS memory in bytes
218+ } , 5000 ) ; // Update metrics every 5 seconds
219+ }
0 commit comments