@opentelemetry/instrumentation-perf-hooks
v0.1.0
Published
OpenTelemetry Node.js Performance measurement API automatic instrumentation package
Downloads
3,719
Readme
OpenTelemetry Node.js Performance Hooks Instrumentation
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
- For more information on OpenTelemetry, visit: https://opentelemetry.io/
- For more about OpenTelemetry JavaScript: https://github.com/open-telemetry/opentelemetry-js
- For help or feedback on this project, join us in GitHub Discussions
License
Apache 2.0 - See LICENSE for more information.