Currently there's no way to get process-level health metrics out of Sentry for Node.js without writing custom instrumentation. We want to add a new opt-in integration nodeRuntimeMetricsIntegration which auto-collects metrics in a loop.
Metrics
| Group |
Metric |
Type |
| CPU |
node.runtime.cpu.user |
gauge |
|
node.runtime.cpu.system |
gauge |
|
node.runtime.cpu.percent |
gauge |
| Memory |
node.runtime.mem.rss |
gauge |
|
node.runtime.mem.heap_total |
gauge |
|
node.runtime.mem.heap_used |
gauge |
|
node.runtime.mem.external |
gauge |
|
node.runtime.mem.array_buffers |
gauge |
| V8 Heap |
node.runtime.heap.total_heap_size |
gauge |
|
node.runtime.heap.heap_size_limit |
gauge |
|
node.runtime.heap.total_available_size |
gauge |
|
node.runtime.heap.malloced_memory |
gauge |
|
node.runtime.heap.number_of_detached_contexts |
gauge |
| GC |
node.runtime.gc.duration.min |
gauge |
|
node.runtime.gc.duration.max |
gauge |
|
node.runtime.gc.duration.mean |
gauge |
|
node.runtime.gc.duration.p95 |
gauge |
|
node.runtime.gc.count |
counter |
| Event Loop Delay |
node.runtime.event_loop.delay.min |
gauge |
|
node.runtime.event_loop.delay.max |
gauge |
|
node.runtime.event_loop.delay.mean |
gauge |
|
node.runtime.event_loop.delay.p50 |
gauge |
|
node.runtime.event_loop.delay.p90 |
gauge |
|
node.runtime.event_loop.delay.p99 |
gauge |
| Event Loop Utilization |
node.runtime.event_loop.utilization |
gauge |
| System |
node.runtime.system.free_memory |
gauge |
|
node.runtime.system.total_memory |
gauge |
| Process |
node.runtime.process.uptime |
counter |
| Heap Spaces (opt-in) |
node.runtime.heap.space.size |
gauge |
|
node.runtime.heap.space.used_size |
gauge |
|
node.runtime.heap.space.available_size |
gauge |
|
node.runtime.heap.space.physical_size |
gauge |
GC metrics tagged by gc_type. Heap space metrics tagged by heap_space.
Decisions
- Collection interval: 30s default
- Serverless: keep interval running + flush eagerly at end of invocation (reuses existing serverless context detection)
- Cluster mode: aggregated metrics for now, no per-worker disambiguation
Currently there's no way to get process-level health metrics out of Sentry for Node.js without writing custom instrumentation. We want to add a new opt-in integration
nodeRuntimeMetricsIntegrationwhich auto-collects metrics in a loop.Metrics
node.runtime.cpu.usernode.runtime.cpu.systemnode.runtime.cpu.percentnode.runtime.mem.rssnode.runtime.mem.heap_totalnode.runtime.mem.heap_usednode.runtime.mem.externalnode.runtime.mem.array_buffersnode.runtime.heap.total_heap_sizenode.runtime.heap.heap_size_limitnode.runtime.heap.total_available_sizenode.runtime.heap.malloced_memorynode.runtime.heap.number_of_detached_contextsnode.runtime.gc.duration.minnode.runtime.gc.duration.maxnode.runtime.gc.duration.meannode.runtime.gc.duration.p95node.runtime.gc.countnode.runtime.event_loop.delay.minnode.runtime.event_loop.delay.maxnode.runtime.event_loop.delay.meannode.runtime.event_loop.delay.p50node.runtime.event_loop.delay.p90node.runtime.event_loop.delay.p99node.runtime.event_loop.utilizationnode.runtime.system.free_memorynode.runtime.system.total_memorynode.runtime.process.uptimenode.runtime.heap.space.sizenode.runtime.heap.space.used_sizenode.runtime.heap.space.available_sizenode.runtime.heap.space.physical_sizeGC metrics tagged by
gc_type. Heap space metrics tagged byheap_space.Decisions