NVIDIA Jetson
Plugin: go.d.plugin Module: jetson
Overview
Monitor GPU and memory controller activity, power consumption, and SoC temperatures on NVIDIA Jetson devices.
You get:
- GPU utilization.
- GPU clock frequency, as one value or, on devices that report it, one value per graphics processing cluster (GPC).
- External memory controller (EMC) bandwidth utilization and clock frequency. The CPU and GPU share this memory, so high EMC utilization can reveal memory-bandwidth-bound workloads.
- Current power consumption for each reported power rail, in watts.
- SoC temperatures for
cpu,gpu,soc0,soc1,soc2, andtj, in degrees Celsius when reported as single values.
CPU, memory, and swap usage come from Netdata's standard Linux system monitoring; this collector adds Jetson GPU, EMC, power rail, and SoC temperature readings. Power and temperature readings help correlate workload activity with power consumption and heating. Existing generic sensor monitoring remains available.
The collector runs NVIDIA's tegrastats --interval 1000 on the local host and reads the line of readings it prints every second. One tegrastats process runs for as long as the job runs. By default, Netdata's restricted ndsudo helper runs /usr/bin/tegrastats as root to recover readings that may be unavailable to the Netdata service account, including GPU clocks and EMC activity.
If privileged execution is unavailable before the first producer starts, the collector logs a warning and uses tegrastats from Netdata's PATH under its service account (usually netdata). Set allow_privileged: false to use only this unprivileged mode. The selected mode remains in use until the job is recreated.
It stops only the tegrastats process it started; other instances on the host, such as one you run in a terminal, are not affected.
This collector is only supported on the following platforms:
- Linux
This collector only supports collecting metrics from a single instance of this integration.
Privileged collection requires Netdata's installed ndsudo helper and NVIDIA's native executable at /usr/bin/tegrastats. For this route, the executable and its parent directories must be root-owned, must not be writable by other users, and must not be symlinks. The helper accepts no custom command path or arguments.
Unprivileged collection requires the Netdata service account to be able to run tegrastats from its PATH. Readings that your Jetson Linux release shows only to root are then unavailable.
Default Behavior
Auto-Detection
The stock configuration runs one job named localhost, which looks for tegrastats in Netdata's PATH or, when allow_privileged is enabled, at /usr/bin/tegrastats. Detection does not execute the utility; collection starts after detection succeeds.
If tegrastats is missing when Netdata starts, the job does not start; restart Netdata after making it available.
Limits
- The readings depend on the Jetson module, the Jetson Linux release, and permissions. For example,
tegrastatson Jetson Thor can report GPU clocks without GPU utilization. A reading thattegrastatsdoes not report leaves a gap; it is never charted as zero. - Rail names and coverage vary by device. Rails can overlap, so adding their values does not give total device power. On Thor, the total-system
VINrail may also appear in Netdata's sensors charts. - Power charts use the current reading from supported current/average pairs. Averages and unfamiliar three-value forms are not collected.
- Temperature charts retain the six supported source names and fractional values. Once observed, these sensor charts are retained when readings are unavailable, including the documented
-256Csentinel. Missing readings leave gaps. Other names and multi-value temperature forms are not collected. - If
tegrastatsstops printing readings, the charts show a gap after three seconds instead of repeating the last values.
Performance Impact
Each job keeps one tegrastats --interval 1000 process running, plus a supervising helper in privileged mode. Netdata parses one line of its output per second. CPU and memory overhead have not been measured on Jetson hardware.
A longer update_every reduces how often Netdata stores readings, not how often tegrastats samples.
Setup
You can configure the jetson collector in two ways:
| Method | Best for | How to |
|---|---|---|
| UI | Fast setup without editing files | Go to Nodes → Configure this node → Collectors → Jobs, search for jetson, then click + to add a job. |
| File | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit go.d/jetson.conf and add a job. |
UI configuration requires paid Netdata Cloud plan.
Prerequisites
Make tegrastats available to Netdata
The collector needs Netdata installed natively on the Jetson device and the tegrastats utility that NVIDIA Jetson Linux (installed with JetPack) provides. Netdata running in a container is not supported.
To inspect the readings available with the default privileged mode, run:
sudo /usr/bin/tegrastats --interval 1000
Each line should contain a GR3D_FREQ (GPU), EMC_FREQ (memory controller), a power rail reading such as VDD_GPU 10687mW/9815mW, or a supported temperature such as cpu@39.218C; stop the command with Ctrl+C. Readings missing from this output cannot be collected by this integration. This manual command checks the vendor utility; it does not verify Netdata's packaged helper.
For unprivileged mode or fallback, compare the output of sudo -u netdata tegrastats --interval 1000. GPU clocks and EMC readings may be absent in that output.
If the command is not found, restore tegrastats with NVIDIA's tegrastats deployment instructions. Netdata searches its own PATH, which adds /sbin, /usr/sbin, /usr/local/bin, and /usr/local/sbin to the PATH it starts with. Privileged execution always uses /usr/bin/tegrastats; changing PATH affects only unprivileged execution. If tegrastats is in another directory, set PATH in the [environment variables] section of netdata.conf to a list that includes it, then restart Netdata.
Configuration
Options
The options can be set globally or per job. One job covers the whole Jetson device.
Config options
| Option | Description | Default | Required |
|---|---|---|---|
| update_every | Data collection interval, in seconds. tegrastats samples once per second regardless; a longer interval charts the latest reading, not an average. | 1 | no |
| allow_privileged | Allow restricted privileged execution of tegrastats to collect readings that require root, such as GPU clocks and EMC activity. | yes | no |
allow_privileged
Enabled by default. If the helper or fixed vendor executable is unavailable before the first producer starts, the collector warns once and uses unprivileged collection for the lifetime of that job. Recreate the job or restart Netdata to retry privileged collection after repairing the installation.
Unsafe executable permissions, helper protocol/setup errors, and failures after privileged startup do not trigger fallback. Set this option to false to avoid privileged execution entirely; root-only readings may then be missing.
via UI
Configure the jetson collector from the Netdata web interface:
- Go to Nodes.
- Select the node where you want the jetson data-collection job to run and click the ⚙ (Configure this node). That node will run the data collection.
- The Collectors → Jobs view opens by default.
- In the Search box, type jetson (or scroll the list) to locate the jetson collector.
- Click the + next to the jetson collector to add a new job.
- Fill in the job fields, then click Test to verify the configuration and Submit to save.
- Test validates the provided settings and checks the collector's startup prerequisites. Successful validation does not guarantee that every metric will be available during collection.
- If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.
via File
The configuration file name for this integration is go.d/jetson.conf.
The file format is YAML. Generally, the structure is:
update_every: 1
autodetection_retry: 0
jobs:
- name: some_name1
- name: some_name2
You can edit the configuration file using the edit-config script from the
Netdata config directory.
cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config go.d/jetson.conf
Examples
Basic
The stock configuration, with one job for the local Jetson device.
Config
jobs:
- name: localhost
Alerts
There are no alerts configured by default for this integration.
Metrics
Metrics grouped by scope.
The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.
Charts show only readings present in the latest tegrastats line. A missing or invalid reading leaves a gap; a reported zero is charted as zero.
Per NVIDIA Jetson instance
The Jetson device's integrated GPU and external memory controller (EMC).
This scope has no labels.
Metrics:
| Metric | Description | Dimensions | Unit |
|---|---|---|---|
| jetson.gpu_utilization | GPU Utilization | utilization | percentage |
| jetson.gpu_frequency | GPU Frequency | frequency | MHz |
| jetson.emc_utilization | Memory Controller Bandwidth Utilization at Current Frequency | utilization | percentage |
| jetson.emc_frequency | Memory Controller Frequency | frequency | MHz |
Per GPU graphics processing cluster
One graphics processing cluster (GPC) of the GPU, present when tegrastats reports a clock for each GPC.
Labels:
| Label | Description |
|---|---|
| gpc | Position of the cluster in the tegrastats GPU clock list, starting at 0. |
Metrics:
| Metric | Description | Dimensions | Unit |
|---|---|---|---|
| jetson.gpu_gpc_frequency | GPU Graphics Processing Cluster Frequency | frequency | MHz |
Per power rail
One power rail reported by tegrastats with a valid current/average milliwatt pair.
Labels:
| Label | Description |
|---|---|
| rail | NVIDIA's power rail name, such as VDD_GPU, VDD_CPU_CV, or VIN; a rail can supply several components. |
Metrics:
| Metric | Description | Dimensions | Unit |
|---|---|---|---|
| jetson.power_rail_power | Power Rail Consumption | power | Watts |
Per temperature sensor
One of the supported SoC sensors with a valid scalar Celsius reading in the latest tegrastats record.
Labels:
| Label | Description |
|---|---|
| sensor | Source sensor name, preserved as cpu, gpu, soc0, soc1, soc2, or tj. |
Metrics:
| Metric | Description | Dimensions | Unit |
|---|---|---|---|
| jetson.sensor_temperature | SoC Temperature | temperature | Celsius |
Troubleshooting
Diagnostics
Debug Mode
Important: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.
To troubleshoot issues with the jetson collector, run the go.d.plugin with the debug option enabled. The output
should give you clues as to why the collector isn't working.
-
Navigate to the
plugins.ddirectory, usually at/usr/libexec/netdata/plugins.d/. If that's not the case on your system, opennetdata.confand look for thepluginssetting under[directories].cd /usr/libexec/netdata/plugins.d/ -
Switch to the
netdatauser.sudo -u netdata -s -
Run the
go.d.pluginto debug the collector:./go.d.plugin -d -m jetsonTo debug a specific job:
./go.d.plugin -d -m jetson -j jobName
Getting Logs
If you're encountering problems with the jetson collector, follow these steps to retrieve logs and identify potential issues:
- Run the command specific to your system (systemd, non-systemd, or Docker container).
- Examine the output for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.
System with systemd
Use the following command to view logs generated since the last Netdata service restart:
journalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep jetson
System without systemd
Locate the collector log file, typically at /var/log/netdata/collector.log, and use grep to filter for collector's name:
grep jetson /var/log/netdata/collector.log
Note: This method shows logs from all restarts. Focus on the latest entries for troubleshooting current issues.
Docker Container
If your Netdata runs in a Docker container named "netdata" (replace if different), use this command:
docker logs netdata 2>&1 | grep jetson
Known Errors
tegrastats executable not found in PATH
Cause
No executable named tegrastats is in Netdata's PATH, and the privileged fixed-path candidate is missing or disabled. This is expected on Linux hosts that are not Jetson devices, and when Netdata runs in a container.
Fix
On a Jetson device, make tegrastats available as described in Prerequisites, then restart Netdata. On other hosts, ignore the message or set jetson: no in the modules section of go.d.conf.
start tegrastats: error
Cause
Netdata could not acquire or start its tegrastats producer.
Fix
Read the error text. Repair or reinstall Netdata if a packaged helper is missing or incompatible. For unsafe vendor executable errors, restore the native NVIDIA installation and its permissions; these failures do not trigger fallback.
restricted privileged tegrastats unavailable (error); selected unprivileged collection; GPU clocks and EMC readings may be missing
Cause
The initial privileged attempt could not start a producer, so the job selected unprivileged collection. GPU clocks and EMC readings may be missing.
Fix
Restore the packaged Netdata helper and native NVIDIA utility, then recreate the job or restart Netdata to retry privileged collection. Set allow_privileged: false if unprivileged collection is intentional.
previous acquisition still owns this job
Cause
An earlier producer for the same job has not completed verified cleanup. Replacement collection is blocked even when privileged execution is disabled.
Fix
Inspect the collector log and the earlier producer. Collection can resume after verified cleanup. Changing the job name bypasses the shared ownership check and can create a second producer; do not use a rename to work around this error.
tegrastats source unavailable: error
Cause
The running tegrastats exited or stopped printing readings. Netdata retries with a delay of up to 30 seconds; replacement remains blocked while earlier cleanup is incomplete.
Fix
Run the check in Prerequisites and compare its output with the error text. tegrastats exited: exit status N means the utility failed; tegrastats stopped producing records means it kept running without printing complete lines.
no fresh tegrastats sample
Cause
Netdata has not received a complete tegrastats line in the last three seconds, usually because tegrastats is starting, has stopped, or is being restarted.
Fix
If the error persists, look for tegrastats source unavailable messages in the collector log (see Diagnostics) and run the check in Prerequisites.
tegrastats sample contains no supported GPU, EMC, power or temperature readings
Cause
The latest tegrastats line has no valid GR3D_FREQ (GPU), EMC_FREQ (memory controller), supported power rail reading, or supported scalar temperature. Which readings tegrastats prints depends on the Jetson module, the Jetson Linux release, and the account that runs it.
Fix
Run the check in Prerequisites. If its output has no supported GPU, memory controller, power rail, or temperature readings, this collector has nothing to chart on this device.
Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.