17: Netdata - Real-time Performance Monitoring
Netdata is a powerful,distributed, real-time performance monitoring toolsolution thatbuilt showswith youC exactlyand what's happening on your server right now.Node.js. It displaysprovides beautifulsub-second graphsgranularity ofmetrics collection, zero-configuration operation, and comprehensive system monitoring including CPU, memory, disk, network, processes, and Docker containerscontainers. - updating every single second! Think of it as a real-time health dashboard for your entire server.
For advanced features, API documentation, advanced configuration, and customizationdevelopment options,guides, see the official Netdata documentation.
Why Netdata?
✅Real-time monitoring- See updates every second, not every minute✅Beautiful graphs- Colorful, easy-to-read charts for everything✅Zero configuration- Works immediately after installation✅Auto-discovery- Automatically finds and monitors all Docker containers✅Low resource usage- Uses only ~50MB of RAM✅Comprehensive metrics- CPU, RAM, disk, network, processes, and more✅Alert notifications- Get notified when something goes wrong✅Historical data- See trends over time
Prerequisites
- ✅ Docker
runninginstalled (fromChapter 3) - ✅ Docker Compose (Chapter 3)
- ✅ Optional: Traefik installed (
fromChapter 4) for HTTPSaccesswithaLet'sdomainEncrypt - ✅ Optional:
SubdomainDomain configured (fromChapter 4.5), e.g.,monitor.yourdomain.example.com - ✅ Optional: Apprise installed (
fromChapter 5) for alert notifications
Note:
Installation Netdata works great with Traefik and a domain name. Having a friendly URL like monitor.yourdomain.com makes it easy to access your monitoring dashboard.
Step 1: Startvia Infinity Tools
Menu Installation
📱 APPLICATIONS → Netdata → Install
CLI Installation
sudo infinity-toolsbash /opt/InfinityTools/Solutions/setup-netdata.sh --install
StepDeployment 2: Install NetdataModes
Traefik
GoMode to 📱 APPLICATIONS
Select Netdata
Choose Install Netdata
Using the Infinity Tools GUI(Default)
Uses
Use ↑/↓ to move, Enter to select, Esc to go back
LookTraefik for the turquoise cursor indicating the current selection
Each screen shows a short description at the top explaining what's needed
Step 2.1: Choose SSL Mode
termination
📱 APPLICATIONS → Netdata → Installsudo infinity-toolsbash /opt/InfinityTools/Solutions/setup-netdata.sh --installTraefik
Uses
You'lland seedomain two options. Here's what each means:routing:
Traefik (recommended)What it is:Uses your domain name with a trusted HTTPS certificate fromAutomatic Let's Encrypt certificate provisioningWhatDomain-basedyou need:A subdomain (e.g.,monitor.yourdomain.com) pointing to your server (see Chapter 4.5)What you get:Professional URL likeaccess:https://monitor.yourdomain.example.comwith trusted SSLPickSecuritythisheadersif:configured- Requires:
wantTraefiksecure,running,easyDNS A record configured
YouStandalone Mode
Direct access with
aHTTPdomainornameHTTPS (recommended)
What it is:Uses HTTP with direct port access (no SSL)What you need:Just a free port (default: 19999)What you get:URL likeHTTP:http://SERVER_IP:19999PickHTTPS:thishttps://SERVER_IP:19999if:(self-signedYou'recertjustviatestingnginxorproxy)- Default
usingport:it19999on(configurable) - No
localdomainnetworkrequired
Architecture
Container
- netdata - Main application (netdata/netdata:latest)
- netdata-ssl-proxy - Nginx SSL proxy (standalone HTTPS mode only)
Data Persistence
Simple rule of thumb:Config:Use/opt/speedbits/netdata-client/netdata/(configuration files)TraefikLib:if/opt/speedbits/netdata-client/netdata/lib/you(database,havemetrics)- Cache:
domain/opt/speedbits/netdata-client/netdata/cache/(temporary data) - SSL:
/opt/speedbits/netdata-client/ssl/(standalone mode certificates)
Host Access
Netdata requires access to host system for monitoring:
/proc- Process andwantsystemsecureinformationaccess.(read-only)/sysStandalone-HTTPSystemonlyinformation (read-only)/var/run/docker.sock- Docker API (read-only, fortestingcontainerormonitoring)/etc/passwd,use./etc/group- User information (read-only)/etc/os-release- OS information (read-only)
StepNetworks
- Traefik
Younetwork:ChooseJoins Traefik's proxy network (Traefik mode) - netdata-internal: Isolated bridge network (standalone mode)
- borgmatic-db: Network for Apprise integration (if enabled)
Installation Process
Configuration Steps
EnterSSLyourModesubdomain,Selection:e.g.,ChooseTraefik (default) or Standalonemonitor.yourdomain.comEnsureIftheTraefik:subdomain'sProvideDNSdomainA record points to your server (see Chapter 4.5)nameInfinityIfTools will configure HTTPS automatically via Let's Encrypt
After install:Standalone: Your Netdata will be available at https://monitor.yourdomain.com
Step 2.3: If You Choose Standalone
Pick aSpecify port (default: 19999) and SSL modeYou'llStreaming: Optional parent-child streaming configuration- Apprise Integration: Optional alert notification setup
What Gets Created
- Directory:
/opt/speedbits/netdata-client - Container:
netdata - Docker Compose:
/opt/speedbits/netdata-client/docker-compose.yml - Config Files: Health alerts, streaming config, Apprise integration
Access Methods
Traefik Mode
https://monitor.example.com
Direct web access Netdataafter viaDNS propagation and SSL certificate generation (30-60 seconds).
Standalone Mode
HTTP:
http://SERVER_IP:19999
HTTPS:
https://SERVER_IP:19999
Accept self-signed certificate warning (Advanced → Proceed).
Security Configuration
Access Security
- ✅ Traefik mode uses Let's Encrypt SSL (production-ready)
- ✅ Standalone HTTPS uses self-signed certificates (acceptable for internal use)
- ✅ Security headers configured (X-Frame-Options, CSP, etc.)
- ⚠️ NO default authentication - Dashboard is publicly accessible
StepContainer 2.4:Security
- Runs with
SYS_PTRACEandSYS_ADMINcapabilities (Optional)required for monitoring) - Security option:
apparmor:unconfined - Read-only mounts for host filesystem access
- Docker socket mounted read-only
Authentication
You'll⚠️ beCRITICAL: askedNetdata ifhas youNO wantusername/password protection by default!
- Traefik mode: Add Basic Auth via
websiteprotection.sh - Standalone mode: Keep on private network or use SSH tunnel
- VPN: Access via WireGuard VPN for secure remote access
- SSH Tunnel:
ssh -L 19999:localhost:19999 user@server
Metrics Collection
System Metrics
- CPU - Per-core usage, load averages, interrupts
- Memory - RAM, swap, buffers, cache
- Disk - I/O, space usage, per-filesystem metrics
- Network - Per-interface traffic, connections, errors
- Processes - Per-process CPU, memory, I/O
- System Load - Load averages, context switches
Docker Metrics
- Auto-discovery of all containers
- Per-container CPU, memory, disk, network
- Container health status
- Real-time metrics (1-second granularity)
Data Retention
- Configurable retention period
- Default: 1 hour of 1-second data
- Can extend for longer historical data
- Low storage footprint (~50MB RAM)
Alert Configuration
Default Alerts
Pre-configured alerts in health.d/:
- CPU Usage: Warning > 80%, Critical > 95%
- RAM Usage: Warning > 80%, Critical > 95%
- Disk Space: Warning > 80%, Critical > 90%
Apprise Integration
If Apprise is enabled:
- Alerts sent to
streamApprise via HTTP POST - Apprise forwards to configured channels
- Supports all Apprise notification providers
- Config file:
health_alarm_notify.conf
Custom Alerts
Create custom alerts in health.d/:
# Example: Custom alert
alarm: custom_metric
on: system.cpu
lookup: average -3m unaligned of user,system
units: %
every: 1m
warn: $this > 75
crit: $this > 90
delay: down 5m multiplier 1.5 max 1h
info: Custom CPU alert
to: sysadmin
Parent-Child Streaming
Configuration
Stream metrics to a Netdata Director (parent server):
YesConfigured- in
What it does:Sends all metrics to a central dashboardstream.confWhatRequiresyoudirectorneed:hostname/IPAandNetdataAPIDirector server already set upkeyWhatEnablesyou get:Centralizedcentralized monitoring of multiple serversPick this if:You have multiple servers and want oneLocal dashboardforremainsall
No (default)What it does:Standalone monitoring (this server only)Pick this if:You're just monitoring one server
available
StepUse 2.5: Apprise Notifications (Optional)Cases
If you have Apprise installed (Chapter 5), you can enable alert notifications:
YesMulti-server monitoring- Centralized dashboards
- Unified alerting
- Historical data aggregation
Environment Variables
Netdata Container
WhatNETDATA_CLAIM_TOKENit-does:OptionalSendsNetdataalertsCloudtoclaimApprise when CPU, RAM, or disk usage is hightokenWhatNETDATA_CLAIM_ROOMSyou-get:OptionalNotificationsNetdataviaCloudDiscord, Slack, Email, etc. (all Apprise services)roomsPickNETDATA_CLAIM_URLthis-if:NetdataYouCloudwantURLto(default:gethttps://app.netdata.cloud)DOCKER_HOSTwhen-somethingDockergoessocketwrongpath (default: /var/run/docker.sock)
Configuration
Main Configuration
Whatnetdata.confit-does:MainNoNetdata configurationstream.conf- Parent-child streaming configurationhealth_alarm_notify.conf- Alert notification configurationhealth.d/*.conf- Individual alertnotificationsPick this if:You just want to view metrics, no alerts
What Happens During InstallationCustomization
# NetdataEdit containermain isconfig
created nano Data directories are set up at /opt/speedbits/netdata-client client/netdata/netdata.conf
Optional# domain + Traefik HTTPS routing (if using Traefik)
Docker socket access configured (for container monitoring)
CustomEdit alerts
configured (CPU, RAM, disk)
Optional Apprise integration (if enabled)
Service starts and becomes accessible
Step 3: Access Netdata
If Using Traefik
Wait 30-60 seconds for SSL certificate generation
Open https://monitor.yourdomain.com in your browser
You'll see the Netdata dashboard immediately!
If Using Standalone
Open http://SERVER_IP:19999 in your browser
You'll see the Netdata dashboard immediately!
⚠️ IMPORTANT SECURITY NOTE: Netdata has NO username/password protection by default! Anyone who can access the URL can see your monitoring data. If using Traefik, strongly consider adding Basic Auth protection. If using standalone mode, keep it on a private network only!
Step 4: Understanding the Dashboard
When you first open Netdata, you'll see a beautiful dashboard with lots of graphs. Here's what everything means:
Main Sections
📊 System Overview - CPU, RAM, disk, network at a glance
🐳 Docker Containers - All your containers with individual metrics
💾 Disk I/O - How fast your disks are reading/writing
🌐 Network - Network traffic and connections
⚙️ System Load - How busy your server is
📈 Processes - Individual programs and their resource usage
Reading the Graphs
Green - Normal, healthy values
Yellow - Warning (getting high)
Red - Critical (too high!)
Time axis - Shows last hour by default (can zoom in/out)
Real-time - Updates every second automatically
Key Metrics to Watch
💻 CPU Usage - Should be under 80% most of the time
🧠 RAM Usage - Should be under 80% most of the time
💾 Disk Usage - Should be under 80% (watch for low disk space!)
🌐 Network Traffic - Shows incoming/outgoing data
🐳 Container Status - All containers should be running
Step 5: Docker Container Monitoring
One of Netdata's best features is automatic Docker container discovery and monitoring!
What You'll See
All your Docker containers listed automatically
Individual CPU, RAM, disk, and network usage for each container
Container health status
Real-time graphs for each container
How to Use It
Click on "Docker" in the left sidebar
You'll see all your containers listed
Click on any container to see its detailed metrics
Watch for containers using too much CPU or RAM
Step 6: Alert Notifications (If Enabled)
If you enabled Apprise notifications, Netdata will automatically send alerts when:
⚠️ CPU usage > 80% (warning) or > 95% (critical)
⚠️ RAM usage > 80% (warning) or > 95% (critical)
⚠️ Disk space > 80% (warning) or > 90% (critical)
How Alerts Work
Netdata detects a problem (e.g., CPU too high)
Sends alert to Apprise
Apprise forwards to your configured channels (Discord, Slack, Email, etc.)
You get notified immediately!
Customizing Alerts
You can customize alert thresholds by editing configuration files:
nano /opt/speedbits/netdata-client/netdata/health.d/cpu_usage.conf
# Edit streaming
nano /opt/speedbits/netdata-client/netdata/stream.conf
Change the warning/critical thresholds to your preferences.
Security Recommendations
✅ Use Traefik mode - Provides trusted SSL certificates
✅ Add Basic Auth - Protect dashboard with username/password (strongly recommended!)
✅ Private network only - If using standalone mode, don't expose to internet
✅ Use VPN - Access via WireGuard VPN (Chapter 18) for secure remote access
✅ SSH tunnel - Use SSH tunnel for secure access: ssh -L 19999:localhost:19999 user@server
⚠️ No default protection - Netdata has NO username/password by default - protect it!
Adding Basic Auth Protection
If using Traefik, you can add username/password protection:
Run: sudo bash Infrastructure/websiteprotection.sh
Select "netdata"
Enter username and password
Now your dashboard is protected!
Troubleshooting
Can'tContainer AccessNot NetdataStarting
Traefik mode: Wait 30-60 seconds after installation for SSL certificate generation
Check containers: Run docker logs netdata
docker ps -a | grep netdata to see if container is running
Check logs: Run docker logs netdata to see error messages
NoMissing Docker Containers ShowingMetrics
MakeVerifysurehostDocker is running:mounts:dockerpsexec netdata ls /host/proc- Check
thatDockersocket is accessible:socket:docker exec netdata ls /var/run/docker.sock - Verify container capabilities
Docker Containers Not Showing
- Verify Docker socket access
- Check Docker daemon is running
- Restart
Netdata:Netdatacontainerdocker restart netdata
Alerts Not Working
Check thatVerify Apprise isrunning:runningdockerandps | grep appriseVerify Apprise network connectivityaccessible- Check
Netdatahealth_alarm_notify.conflogs:configurationdocker logs netdata - Test alert thresholds
- Check
aNetdatatestlogsalert)for errors
HighProduction Considerations
- Access Method: Use Traefik mode for production (trusted SSL)
- Authentication: Add Basic Auth protection (critical!)
- Network Security: Restrict access via firewall or VPN
- Resource
UsageUsage: ~50MB RAM, minimal CPU impact
- Data Retention: Configure appropriate retention period
- Alerting: Configure multiple notification channels for redundancy
- Streaming: Use director for multi-server environments
Integration with Infinity Tools
Netdata complements Infinity Tools by providing:
- Real-time monitoring of all Infinity Tools applications
- Docker container monitoring for infrastructure
- System resource monitoring
- Alert integration with Apprise
Recommended Monitoring:
- All Infinity Tools application containers
- System resources (CPU, RAM, disk)
- Network traffic
- Docker daemon health
API & Automation
REST API
- Netdata
usesprovides~50MBRESTRAMAPI(veryforlow!)metrics access IfAPIseeingdocumentationhighavailableCPU,incheckwebhow many containers you're monitoringinterfaceConsiderUsefulreducingfordataautomationretentionandperiodintegration
Wheremetrics to Findexternal Netdata After Install
On the finish screen, Infinity Tools prints the access URLYou can also see it in📊 STATUS & HEALTH → STATUSCheck the installation directory:/opt/speedbits/netdata-clientConfiguration files:/opt/speedbits/netdata-client/netdata/
Useful Features
Historical Data
Netdata stores historical data so you can see trends over time:
Zoom in/out on graphs to see different time periodsCompare current vs. past performanceIdentify patterns and trendssystems
Exporting Data
You
- Export graphs
andasdata:Click on any graph to see export optionsimages- Export metrics as
image (PNG)JSON/CSV Share graphsIntegrate withothersexternal
Custom DashboardsNetdata allows you to create custom dashboards:Focus on specific metricsCreate views for different purposesSave favorite viewssystems
You'reNextReady!StepsNetdata is now
installedoperational.andUsemonitoringityour server in real-time! Remember:to:🔐MonitorProtectallyourInfinitydashboardToolswith Basic Auth (strongly recommended!)applications📊 Check the dashboard regularly to understand your server's health🔔 Set up alerts to get notified of problems🐳 UseTrack Dockermonitoring to trackcontainer health📈MonitorUsesystemhistoricalresourcesdataintoreal-time- Set up alert notifications
- Analyze performance trends
and plan capacity
identifyNextForsteps:advancedExplorefeatures, API usage, custom collectors, and development guides, refer to thedashboard, check your Docker containers, set up alerts, and useofficial Netdatato keep your server running smoothly!documentation.