Files
HomeAudit/playbooks/README-netdata.md
2025-08-24 11:13:39 -04:00

2.5 KiB

Netdata Parent-Child Configuration

Architecture Overview

This playbook configures a centralized monitoring setup using Netdata's parent-child streaming:

  • Parent Node: Fedora workstation (192.168.1.243) - Stores all metrics, provides dashboard
  • Child Nodes: All other hosts - Stream metrics to parent, minimal local storage

Current Installation Status

Based on the latest check:

Already Running

  • lenovo420 - Fedora workstation (1.7GB memory usage)
  • omv800 - OpenMediaVault server (561MB memory usage)
  • lenovo - Lenovo laptop (438MB memory usage)

Need Installation

  • surface - Surface tablet
  • fedora - Target parent node
  • omvbackup - Backup server

⚠️ Unreachable

  • audrey - Connection timeout (may be offline)

Resource Usage Benefits

Before (current standalone instances):

  • Total memory: ~2.7GB across 3 nodes
  • Each node stores full retention
  • Duplicated web interfaces

After (parent-child setup):

  • Parent: ~512MB (centralized storage + web UI)
  • Children: ~32MB each (streaming only)
  • Total memory: ~640MB (76% reduction)

Running the Playbook

# Configure all nodes
ansible-playbook -i inventory.ini playbooks/netdata-parent-child.yml

# Configure only specific hosts
ansible-playbook -i inventory.ini playbooks/netdata-parent-child.yml --limit fedora,surface

# Test connectivity after setup
ansible-playbook -i inventory.ini playbooks/netdata-parent-child.yml --tags verify

Configuration Details

Parent Node (fedora)

  • Binds to *:19999 (accessible from network)
  • 2GB disk space for metrics storage
  • Receives streams from all children
  • Provides centralized dashboard

Child Nodes (all others)

  • Memory mode: none (no local storage)
  • Binds to localhost:19999 only
  • Streams all metrics to parent
  • Minimal resource footprint

Accessing the Dashboard

After configuration:

Security Features

  • API key authentication for streaming
  • Network restrictions (home + Tailscale networks only)
  • Local-only access on child nodes
  • Firewall rules automatically configured

Troubleshooting

Check stream status on parent:

curl http://192.168.1.243:19999/api/v1/info | jq '.hosts'

Check streaming on child:

systemctl status netdata
journalctl -u netdata -f

Verify connectivity:

# From child node
curl -I http://192.168.1.243:19999/api/v1/info