18: Installing Netdata Director - Multi-Server Monitoring Hub
Netdata Director is a parent-child streaming architecture that enables centralized monitoring dashboard that lets you monitorof multiple serversservers. The Director (parent) receives metrics streams from onechild place.nodes, Insteadproviding of opening separate dashboards for each server, you get onea unified viewdashboard, showingcentralized all your servers' metrics, alerts,alerting, and performancelong-term data.historical Thinkdata of it as a command centerretention for all yourmonitored infrastructure!infrastructure.
⚠️ IMPORTANT:LICENSE REQUIREMENT: Netdata Director is a Pro+ feature that requiresrequiring a license. ForCommunity Netdata provides single-server monitoring,monitoring use regular Netdata (Chapter 17) which is free.only.
For advanced features, API documentation, and customizationstreaming options,configuration, see the official Netdata documentation.
Why Netdata Director?
✅One dashboard for all servers- Monitor everything from one place✅Unified view- See all your servers' metrics together✅Centralized alerts- Get notifications from all servers in one place✅Historical data- Long-term storage for all monitored servers✅Node comparison- Compare performance across servers✅Easy management- Add or remove servers easily✅Scalable- Monitor unlimited servers
Director vs Regular Netdata
Regular Netdata (Free)
✅ Monitor individual servers separately✅ Each server has its own dashboard✅ Free and open source❌ Must open multiple dashboards for multiple servers❌ No unified view
Netdata Director (Pro+)
✅ Monitor ALL servers from one dashboard✅ Unified monitoring interface✅ Centralized alerts and management✅ Historical data for all servers⚠️ Requires Pro+ license
Prerequisites
- ✅ Pro+ License -
NetdataRequired for Directorrequires a Pro+ licensefunctionality - ✅ Docker
runninginstalled (fromChapter 3) - ✅ Docker Compose (Chapter 3)
- ✅ Optional: Traefik installed (
fromChapter 4) for HTTPSaccesswithaLet'sdomainEncrypt - ✅ Optional:
SubdomainDomain configured (fromChapter 4.5), e.g.,monitoring.yourdomain.example.com - ✅ Optional: Apprise installed (
fromChapter 5) for alert notifications - ✅ Multiple servers - Director is
mostdesigneduseful when monitoringfor 2+serversserver environments
Note:
Installation via Infinity Tools
Menu Installation
📱 APPLICATIONS → Netdata Director works→ bestInstall
CLI TraefikInstallation
sudo abash domain/opt/InfinityTools/Solutions/setup-netdata-director.sh name. Having a friendly URL like monitoring.yourdomain.com--install makes it easy to access your centralized dashboard.
How It WorksArchitecture
Netdata
Parent-Child Director uses a parent-child architecture:
Director (Parent)Streaming
TheDirector central(Parent): Central dashboard server receiving streams
Receives metrics from all child nodes
Displays unified view of all servers
Manages alerts for all servers
Child Nodes
Nodes:
- Regular Netdata installations
on each server
Stream metricsstreaming to the Director
CanStream stillAPI haveKey: theirAuthentication owntoken dashboardsfor (optional)child-to-parent connection
AutomaticallyUnidirectional: appearMetrics inflow Directorchild dashboard→ parent only
Step 1: Verify Pro+ License
Before installing, make sure you have a Pro+ license. The installation script will check for this automatically.
If you don't have a Pro+ license:
Visit:https://speedbits.io/infinity-tools/Email: sales@speedbits.ioSupport: support@speedbits.io
Step 2: Start Infinity Tools
sudo infinity-toolsStep 3: Install Netdata Director
Go to📱 APPLICATIONSSelectNetdata DirectorChooseInstall Netdata Director
Using the Infinity Tools GUIContainer
Use↑/↓netdata-directorto-move,DirectorEnterinstanceto select,Escto go back(netdata/netdata:latest)Look for theturquoise cursornetdata-director-ssl-proxyindicating-theNginxcurrentSSLselectionproxy Each(standalonescreenHTTPSshowsmodea short description at the top explaining what's neededonly)
StepData 3.1: Choose SSL ModePersistence
You'll see two options. Here's what each means:
Traefik (recommended)Config:What it is:Uses your domain name with a trusted HTTPS certificate from Let's EncryptWhat you need:A subdomain (e.g.,monitoring.yourdomain.com) pointing to your server (see Chapter 4.5)What you get:Professional URL likehttps://monitoring.yourdomain.comwith trusted SSLPick this if:You want secure, easy access with a domain name (recommended)
Standalone HTTPWhat it is:Uses HTTP with direct port access (no SSL)What you need:Just a free port (default: 19999)What you get:URL likehttp://SERVER_IP:19999opt/speedbits/netdata-director/netdata/Pick this if:Lib:You're/opt/speedbits/netdata-director/netdata/lib/just(metricstesting or only using it on your local networkdatabase)
Step 3.2: If You Choose Traefik
Enter your subdomain, e.g.,Cache:monitoring.yourdomain.com/opt/speedbits/netdata-director/netdata/cache/Ensure the subdomain's DNS A record points to your server (see Chapter 4.5)Infinity Tools will configure HTTPS automatically via Let's Encrypt
After install: Your Netdata Director will be available at https://monitoring.yourdomain.com
Step 3.3: Apprise Notifications (Optional)
If you have Apprise installed (Chapter 5), you can enable centralized alert notifications:
YesWhat it does:Sends alerts from ALL monitored servers to AppriseWhat you get:One notification channel for all serversPick this if:You want centralized alerting
NoWhat it does:No alert notificationsPick this if:You just want monitoring, no alerts
Step 3.4: Save Your Stream API Key
⚠️ CRITICAL:Key: During installation, a Stream API Key will be generated. This key is used to connect child nodes to the Director.
Write down the API key immediately!Save it in a password manager (like Vaultwarden)You'll need this key when configuring child nodesThe key is also saved in:/opt/speedbits/netdata-director/stream-api-key.txt
Deployment Modes
WhatTraefik HappensMode During(Default)
Uses Traefik for SSL termination and domain routing:
- Automatic Let's Encrypt certificate provisioning
- Domain-based access:
https://monitoring.example.com - Security headers configured
- Requires: Traefik running, DNS A record configured
Standalone Mode
Direct access with HTTP or HTTPS (self-signed):
- HTTP:
http://SERVER_IP:19999 - HTTPS:
https://SERVER_IP:19999(self-signed cert via nginx proxy) - Default port: 19999 (configurable)
Stream API Key
Generation
Netdata32-characterDirectorrandomcontainerkeyisgeneratedcreatedduring installationDataSaveddirectoriesinarestream-api-key.txt- Used
upforatchild node authentication - Must be kept secret
Usage
Child nodes use this key to authenticate when streaming metrics:
- Configured in child node's
stream.conf - Director validates key before accepting streams
- Multiple children can use same key (or separate keys per child)
Streaming Configuration
Director Configuration
File: /opt/speedbits/netdata-directordirector/netdata/stream.conf
[stream]
enabled = no # Director doesn't stream to anyone
[$STREAM_API_KEY]
enabled = yes
default memory mode = dbengine
health enabled by default = auto
default postpone alarms on connect seconds = 60
default history = 3600
allow from = *
Child Node Configuration
Configured during child node installation:
- Director hostname/IP
- Director port (default: 19999)
- Stream API key
is generated and saved Optional domain + Traefik HTTPS routing (if using Traefik)Optional Apprise integration (if enabled)Service starts and becomes accessible
Step 4: Access Netdata DirectorMethods
IfTraefik Using TraefikMode
WaitDirect
30-60websecondsaccessforafter DNS propagation and SSL certificate generationOpen(30-60https://monitoring.yourdomain.comin your browserYou'll see the Director dashboard!
https://monitoring.example.com
IfStandalone Using StandaloneMode
Openhttp://SERVER_IP:19999in your browserYou'll see the Director dashboard!
HTTP:
⚠️ IMPORTANT SECURITY NOTE:HTTPS: Netdata Director has NO username/password protection by default! However, you CANNOT use Basic Auth because it blocks child nodes from streaming data. Instead, use firewall rules, VPN access, or Netdata Cloud for security.
Step 5: Connect Child Nodes
Now that Director is running, you need to connect your other servers (child nodes) to it.
On Each Server You Want to Monitor
SSH into the serverRun:sudo infinity-toolshttps://SERVER_IP:19999Go to📱 APPLICATIONS→Netdata→InstallWhen asked about streaming, chooseYesEnter Director details:Director hostname/IP:The Director server's IP or domainDirector port:19999 (or your custom port)Stream API key:The key you saved during Director installation
Complete the installation
What Happens Next
Child node starts streaming metrics to DirectorWait 1-2 minutes for connection to establishChild node appears in Director dashboard dropdownYou can now switch between servers in the Director dashboard!
Step 6: Using the Director Dashboard
Switching Between Servers
Open the Director dashboardLook for a dropdown menu (usually top-left or top-right)Select a server from the dropdownDashboard updates to show that server's metrics
What You'll See
📊Unified view- All servers listed in dropdown📈Real-time metrics- Same as regular Netdata, but for all servers🔔Centralized alerts- Alerts from all servers📉Historical data- Long-term storage for all servers🔍Node comparison- Compare metrics across servers
Security RecommendationsConfiguration
Access Security
- ✅
UseTraefik mode-usesProvidesLet'strustedEncrypt SSL (production-ready) - ✅ Standalone HTTPS uses self-signed certificates
- ✅ Security headers configured
- ⚠️ NO default authentication - Dashboard is publicly accessible
- ⚠️ Basic Auth incompatible - Blocks child node streaming
Authentication Limitations
⚠️ CRITICAL: Basic Auth cannot be used with Director because:
- Child nodes use HTTP API to stream metrics
- Basic Auth blocks unauthenticated API requests
- Child nodes cannot authenticate via Basic Auth
- Result: Child nodes cannot connect
Security Alternatives
- Firewall
protectionRules:-Restrict access to trusted IPs only ✅VPNaccessAccess:-AccessUseDirector via WireGuard VPN(Chapter 18) for secure remote access✅Netdata Cloud: Use official Netdata Cloud service- Network Isolation: Keep Director on private network
Stream API Key Security
- API key provides authentication for child nodes
- Keep key secret
- Only(only share with trustedserversservers) ⚠️DirectorNOvalidatesBasickeyAuthbefore-acceptingCannotstreams- Can use
BasicseparateAuthkeys(blocksper childnodes)node ⚠️Protect Director- Director shows ALL server metrics - protect it!(advanced)
Alert Configuration
SecurityApprise OptionsIntegration
SinceIf BasicApprise Authis doesn'tenabled, workDirector withsends Director,alerts usefor theseALL alternatives:child nodes:
OptionCentralized1: Firewall (Best)Use UFW to allow only trusted IPsExample:ufw allow from CHILD_NODE_IP to any port 443
Option 2: VPN/WireGuardAccess Director only through WireGuard VPNKeep Director on internal network
Option 3: Netdata CloudUse Netdata's official cloud serviceIncludes authentication and teamalert managementVisit:Alertshttps://app.netdata.cloudinclude server hostname
- Single notification
Troubleshooting
Can't Access Director
Traefik mode:Wait 30-60 seconds after installationchannel forSSLallcertificate generationserversCheckConfigcontainers:Runfile:docker ps | grep netdata-directorto see if container is runningCheck logs:Rundocker logs netdata-directorto see error messages
Child Nodes Not Appearing
Wait 1-2 minutes after connecting (connection takes time)Verify API key is correct on child nodeCheck network connectivity between child and DirectorCheck Director logs:docker logs netdata-directorVerify child node is streaming: Check child node logs
Lost API Key
View saved key:cat /opt/speedbits/netdata-director/stream-api-key.txtOr check Director configuration:cat /opt/speedbits/netdata-director/netdata/stream.health_alarm_notify.conf
WhereAlert Flow
- Child node detects issue
- Alert sent to
Find Netdata Director After Install
On the finish screen, Infinity Tools prints the access URLYouDirectorcanforwardsalsotosee it in📊 STATUS & HEALTH → STATUSAppriseCheckApprisethesendsinstallationtodirectory:configuredchannels/opt/speedbits/netdata-directorAPI key saved in:/opt/speedbits/netdata-director/stream-api-key.txtConfiguration files:/opt/speedbits/netdata-director/netdata/
UsefulData FeaturesRetention
DataRetention RetentionPeriods
Director stores historical data for all servers:
- High-resolution: 1 hour (1-second granularity)
- Mid-resolution: 1 day (1-minute granularity)
- Low-resolution: 30 days (15-minute granularity)
Centralized AlertsStorage
If Apprise is enabled, you'll get alerts from all servers:
AlertsMetricsincludestoredserverinhostnamedbenginemodeOneConfigurablenotificationretentionchannelinfor all serversnetdata.confEasierStoragetoscalesmanagewiththannumberindividualofalertschild nodes
You'reChild Ready!Node Connection
Connection Process
- Install Netdata on child server (Chapter 17)
- Enable streaming during installation
- Provide Director hostname/IP
- Provide Director port (default: 19999)
- Provide Stream API key
- Child node connects automatically
Connection Verification
- Wait 1-2 minutes for connection to establish
- Check Director dashboard dropdown for child node
- Verify metrics appearing in Director
- Check Director logs:
docker logs netdata-director
Troubleshooting
Child Nodes Not Connecting
- Verify API key is correct
- Check network connectivity (firewall rules)
- Verify Director port is accessible
- Check child node logs for connection errors
- Check Director logs:
docker logs netdata-director
Streaming Issues
- Verify
stream.confconfiguration - Check API key matches between child and parent
- Verify Director is
nowacceptinginstalledconnections - Check
readynetworktoconnectivity
Production servers! Remember:Considerations
🔐AccessProtectMethod:yourUseDirectorTraefikwithmode for production (trusted SSL)- Security: Implement firewall rules or VPN access (cannot use Basic Auth)
🔑Network:KeepEnsureyourDirectorStreamis accessible from all child nodes- Storage: Plan storage capacity based on number of child nodes
- API Key Management: Use separate keys per child for enhanced security
- Monitoring: Monitor Director itself (resource usage, connectivity)
Advanced Configuration
Multiple API keyKeys
Create separate API keys for different child nodes:
# In stream.conf, add multiple sections:
[api-key-1]
enabled = yes
allow from = 192.168.1.10
[api-key-2]
enabled = yes
allow from = 192.168.1.20
IP Restrictions
Restrict which IPs can connect:
[$STREAM_API_KEY]
enabled = yes
allow from = 192.168.1.0/24 # Only allow from this subnet
Integration with Infinity Tools
Netdata Director complements Infinity Tools by providing:
- Centralized monitoring of all Infinity Tools servers
📊Unified alerting for entire infrastructure- Historical data retention for capacity planning
- Cross-server performance comparison
Next Steps
Netdata Director is now operational. Use it to:
- Connect child nodes
tofromstartallmonitoringyour servers 🔔Monitor entire infrastructure from one dashboard- Set up centralized
alertsalerting - Analyze
allperformance trends across servers 📈PlanUsecapacitythebasedunifiedondashboardhistoricalto monitor everythingdata
NextFor steps:advanced Connectfeatures, yourstreaming firstconfiguration, childAPI node,usage, verifyand itdevelopment appearsguides, inrefer to the dashboard,official andNetdata start monitoring all your servers from one place!documentation.