---
title: Node.js Runtime Metrics (OpenTelemetry)
description: Collect runtime metrics from your Node.js applications with OpenTelemetry.
breadcrumbs: Docs > Integrations > Node.js Runtime Metrics (OpenTelemetry)
---

# Node.js Runtime Metrics (OpenTelemetry)

{% callout %}
# Important note for users on the following Datadog sites: us2.ddog-gov.com

{% alert level="info" %}
To find out if this integration is available in your organization, see your [Datadog Integrations](https://app.datadoghq.com/integrations) page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email [support@ddog-gov.com](mailto:support@ddog-gov.com).
{% /alert %}

{% /callout %}

## Overview{% #overview %}

The Node.js OpenTelemetry integration collects runtime metrics from your Node.js applications instrumented with OpenTelemetry.

## Setup{% #setup %}

See the dedicated documentation for [Node.js Runtime Metrics with OpenTelemetry](https://opentelemetry.io/docs/specs/semconv/runtime/nodejs-metrics/).

### Recommended collector processors{% #recommended-collector-processors %}

The following metric is emitted as a cumulative counter by the OpenTelemetry Node.js SDK. To convert it to a per-second rate in Datadog, apply the [Delta To Rate processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/deltatorateprocessor) in your OpenTelemetry Collector pipeline:

- `nodejs.eventloop.time`

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **process.cpu.time**(count)                       | Process CPU time in seconds*Shown as second*                                                        |
| **process.cpu.utilization**(gauge)                | CPU utilization of the process as a fraction of available CPU per core*Shown as percent*            |
| **process.memory.usage**(gauge)                   | Amount of physical memory in use by the process*Shown as byte*                                      |
| **system.cpu.time**(count)                        | CPU time in seconds*Shown as second*                                                                |
| **system.cpu.utilization**(gauge)                 | Cpu usage time 0-1*Shown as fraction*                                                               |
| **system.memory.usage**(gauge)                    | System memory usage by state (free or used)*Shown as byte*                                          |
| **system.memory.utilization**(gauge)              | Memory usage 0-1*Shown as fraction*                                                                 |
| **v8js.memory.heap.limit**(gauge)                 | Total heap memory size pre-allocated per V8 heap space*Shown as byte*                               |
| **v8js.memory.heap.used**(gauge)                  | Heap memory size allocated per V8 heap space*Shown as byte*                                         |
| **v8js.memory.heap.space.available\_size**(gauge) | Heap space available size per V8 heap space*Shown as byte*                                          |
| **v8js.memory.heap.space.physical\_size**(gauge)  | Committed size of a V8 heap space*Shown as byte*                                                    |
| **nodejs.eventloop.delay.min**(gauge)             | Event loop minimum delay*Shown as second*                                                           |
| **nodejs.eventloop.delay.max**(gauge)             | Event loop maximum delay*Shown as second*                                                           |
| **nodejs.eventloop.delay.mean**(gauge)            | Event loop mean delay*Shown as second*                                                              |
| **nodejs.eventloop.delay.stddev**(gauge)          | Event loop standard deviation delay*Shown as second*                                                |
| **nodejs.eventloop.delay.p50**(gauge)             | Event loop 50th percentile delay*Shown as second*                                                   |
| **nodejs.eventloop.delay.p90**(gauge)             | Event loop 90th percentile delay*Shown as second*                                                   |
| **nodejs.eventloop.delay.p99**(gauge)             | Event loop 99th percentile delay*Shown as second*                                                   |
| **nodejs.eventloop.time**(count)                  | Cumulative duration of time the event loop has been in each state (active or idle)*Shown as second* |
| **nodejs.eventloop.utilization**(gauge)           | Event loop utilization as a fraction of time spent active*Shown as fraction*                        |
| **v8js.gc.duration**(gauge)                       | Garbage collection duration by kind (major minor incremental or weakcb)*Shown as second*            |

## Support{% #support %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
