@opentelemetry/instrumentation-perf-hooks
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

OpenTelemetry Node.js Performance Hooks Instrumentation

NPM Published Version Apache License

This module provides automatic metric instrumentation that exposes measurements from the Performance measurement APIs (i.e. perf_hooks).

Example

npm install --save @opentelemetry/sdk-node @opentelemetry/exporter-prometheus
npm install --save @opentelemetry/instrumentation-perf-hooks
import { NodeSDK } from '@opentelemetry/sdk-node';
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import { PerfHooksInstrumentation } from '@opentelemetry/instrumentation-perf-hooks';

const prometheusExporter = new PrometheusExporter({
  port: 9464,
  startServer: true
});

const sdk = new NodeSDK({
  metricReader: prometheusExporter,
  instrumentations: [new PerfHooksInstrumentation({
    eventLoopUtilizationMeasurementInterval: 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 PerfHooksInstrumentationConfig.eventLoopUtilizationMeasurementInterval milliseconds after initialization). Otherwise, you may see:

# no registered metrics

Options

PerfHooksInstrumentation's constructor accepts the following options:

name type unit default description
eventLoopUtilizationMeasurementInterval int millisecond 5000 The 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.

Supported Node.js versions

v14.10.0+

Useful links

License

Apache 2.0 - See LICENSE for more information.

Package Sidebar

Install

npm i @opentelemetry/instrumentation-perf-hooks

Weekly Downloads

305

Version

0.1.0

License

Apache-2.0

Unpacked Size

30.6 kB

Total Files

15

Last publish

Collaborators

  • pichlermarc
  • bogdandrutu
  • dyladan