# 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 ```bash # 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: - **Central Dashboard**: http://192.168.1.243:19999 - **Individual Node Access**: http://node-ip:19999 (localhost only on children) ## 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: ```bash curl http://192.168.1.243:19999/api/v1/info | jq '.hosts' ``` ### Check streaming on child: ```bash systemctl status netdata journalctl -u netdata -f ``` ### Verify connectivity: ```bash # From child node curl -I http://192.168.1.243:19999/api/v1/info ```