This document is relevant for: Trn2, Trn3
Reference: Neuron Observer metrics and faults#
Use this page to look up default metric names, meanings, sources, units, and kinds. It also defines the API-only device health states and fault actions.
Overview#
Neuron Observer exposes the same metric series through the native Prometheus /metrics endpoint on the daemon’s API port and through OpenTelemetry Protocol (OTLP) push to a collector. Unless a row identifies a specific aggregation, the tables use fully qualified base metric names with their neuron scope prefixes and omit aggregation suffixes.
Metric naming#
The tables use fully qualified base names such as neuron.device.mem_ecc_uncorrected. The default export configuration appends an aggregation suffix when it aggregates a metric.
Exported OpenTelemetry metrics use neuron.{scope}.{name} for native exports and neuron.{scope}.{name}.{strategy} for aggregated exports:
{scope}identifies the source:device,core,vcpu,efa, orsystem.{name}is the metric name.{strategy}is the aggregation applied (for example,avg,sum, orp99).
The default export configuration uses these suffixes:
Most aggregated device- and core-scoped metrics use
sum.infer_completedalso usesavg.utilizationandtime_in_useusesum,avg, andmax.Node-level latency aggregations use
avg,p50, andp99.Per-vCPU percentage metrics use
avg.Native system and EFA metrics, per-process latency percentiles, and device-health gauges have no aggregation suffix.
Device-health gauges use neuron.{name}.
The /metrics endpoint renders the same series under the Prometheus data model: characters outside [a-zA-Z0-9_:] become _ (so . becomes _), a real unit becomes a name suffix (By becomes _bytes, s becomes _seconds, % becomes _percent), and counters get a trailing _total. For example, neuron.device.mem_ecc_uncorrected.sum renders as neuron_device_mem_ecc_uncorrected_sum_total.
Metric attributes depend on the configured export scope. Device-scoped metrics use neuron_device_index; core-scoped metrics use neuron_device_index and neuroncore. Process-attributed metrics carry a runtime_tag attribute (the value of the workload’s NEURON_PROCESS_TAG, defaulting to the PID). Every data point carries instance_id.
Device health and suggested actions#
Device health#
Neuron Observer derives a per-device health verdict from the kernel driver’s unhealthy_components sysfs node. The verdict is visible through GET /api/v1/devices, GET /api/v1/node/snapshot, and nobs devices.
State |
Meaning |
|---|---|
|
|
|
A non-empty validated token list. |
|
The |
The daemon emits two info-style gauges for per-device health:
Observer metric name |
Kind |
Description |
|---|---|---|
|
gauge |
One row per device with an authoritative verdict, with a |
|
gauge |
One sparse row per (device, failing component) with a |
Observer preserves driver component tokens after validation, except that it removes corrected-only hbm and sram tokens when the corresponding uncorrected ECC counters are confirmed as zero. Observer can also report healthcheck_heartbeat_stalled and device_unreachable. Clients must accept previously unseen component values.
Hardware error metrics#
Hardware ECC counters (device)#
Observer metric name |
Kind |
Unit |
Source |
|---|---|---|---|
|
counter |
errors |
sysfs |
|
gauge |
errors |
Derived: new corrected DRAM errors since the previous collection cycle. |
|
counter |
errors |
Derived: unrepairable + repairable. |
|
counter |
errors |
sysfs |
|
counter |
errors |
sysfs |
|
counter |
errors |
sysfs |
|
gauge |
errors |
Derived: new corrected SRAM errors since the previous collection cycle. |
|
counter |
errors |
sysfs |
The counters are cumulative. The *_corrected_delta gauges report new corrected errors since the previous collection cycle. Observer does not emit a delta on the first collection cycle, when the source is unreadable, or when the source counter decreases.
Per-NeuronCore hardware and software error counters#
These cumulative counters are read from sysfs per core and summed across the node by the default export configuration. The sysfs source paths are relative to status/.
Observer metric name |
Meaning and source |
|---|---|
|
Generic errors reported by |
|
Deprecated numerical-error series. Current runtimes do not write this value, so Observer exports 0. |
|
Deprecated model-error series. Current runtimes do not write this value, so Observer exports 0. |
|
Deprecated transient-error series. Current runtimes do not write this value, so Observer exports 0. |
|
Hardware errors reported by |
|
Deprecated runtime-error series. Current runtimes do not write this value, so Observer exports 0. |
|
Generic failures reported by |
|
Resource errors reported by |
|
NeuronCore resource errors reported by |
|
Invalid operation errors reported by |
|
Unsupported NEFF version errors reported by |
|
Collective communication hardware errors reported by |
|
Uncorrectable HBM errors reported by |
|
Uncorrectable NeuronCore errors reported by |
|
DMA abort errors reported by |
|
Repairable uncorrectable HBM errors reported by |
|
Notification queue overflows reported by |
|
Semaphore errors reported by |
|
Event errors reported by |
|
Partial-sum collisions reported by |
|
Fatal sequencer errors reported by |
NeuronCore resets#
Reset request and failure metrics are cumulative counters.
Observer metric name |
Unit |
Meaning and source |
|---|---|---|
|
resets |
NeuronCore reset requests from |
|
resets |
Failed NeuronCore reset attempts from |
Memory#
Host memory (device)#
Each gauge reports current per-device host-memory use from the driver’s counters. The sysfs source paths are relative to host_mem/.
Observer metric name |
Unit |
Sysfs source ( |
|---|---|---|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
Device memory (core)#
Each gauge reports current per-NeuronCore device-memory use from the driver’s counters. The sysfs source paths are relative to device_mem/.
Observer metric name |
Unit |
Sysfs source ( |
|---|---|---|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
Runtime and derived memory metrics#
Runtime-attributed metrics carry the runtime_tag attribute. The default value is the process ID unless the workload sets NEURON_PROCESS_TAG.
Observer metric name |
Unit |
Meaning and source |
|---|---|---|
|
bytes |
Host code memory reported by the runtime device statistics. |
|
bytes |
Host tensor memory reported by the runtime device statistics. |
|
bytes |
Host constant memory reported by the runtime device statistics. |
|
bytes |
Host scratchpad memory reported by the runtime device statistics. |
|
bytes |
Other host memory reported by the runtime device statistics. |
|
bytes |
Sum of the five runtime host-memory categories, per device attachment. |
|
bytes |
Sum of the runtime device-memory categories on one NeuronCore. |
|
bytes |
Resident memory for the runtime process from |
|
bytes |
Static device capacity by architecture: V3 is 96 GiB and V4 is 144 GiB. This metric does not carry |
Utilization#
NeuronCore activity#
Observer metric name |
Kind |
Unit |
Meaning and source |
|---|---|---|---|
|
gauge |
— |
Per-NeuronCore utilization ratio, calculated as |
|
gauge |
— |
Floating-point operations per second, calculated as |
|
gauge |
s |
Total NeuronCore use time from sysfs |
|
counter |
operations |
Cumulative floating-point operations from sysfs |
|
gauge |
model_loads |
Increment-only model load count for one NeuronCore from sysfs |
|
gauge |
models |
Model subgraphs currently placed on one NeuronCore, from the runtime model store. The default export sums the values across the node. The metric is 0 when no model is loaded. |
Inference and latency#
Inference counters (core)#
Sysfs provides cumulative inference counters for each core. The default export configuration publishes neuron.core.infer_completed.avg as a gauge.
Observer metric name |
Unit |
Meaning and source |
|---|---|---|
|
inferences |
Successful inferences from |
|
inferences |
Inferences that completed with an error, from |
|
inferences |
Inferences that completed with a numerical error, from |
|
inferences |
Inference timeouts from |
|
inferences |
Inferences rejected because of incorrect input, from |
|
inferences |
Inferences that failed to enter the execution queue, from |
|
inferences |
Total inference count from |
Latency (core, per process)#
All latency metrics in this section are gauges in seconds. Per-process metrics carry runtime_tag. Observer samples the runtime latency stream and calculates p0, p1, p25, p50, p75, p99, and p100. Idle collection windows report 0.
Observer metric name or pattern |
Unit |
Meaning |
|---|---|---|
|
s |
Latest device-side inference latency from the runtime latency stream. |
|
s |
Latest total inference latency from the runtime latency stream. |
|
s |
Device-side latency percentiles for one runtime on one NeuronCore. |
|
s |
Total latency percentiles for one runtime on one NeuronCore. |
|
s |
Node-level aggregations of |
|
s |
Node-level aggregations of |
|
s |
NeuronCore execution time, summed across the node. |
|
s |
Collective communication time, summed across the node. |
EFA network counters#
Neuron Observer exports EFA driver counters at the efa scope, with one data point for each interface. Each data point carries efa_device and efa_port. Counters are cumulative since instance launch or the last driver reset. Calculate rates from the raw values.
Observer metric name |
Unit |
Sysfs counter ( |
|---|---|---|
|
bytes |
|
|
bytes |
|
|
packets |
|
|
packets |
|
|
packets |
|
|
bytes |
|
|
bytes |
|
|
operations |
|
|
operations |
|
|
operations |
|
|
operations |
|
|
bytes |
|
|
bytes |
|
|
errors |
|
|
errors |
|
|
bytes |
|
|
bytes |
|
|
bytes |
|
|
packets |
|
|
events |
|
|
events |
|
|
events |
|
Note
The SRD retransmit counters (retrans_*, impaired_remote_conn_events, unresponsive_remote_events) exist only on Nitro v4+ instances; on older instances, they are absent rather than reported as 0.
System and instance metrics#
Observer reads host memory and CPU data from /proc and calculates device and core counts from the devices discovered on the node. The default configuration exports the gauges as neuron.system.*.
Observer metric name |
Unit |
Meaning and source |
|---|---|---|
|
bytes |
Host memory reported by |
|
bytes |
|
|
bytes |
Swap space reported by |
|
bytes |
|
|
percent |
Change in busy CPU time divided by the change in total CPU time between collection cycles. Observer emits no value on the first collection cycle. |
|
— |
Change in the |
|
— |
Number of CPU entries in |
|
— |
Number of Neuron devices discovered on the node. |
|
— |
Number of physical NeuronCores across the discovered devices. |
|
— |
Number of logical NeuronCores, calculated from the physical count and LNC configuration. |
Metadata gauges#
The default configuration exports the metadata gauges with value 1. Backends join their attributes to metric data by instance_id.
Observer metric name |
Attributes |
|---|---|
|
Instance name and type, Region, Availability Zone, subnet, AMI, and UltraServer information, as set under |
|
Device and core architecture, device name, physical and logical NeuronCore counts, serial number, driver version, connected devices, and LNC configuration, as set under |
Per-vCPU and per-process CPU utilization#
Per-process CPU usage is read from /proc/<pid>/stat for each process attached to a device. Observer divides the change in process CPU ticks by the change in total CPU ticks. The default export sums values across the node while retaining runtime_tag. Observer emits 0 for a process on its first collection cycle.
Observer metric name |
Unit |
Meaning and source |
|---|---|---|
|
percent |
User-mode process time from |
|
percent |
Kernel-mode process time from |
Per-vCPU utilization is calculated from changes between /proc/stat samples. The default configuration exports an average across all vCPUs and does not export one data point for each vCPU. Observer emits no value on the first collection cycle or for an offline vCPU.
Observer metric name |
Unit |
Meaning |
|---|---|---|
|
percent |
CPU time spent in user mode, excluding niced processes. |
|
percent |
CPU time spent in user mode by processes that have an adjusted nice value. |
|
percent |
CPU time spent in kernel mode. |
|
percent |
CPU idle time. |
|
percent |
CPU time spent waiting for I/O. |
|
percent |
CPU time spent servicing hardware interrupts. |
|
percent |
CPU time spent servicing software interrupts. |
Learn more#
Get started with Neuron Observer on Amazon EKS — install Neuron Observer and view these metrics.
How to install and configure Neuron Observer on Amazon EKS — installation and export pipeline options.
Reference: Neuron Observer configuration — the Helm chart configuration values, their types, and defaults.
Troubleshooting and FAQs: Neuron Observer — common issues, FAQs, and beta limitations.
This document is relevant for: Trn2, Trn3