
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
@opentelemetry/instrumentation-runtime-node
Advanced tools
OpenTelemetry instrumentation for Node.js Performance measurement API
This module provides automatic metric instrumentation that exposes measurements from the Performance measurement APIs (i.e. perf_hooks).
It can also emit OpenTelemetry logs for uncaught exceptions.
When a configured logger provider exposes forceFlush() (for example, the SDK
LoggerProvider), this instrumentation calls it immediately after emitting the
uncaught-exception log record as a best-effort attempt to reduce log loss on
process termination.
^18.19.0 || >=20.6.0npm install --save @opentelemetry/sdk-node @opentelemetry/exporter-prometheus
npm install --save @opentelemetry/instrumentation-runtime-node
import { NodeSDK } from '@opentelemetry/sdk-node';
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import { RuntimeNodeInstrumentation } from '@opentelemetry/instrumentation-runtime-node';
const sdk = new NodeSDK({
metricReaders: [
// Setup the SDK to export metrics via a Prometheus endpoint.
new PrometheusExporter({ port: 9464, startServer: true }),
],
instrumentations: [
new RuntimeNodeInstrumentation({ monitoringPrecision: 5000 })
],
});
sdk.start()
Go to localhost:9464/metrics, and you should see:
# HELP nodejs_performance_event_loop_utilization Event loop utilization
# UNIT nodejs_performance_event_loop_utilization 1
# TYPE nodejs_performance_event_loop_utilization gauge
nodejs_performance_event_loop_utilization 0.010140079547955264
On the very first metrics collection the event loop utilization and time metrics may report zero or near-zero values while the instrumentation establishes a baseline.
RuntimeNodeInstrumentation's constructor accepts the following options:
| name | type | unit | default | description |
|---|---|---|---|---|
monitoringPrecision | int | millisecond | 10 | The resolution in milliseconds for the event loop delay histogram (perf_hooks.monitorEventLoopDelay). A smaller value gives finer-grained delay samples at the cost of more overhead. Has no effect on event loop utilization or time metrics. |
captureUncaughtException | bool | - | false | Whether to emit a LogRecord for uncaught exceptions (severity FATAL). Uses the uncaughtExceptionMonitor process event. |
applyCustomExceptionAttributes | function | - | undefined | Optional callback to attach custom attributes to emitted exception log records. |
This instrumentation emits metrics defined in the experimental @opentelemetry/semantic-conventions (^1.29.0) for the nodejs and v8js runtime namespaces.
| Metric | Short Description |
|---|---|
nodejs.eventloop.time | Cumulative duration the event loop has been in each state |
nodejs.eventloop.utilization | Event loop utilization ratio (0.0–1.0) |
nodejs.eventloop.delay.min | Minimum event loop delay |
nodejs.eventloop.delay.max | Maximum event loop delay |
nodejs.eventloop.delay.mean | Mean event loop delay |
nodejs.eventloop.delay.stddev | Standard deviation of event loop delay |
nodejs.eventloop.delay.p50 | 50th-percentile event loop delay |
nodejs.eventloop.delay.p90 | 90th-percentile event loop delay |
nodejs.eventloop.delay.p99 | 99th-percentile event loop delay |
v8js.gc.duration | Garbage Collection pause duration by type |
v8js.memory.heap.space.size | Total pre-allocated size of a heap space |
v8js.memory.heap.used | Used heap memory in a heap space |
v8js.memory.heap.space.available_size | Available size in a heap space |
v8js.memory.heap.space.physical_size | Committed (physical) size of a heap space |
v8js.resource.active | Count of active resources keeping the event loop alive |
| Attribute | Short Description |
|---|---|
nodejs.eventloop.state | State of the event loop (active, idle) |
v8js.gc.type | Type of Garbage Collection (major, minor, incremental, weakcb) |
v8js.heap.space.name | Name of the V8 heap space |
v8js.resource.type | Type of active resource |
Apache 2.0 - See LICENSE for more information.
FAQs
OpenTelemetry instrumentation for Node.js Performance measurement API
The npm package @opentelemetry/instrumentation-runtime-node receives a total of 2,785,452 weekly downloads. As such, @opentelemetry/instrumentation-runtime-node popularity was classified as popular.
We found that @opentelemetry/instrumentation-runtime-node demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 6 open source maintainers collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.