File tree Expand file tree Collapse file tree 3 files changed +41
-0
lines changed
Expand file tree Collapse file tree 3 files changed +41
-0
lines changed Original file line number Diff line number Diff line change @@ -6,6 +6,7 @@ import { Logger, getLogger } from "./logging.js";
66import { isValidClientId , isValidEnv } from "./paramValidation.js" ;
77import RequestCounter from "./requestCounter.js" ;
88import RequestLogger from "./requestLogger.js" ;
9+ import { getCpuMemoryUsage } from "./resources.js" ;
910import ServerErrorCounter from "./serverErrorCounter.js" ;
1011import {
1112 ApitallyConfig ,
@@ -225,6 +226,7 @@ export class ApitallyClient {
225226 this . validationErrorCounter . getAndResetValidationErrors ( ) ,
226227 server_errors : this . serverErrorCounter . getAndResetServerErrors ( ) ,
227228 consumers : this . consumerRegistry . getAndResetUpdatedConsumers ( ) ,
229+ resources : getCpuMemoryUsage ( ) ,
228230 } ;
229231 this . syncDataQueue . push ( newPayload ) ;
230232
Original file line number Diff line number Diff line change 1+ let lastCpuUsage : { user : number ; system : number } | null = null ;
2+ let lastCpuTime : number | null = null ;
3+
4+ export function getCpuMemoryUsage ( ) {
5+ const currentCpuUsage = process . cpuUsage ( ) ;
6+ const currentTime = performance . now ( ) ;
7+ const memoryRss = process . memoryUsage ( ) . rss ;
8+
9+ let cpuPercent = null ;
10+
11+ if ( lastCpuUsage !== null && lastCpuTime !== null ) {
12+ // Calculate elapsed time in microseconds
13+ const elapsedTime = ( currentTime - lastCpuTime ) * 1000 ;
14+
15+ // Calculate CPU time used (user + system) in microseconds
16+ const cpuTime =
17+ currentCpuUsage . user -
18+ lastCpuUsage . user +
19+ ( currentCpuUsage . system - lastCpuUsage . system ) ;
20+
21+ // Calculate percentage
22+ cpuPercent = ( cpuTime / elapsedTime ) * 100 ;
23+ }
24+
25+ // Update last values for next call
26+ lastCpuUsage = currentCpuUsage ;
27+ lastCpuTime = currentTime ;
28+
29+ return cpuPercent !== null
30+ ? {
31+ cpu_percent : cpuPercent ,
32+ memory_rss : memoryRss ,
33+ }
34+ : null ;
35+ }
Original file line number Diff line number Diff line change @@ -94,4 +94,8 @@ export type SyncPayload = {
9494 validation_errors : Array < ValidationErrorsItem > ;
9595 server_errors : Array < ServerErrorsItem > ;
9696 consumers : Array < ConsumerItem > ;
97+ resources : {
98+ cpu_percent : number ;
99+ memory_rss : number ;
100+ } | null ;
97101} ;
You can’t perform that action at this time.
0 commit comments