@opentelemetry/instrumentation-runtime-node
Version:
OpenTelemetry instrumentation for Node.js Performance measurement API
43 lines • 1.65 kB
JavaScript
;
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActiveResourcesCollector = void 0;
const baseCollector_1 = require("./baseCollector");
const semconv_1 = require("../semconv");
class ActiveResourcesCollector extends baseCollector_1.BaseCollector {
_knownTypes = new Set();
updateMetricInstruments(meter) {
const activeResources = meter.createObservableGauge(semconv_1.METRIC_V8JS_RESOURCE_ACTIVE, {
description: 'Count of the active resources that are currently keeping the event loop alive.',
unit: '{resource}',
});
meter.addBatchObservableCallback(observableResult => {
if (!this._config.enabled)
return;
const data = this.scrape();
const pdata = {};
for (const type of data) {
if (Object.hasOwn(pdata, type)) {
pdata[type] += 1;
}
else {
pdata[type] = 1;
}
this._knownTypes.add(type);
}
for (const key of this._knownTypes) {
observableResult.observe(activeResources, Object.hasOwn(pdata, key) ? pdata[key] : 0, { [semconv_1.ATTR_V8JS_RESOURCE_TYPE]: key });
}
}, [activeResources]);
}
internalEnable() { }
internalDisable() { }
scrape() {
return process.getActiveResourcesInfo();
}
}
exports.ActiveResourcesCollector = ActiveResourcesCollector;
//# sourceMappingURL=activeResourcesCollector.js.map