File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -21,6 +21,9 @@ export const getOsPlatform = (): Platform => {
2121 } ;
2222} ;
2323
24+ export const toDecimalNumber = ( val : number , decimal : number = 2 ) =>
25+ Number ( val . toFixed ( decimal ) ) ;
26+
2427// export const sanitizeDsn = (dsn: string) => {
2528// const [secretKey, rest] = dsn
2629// .replace("http://", "")
Original file line number Diff line number Diff line change @@ -5,6 +5,8 @@ import { cpu } from "./metrics/cpu-usage";
55import * as os from "node:os" ;
66import { memory } from "./metrics/memory-usage" ;
77import { heap } from "./metrics/heap" ;
8+ import { eventLoop } from "./metrics/event-loop" ;
9+ import { toDecimalNumber } from "./helpers" ;
810
911const DEFAULT_INTERVAL = 30 ; //seconds
1012
@@ -18,8 +20,9 @@ const collectMetrics = (options: TraceoOptions) => {
1820 const metrics : Metrics = {
1921 cpuUsage : cpu . usage ( ) ,
2022 memory : memory . usage ( ) ,
21- loadAvg : Number ( os . loadavg ( ) [ 0 ] . toFixed ( 2 ) ) || 0 ,
23+ loadAvg : toDecimalNumber ( os . loadavg ( ) [ 0 ] ) ,
2224 heap,
25+ eventLoopLag : eventLoop . collect ( ) ,
2326 } ;
2427
2528 const httpModule = new HttpModule ( "/api/worker/metrics" , metrics ) ;
Original file line number Diff line number Diff line change 1+ import * as perf_hooks from "perf_hooks" ;
2+ import { Metrics } from "../../transport/metrics" ;
3+ import { toDecimalNumber } from "../helpers" ;
4+
5+ const histogram = perf_hooks . monitorEventLoopDelay ( {
6+ resolution : 10 ,
7+ } ) ;
8+ histogram . enable ( ) ;
9+
10+ const collect = ( ) => {
11+ const data : Metrics [ "eventLoopLag" ] = {
12+ min : toDecimalNumber ( histogram . min / 1e6 ) ,
13+ max : toDecimalNumber ( histogram . max / 1e6 ) ,
14+ mean : toDecimalNumber ( histogram . mean / 1e6 ) ,
15+ stddev : toDecimalNumber ( histogram . stddev / 1e6 ) ,
16+ p50 : toDecimalNumber ( histogram . percentile ( 50 ) / 1e6 ) ,
17+ p90 : toDecimalNumber ( histogram . percentile ( 90 ) / 1e6 ) ,
18+ p99 : toDecimalNumber ( histogram . percentile ( 99 ) / 1e6 ) ,
19+ } ;
20+ histogram . reset ( ) ;
21+
22+ return data ;
23+ } ;
24+
25+ export const eventLoop = { collect } ;
Original file line number Diff line number Diff line change 11import * as v8 from "v8" ;
2+ import { Metrics } from "../../transport/metrics" ;
3+ import { toDecimalNumber } from "../helpers" ;
24
35/**
46 * https://www.geeksforgeeks.org/node-js-v8-getheapstatistics-method/
@@ -14,10 +16,10 @@ const getNumberOfNativeContexts = () =>
1416const getNumberOfDetachedContexts = ( ) =>
1517 getHeapStatistics ( ) . number_of_detached_contexts ;
1618
17- export const heap = {
18- used : Number ( ( process . memoryUsage ( ) . heapUsed / TO_MB ) . toFixed ( 2 ) ) ,
19- total : Number ( ( process . memoryUsage ( ) . heapTotal / TO_MB ) . toFixed ( 2 ) ) ,
20- rss : Number ( ( process . memoryUsage ( ) . rss / TO_MB ) . toFixed ( 2 ) ) ,
19+ export const heap : Metrics [ 'heap' ] = {
20+ used : toDecimalNumber ( process . memoryUsage ( ) . heapUsed / TO_MB ) ,
21+ total : toDecimalNumber ( process . memoryUsage ( ) . heapTotal / TO_MB ) ,
22+ rss : toDecimalNumber ( process . memoryUsage ( ) . rss / TO_MB ) ,
2123 nativeContexts : getNumberOfNativeContexts ( ) ,
2224 detachedContexts : getNumberOfDetachedContexts ( ) ,
2325} ;
Original file line number Diff line number Diff line change 11import * as os from "node:os" ;
2+ import { toDecimalNumber } from "../helpers" ;
23
34const usage = ( ) => {
45 const freeMemory = Math . round ( os . freemem ( ) / 1024 / 1024 ) ;
56 const totalMemory = Math . round ( os . totalmem ( ) / 1024 / 1024 ) ;
67
78 const usedMemory = Math . round ( totalMemory - freeMemory ) ;
8- const percentageUsed = Number ( ( ( usedMemory / totalMemory ) * 100 ) . toFixed ( 2 ) ) ;
9+ const percentageUsed = toDecimalNumber ( ( usedMemory / totalMemory ) * 100 ) ;
910
1011 return {
1112 mb : usedMemory ,
Original file line number Diff line number Diff line change @@ -12,4 +12,13 @@ export interface Metrics {
1212 nativeContexts : number ;
1313 detachedContexts : number ;
1414 } ;
15+ eventLoopLag : {
16+ min : number ;
17+ max : number ;
18+ mean : number ;
19+ stddev : number ;
20+ p50 : number ;
21+ p90 : number ;
22+ p99 : number ;
23+ } ;
1524}
Original file line number Diff line number Diff line change 11{
22 "name" : " traceo-sdk" ,
3- "version" : " 0.3.4 -beta" ,
3+ "version" : " 0.3.6 -beta" ,
44 "license" : " MIT" ,
55 "main" : " dist/index.js" ,
66 "types" : " dist/index.d.ts" ,
You can’t perform that action at this time.
0 commit comments