New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@opentelemetry/instrumentation-runtime-node

Package Overview
Dependencies
Maintainers
6
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opentelemetry/instrumentation-runtime-node

OpenTelemetry instrumentation for Node.js Performance measurement API

Source
npmnpm
Version
0.32.0
Version published
Weekly downloads
9.6M
-19.86%
Maintainers
6
Weekly downloads
 
Created
Source

OpenTelemetry Node.js Runtime Metrics Instrumentation

NPM Published Version Apache License

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.

Supported Versions

  • Node.js >=14.10

Example

npm 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 prometheusExporter = new PrometheusExporter({
  port: 9464,
  startServer: true
});

const sdk = new NodeSDK({
  metricReader: prometheusExporter,
  instrumentations: [new RuntimeNodeInstrumentation({
    monitoringPrecision: 5000,
  })],
});

sdk.start()

NodeSDK is the full OpenTelemetry SDK for Node.js that is a layer of abstraction on top of the @opentelemetry/sdk-metrics and @opentelemetry/sdk-trace-* packages. By specifying metricReader, it will initialize the metrics SDK and creates a MeterProvider. @opentelemetry/exporter-prometheus will output metrics collected by registered instrumentation on a /metrics endpoint.

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

Metrics will only be exported after it has collected two ELU readings (at least approximately RuntimeNodeInstrumentationConfig.monitoringPrecision milliseconds after initialization). Otherwise, you may see:

# no registered metrics

Options

RuntimeNodeInstrumentation's constructor accepts the following options:

nametypeunitdefaultdescription
monitoringPrecisionintmillisecond10The approximate number of milliseconds for which to calculate event loop utilization averages. A larger value will result in more accurate averages at the expense of less granular data. Should be set to below the scrape interval of your metrics collector to avoid duplicated data points.
captureUncaughtExceptionbool-falseWhether to emit a LogRecord for uncaught exceptions (severity FATAL). Uses the uncaughtExceptionMonitor process event.
applyCustomExceptionAttributesfunction-undefinedOptional callback to attach custom attributes to emitted exception log records.

License

Apache 2.0 - See LICENSE for more information.

Keywords

perf_hooks

FAQs

Package last updated on 11 Jun 2026

Related posts