docs/nodes-ephemerality.md
Netdata categorizes nodes as ephemeral or permanent to help you tailor alerting, cleanup, and monitoring strategies for dynamic or static infrastructures.
| Type | Description | Common Use Cases |
|---|---|---|
| Ephemeral | Expected to disconnect or reconnect frequently | • Auto-scaling cloud instances |
| • Dynamic containers and VMs | ||
| • IoT devices with intermittent connectivity | ||
| • Test environments | ||
| Permanent | Expected to maintain continuous connectivity | • Production servers |
| • Core infrastructure nodes | ||
| • Critical monitoring systems | ||
| • Stable database servers |
:::note
Disconnections in permanent nodes may indicate system failures and require immediate attention.
:::
By default, Netdata treats all nodes as permanent. To mark a node as ephemeral:
netdata.conf file on the target node.[global]
is ephemeral node = yes
Once restarted, Netdata automatically applies the _is_ephemeral host label to the node. This label propagates to your Parent nodes and appears in Netdata Cloud, allowing the system to identify and handle the node as ephemeral.
Netdata v2.3.0 introduces two alerts specific to permanent nodes:
| Alert | Trigger Condition |
|---|---|
streaming_never_connected | A permanent node has never connected to a Parent. |
streaming_disconnected | A previously connected permanent node has disconnected. |
:::important
Both alerts are configured with to: silent by default. They trigger and appear on the Parent dashboard but do not send notifications unless you explicitly enable them. They also apply only to permanent nodes — ephemeral nodes are excluded.
:::
Override each alert to send notifications. Choose one method:
Via Netdata Cloud (recommended): Use the Alerts Configuration Manager to edit streaming_disconnected and streaming_never_connected on the Parent node. The UI creates a dynamic configuration that takes precedence over the stock template. See Alert Configuration Ordering for details. Repeat for both alerts.
Via config file: On the Parent node, create or edit /etc/netdata/health.d/streaming.conf. An override must be a complete alert definition (see Overriding Stock Alerts); change to: silent to a role. sysadmin is the convention used by the stock alerts; any string is accepted:
template: streaming_disconnected
on: netdata.streaming_inbound
class: Availability
type: Streaming
component: Streaming
chart labels: type=permanent
calc: ${stale disconnected}
units: nodes
every: 10s
warn: $netdata.uptime.uptime > 30 * 60 AND $this > 0
delay: up 5m down 5m multiplier 1.5 max 30m
summary: Permanent streaming nodes disconnected
info: Permanent child nodes disconnected from this parent. \
If nodes are expected to disconnect, mark them as ephemeral, by editing their netdata.conf \
and setting: [global].is ephemeral node = yes
to: sysadmin
Repeat for streaming_never_connected — note that template, calc, summary, and info all differ:
template: streaming_never_connected
on: netdata.streaming_inbound
class: Availability
type: Streaming
component: Streaming
chart labels: type=permanent
calc: ${stale archived}
units: nodes
every: 10s
warn: $netdata.uptime.uptime > 30 * 60 AND $this > 0
delay: up 5m down 5m multiplier 1.5 max 30m
summary: Permanent streaming nodes never connected
info: Permanent child nodes never connected to this parent. \
If these nodes should actually be ephemeral, run: \
netdatacli mark-stale-nodes-ephemeral ALL_NODES
to: sysadmin
After saving the file, reload health on the Parent:
sudo netdatacli reload-health
Make sure the role you choose has recipients wired up in your notification method(s) — see Centralized Cloud Notifications for Cloud setup.
Enable Cloud notifications. An administrator must enable Alert notifications for the Space. Without this step, Netdata Cloud will not forward any alert notifications.
See also: Centralized Cloud Notifications for notification setup, and Node States and Transitions for troubleshooting node offline states.
Netdata Cloud automatically removes inactive nodes to keep your dashboards clean and organized.
| Node Type | Offline Duration | Description |
|---|---|---|
| Child nodes | 48 hours | Nodes that connect through a Parent node. Deleted when: |
| • The child node goes offline, OR | ||
| • The Parent node goes offline | ||
| Directly connected nodes | 7 days | Nodes claimed directly to Netdata Cloud without going through a Parent. |
| Ephemeral nodes | Custom | Temporary nodes (containers, auto-scaling VMs) with configurable cleanup periods. See configuration below. |
| Unseen nodes | 48 hours | Nodes that were claimed but have never connected to Netdata Cloud. |
:::tip
Stale nodes are NOT automatically deleted. Only Offline and Unseen nodes are subject to automatic cleanup. A Stale node has historical data available via a Parent, so it's preserved until the Parent goes offline or the data expires.
:::
:::info Important
If a child node is deleted and later reconnects, it's automatically recreated in Netdata Cloud. Any historical data retained on the Parent node remains accessible.
:::
To mark nodes (including virtual ones) as ephemeral:
netdatacli mark-stale-nodes-ephemeral <node_id | machine_guid | hostname | ALL_NODES>
This keeps historical data queryable and clears active alerts.
flowchart TD
A("**Offline Node Detected**") -->|Run CLI Command| B("**Use netdatacli mark-stale-nodes-ephemeral**")
B --> C("**Node Marked as Ephemeral**")
C --> D("**Metrics Remain Available**")
C --> E("**Active Alerts Cleared**")
C --> F{"**Node Reconnects?**"}
F -->|Yes - no config| G("**Reverts to Permanent**")
F -->|No| H("**Remains Ephemeral**")
classDef step fill: #4caf50, stroke: #000000, stroke-width: 3px, color: #000000, font-size: 16px
classDef alert fill: #ffeb3b, stroke: #000000, stroke-width: 3px, color: #000000, font-size: 16px
class A step
class B step
class C step
class D step
class E step
class F alert
class G alert
class H alert
To fully remove permanently offline nodes:
netdatacli remove-stale-node <node_id | machine_guid | hostname | ALL_NODES>
:::note
For detailed instructions on removing nodes from Netdata Cloud (including offline and stale nodes, bulk operations, and UI-based removal), see the Remove Node Guide. This covers scenarios where UI removal is disabled due to parent-child configured relationships.
:::
flowchart TD
A("**Offline Node Detected**") -->|Run CLI Tool| B("**Execute remove-stale-node Command**")
B --> C("**Node Removed from System**")
C --> D("**Node No Longer Queryable**")
C --> E("**Alerts for Node Cleared**")
classDef step fill: #4caf50, stroke: #000000, stroke-width: 3px, color: #000000, font-size: 16px
class A step
class B step
class C step
class D step
class E step
To enable automatic cleanup of ephemeral nodes:
Open the netdata.conf file on Netdata Parent nodes.
Add the following configuration:
[db]
cleanup ephemeral hosts after = 1d
Restart the Netdata Agent.
This removes ephemeral nodes after 24 hours of disconnection. Once all Parents purge the node, it is automatically removed from Netdata Cloud.
flowchart TD
A("**Configure Auto-Removal in netdata.conf**") --> B("**Restart Parent Nodes**")
B --> C("**Ephemeral Node Disconnects**")
C --> D{"**Wait Period Elapsed?**"}
D -->|Yes| E("**Node Automatically Removed**")
D -->|No| F("**Node Remains in System**")
E --> G{"**All Parents Removed Node?**"}
G -->|Yes| H("**Node Removed from Cloud**")
classDef step fill: #4caf50, stroke: #000000, stroke-width: 3px, color: #000000, font-size: 16px
classDef alert fill: #ffeb3b, stroke: #000000, stroke-width: 3px, color: #000000, font-size: 16px
classDef database fill: #2196F3, stroke: #000000, stroke-width: 3px, color: #000000, font-size: 16px
class A step
class B step
class C step
class D alert
class E alert
class F alert
class G database
class H database