{"version":3,"file":"heapSpacesSizeAndUsedCollector.js","sourceRoot":"","sources":["../../../src/metrics/heapSpacesSizeAndUsedCollector.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,8BAA8B;AAK9B,mDAAgD;AAChD,wCAMoB;AAEpB,MAAa,8BAA+B,SAAQ,6BAAa;IAC/D,uBAAuB,CAAC,KAAY;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,CAC3C,uCAA6B,EAC7B;YACE,WAAW,EAAE,uCAAuC;YACpD,IAAI,EAAE,IAAI;SACX,CACF,CAAC;QACF,MAAM,aAAa,GAAG,KAAK,CAAC,qBAAqB,CAC/C,sCAA4B,EAC5B;YACE,WAAW,EAAE,6BAA6B;YAC1C,IAAI,EAAE,IAAI;SACX,CACF,CAAC;QACF,MAAM,kBAAkB,GAAG,KAAK,CAAC,qBAAqB,CACpD,sDAA4C,EAC5C;YACE,WAAW,EAAE,4BAA4B;YACzC,IAAI,EAAE,IAAI;SACX,CACF,CAAC;QACF,MAAM,iBAAiB,GAAG,KAAK,CAAC,qBAAqB,CACnD,qDAA2C,EAC3C;YACE,WAAW,EAAE,iCAAiC;YAC9C,IAAI,EAAE,IAAI;SACX,CACF,CAAC;QAEF,KAAK,CAAC,0BAA0B,CAC9B,gBAAgB,CAAC,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO;YAElC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO;YAC/B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;gBACxB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;gBAEnC,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE;oBACpD,CAAC,mCAAyB,CAAC,EAAE,SAAS;iBACvC,CAAC,CAAC;gBAEH,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,eAAe,EAAE;oBAC7D,CAAC,mCAAyB,CAAC,EAAE,SAAS;iBACvC,CAAC,CAAC;gBAEH,gBAAgB,CAAC,OAAO,CACtB,kBAAkB,EAClB,KAAK,CAAC,oBAAoB,EAC1B;oBACE,CAAC,mCAAyB,CAAC,EAAE,SAAS;iBACvC,CACF,CAAC;gBAEF,gBAAgB,CAAC,OAAO,CACtB,iBAAiB,EACjB,KAAK,CAAC,mBAAmB,EACzB;oBACE,CAAC,mCAAyB,CAAC,EAAE,SAAS;iBACvC,CACF,CAAC;aACH;QACH,CAAC,EACD,CAAC,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAClE,CAAC;IACJ,CAAC;IAED,cAAc,KAAU,CAAC;IAEzB,eAAe,KAAU,CAAC;IAElB,MAAM;QACZ,OAAO,EAAE,CAAC,sBAAsB,EAAE,CAAC;IACrC,CAAC;CACF;AA5ED,wEA4EC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport * as v8 from 'node:v8';\nimport type { HeapSpaceInfo } from 'v8';\n\nimport { Meter } from '@opentelemetry/api';\n\nimport { BaseCollector } from './baseCollector';\nimport {\n  ATTR_V8JS_HEAP_SPACE_NAME,\n  METRIC_V8JS_MEMORY_HEAP_LIMIT,\n  METRIC_V8JS_MEMORY_HEAP_USED,\n  METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE,\n  METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE,\n} from '../semconv';\n\nexport class HeapSpacesSizeAndUsedCollector extends BaseCollector {\n  updateMetricInstruments(meter: Meter): void {\n    const heapLimit = meter.createObservableGauge(\n      METRIC_V8JS_MEMORY_HEAP_LIMIT,\n      {\n        description: 'Total heap memory size pre-allocated.',\n        unit: 'By',\n      }\n    );\n    const heapSpaceUsed = meter.createObservableGauge(\n      METRIC_V8JS_MEMORY_HEAP_USED,\n      {\n        description: 'Heap Memory size allocated.',\n        unit: 'By',\n      }\n    );\n    const heapSpaceAvailable = meter.createObservableGauge(\n      METRIC_V8JS_MEMORY_HEAP_SPACE_AVAILABLE_SIZE,\n      {\n        description: 'Heap space available size.',\n        unit: 'By',\n      }\n    );\n    const heapSpacePhysical = meter.createObservableGauge(\n      METRIC_V8JS_MEMORY_HEAP_SPACE_PHYSICAL_SIZE,\n      {\n        description: 'Committed size of a heap space.',\n        unit: 'By',\n      }\n    );\n\n    meter.addBatchObservableCallback(\n      observableResult => {\n        if (!this._config.enabled) return;\n\n        const data = this.scrape();\n        if (data === undefined) return;\n        for (const space of data) {\n          const spaceName = space.space_name;\n\n          observableResult.observe(heapLimit, space.space_size, {\n            [ATTR_V8JS_HEAP_SPACE_NAME]: spaceName,\n          });\n\n          observableResult.observe(heapSpaceUsed, space.space_used_size, {\n            [ATTR_V8JS_HEAP_SPACE_NAME]: spaceName,\n          });\n\n          observableResult.observe(\n            heapSpaceAvailable,\n            space.space_available_size,\n            {\n              [ATTR_V8JS_HEAP_SPACE_NAME]: spaceName,\n            }\n          );\n\n          observableResult.observe(\n            heapSpacePhysical,\n            space.physical_space_size,\n            {\n              [ATTR_V8JS_HEAP_SPACE_NAME]: spaceName,\n            }\n          );\n        }\n      },\n      [heapLimit, heapSpaceUsed, heapSpaceAvailable, heapSpacePhysical]\n    );\n  }\n\n  internalEnable(): void {}\n\n  internalDisable(): void {}\n\n  private scrape(): HeapSpaceInfo[] {\n    return v8.getHeapSpaceStatistics();\n  }\n}\n"]}