# 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
```