• Indonesian
  • English
  • Install Netdata on Linux Server for Real-Time Monitoring —

    Kecepatan:

    Introduction

    A few years ago, a client asked me to monitor their server — but not with Zabbix or Nagios which have complicated setups. They wanted something where you “can just see the dashboard without all kinds of configuration.” I was stumped for a moment, because most monitoring tools require setting up agents, servers, and dashboards separately. But it turns out theres one tool that can be installed with a single command and immediately displays a real-time dashboard: Netdata.

    I remember the first time I installed Netdata — it took less than 5 minutes from start to having the dashboard accessible. No database setup, no agent configuration, no alert rules to write. Just one command, and Netdata immediately starts collecting metric data from all services on the server and displaying it on an incredibly informative dashboard. What impressed me most was that Netdata also automatically detected Apache, MySQL, PHP-FPM, Nginx, and other services without any additional configuration.

    In this article Ill show you how to install Netdata on a Linux server using the kickstart script, step by step. Ill also explain what Netdata does on your server and how to access its dashboard.

    What Is Netdata?

    Netdata is an open-source real-time monitoring tool for servers and applications. Unlike other monitoring tools that tend to be complex, Netdata is designed for quick setup and immediately informative dashboards.

    Key Features of Netdata

    • Real-time monitoring — data updates every second, not every minute or hour. You can see CPU, RAM, disk I/O, and network changes in real time.
    • Web dashboard — all data is displayed on a web-based dashboard accessible from a browser. No additional client installation needed.
    • Auto-detection — Netdata automatically detects running services on the server (Apache, Nginx, MySQL, PHP-FPM, Docker, etc.) and starts monitoring them without configuration.
    • Zero-configuration — no database setup, no agent configuration, no alert rules to create. Everything works right from installation.
    • Lightweight — Netdata uses very little resource (CPU < 1%, RAM < 50MB). It wont affect server performance.
    • Clean uninstallation — if you no longer need it, Netdata can be completely removed without leaving traces.

    What Does It Monitor?

    By default, Netdata monitors:

    • CPU — per-core usage, temperature, frequency
    • RAM — used, cached, buffers, swap
    • Disk — I/O per device, latency, throughput
    • Network — bandwidth per interface, packets, errors
    • Processes — top processes by CPU/RAM, thread count
    • System services — Apache, Nginx, MySQL, PostgreSQL, PHP-FPM, Redis, Docker, and many more
    • Application metrics — PHP, Python, Node.js, and other applications

    Preparation Before Installing

    ⚠️ WARNING: Check Server Resources

    Although Netdata is lightweight, make sure your server meets the minimum requirements:

    # Check available RAM
    free -h
    
    # Check available disk space
    df -h / | tail -1
    
    # Check OS version
    cat /etc/os-release | head -3

    Netdata requires a minimum of:

    • RAM: 256MB free (more is better)
    • Disk: 1GB free for installation and metric data
    • OS: Linux (Debian, Ubuntu, CentOS, RHEL, CloudLinux, AlmaLinux, Rocky Linux)

    Check Internet Access

    Installing Netdata requires internet access to download the kickstart script and packages:

    # Check internet connectivity
    ping -c 3 get.netdata.cloud

    How to Install Netdata

    Netdata Install Command

    Heres the complete command to install Netdata on a Linux server:

    wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh

    This command uses wget to download the kickstart script from Netdata, then runs it. The kickstart script will detect your OS, install all required dependencies, and install Netdata automatically.

    Command Part Breakdown

    1. wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh — Download the kickstart script from https://get.netdata.cloud/kickstart.sh and save it as /tmp/netdata-kickstart.sh. wget is a command-line downloader. The -O flag specifies the output filename.

    2. sh /tmp/netdata-kickstart.sh — Run the kickstart script using sh. This script will: detect your OS, install dependencies (build tools, libraries), download and install Netdata, configure Netdata automatically, and start the Netdata service.

    What Does the Kickstart Script Do?

    The Netdata kickstart script performs several automated steps:

    1. Detect OS — the script detects which Linux distro youre using (Debian, Ubuntu, CentOS, etc.)
    2. Install dependencies — install required packages (build-essential, zlib, json-c, yaml, etc.)
    3. Download Netdata — download Netdata source code or binary from the official repository
    4. Build & Install — compile (if from source) or install binary to /opt/netdata
    5. Configure — create default configuration files, set up systemd service, configure log rotation
    6. Start service — start Netdata service and enable it to automatically start on server reboot

    Example Install Output

    % Total    % Received % Xferd  Average Speed   Time    Time     Time Current
                                      Dload  Upload   Total   Spent    Left  Speed
    100  135k  100  135k    0     0   123k      0  0:00:01  0:00:01 --:--:--   126k
    
     --- Using git to update code ---
     --- Running installer ---
    /usr/bin/env: shr: No such file or directory
    
     --- Installer failed ---
     --- Attempting a different installation method ---
    
     --- Checking for cgroups ---
     --- Checking for systemd ---
     --- Checking for docker ---
     --- Installing required packages ---
     --- Installing Netdata ---
     --- Successfully installed Netdata! ---
    
    Access the Netdata dashboard at: http://localhost:19999
    View the logs: tail -f /var/log/netdata/error.log
    Uninstall: /opt/netdata/bin/netdata-uninstaller.sh

    Note that the installation succeeded and Netdata is running on port 19999. You can access the dashboard via http://localhost:19999 or http://SERVER_IP:19999.

    Verification After Installation

    Command #1: Check Netdata Service

    # Check Netdata service status
    systemctl status netdata
    
    # Check if Netdata is running
    ps aux | grep netdata | grep -v grep

    Example Output

    ● netdata.service - Real time performance monitoring
         Loaded: loaded (/etc/systemd/system/netdata.service; enabled; vendor preset: disabled)
         Active: active (running) since Mon 2024-02-14 10:23:11 UTC; 2min ago
       Main PID: 12345 (netdata)
          Tasks: 145 (limit: 4915)
         Memory: 42.3M
            CPU: 1.242s
         CGroup: /system.slice/netdata.service
                 ├─12345 /opt/netdata/bin/netdata -D
                 ├─12346 /opt/netdata/bin/netdata --pid-file /run/netdata/netdata.pid
                 ...

    Note that the Netdata service shows active (running) and is already enabled (auto-starts on reboot).

    Command #2: Check Netdata Port

    # Check if port 19999 is open
    ss -tlnp | grep 19999
    # or
    netstat -tlnp | grep 19999

    Example Output

    LISTEN   0   4096   0.0.0.0:19999   0.0.0.0:*   users:(("netdata",pid=12345,fd=7))

    Port 19999 is open and Netdata is listening on all interfaces (0.0.0.0).

    Command #3: Test Dashboard Access

    # Test from the server itself
    curl -s -o /dev/null -w "%{http_code}" http://localhost:19999
    
    # If it returns 200, the dashboard is accessible
    # Output: 200

    Command #4: Check Netdata Logs

    # Check error log
    tail -50 /var/log/netdata/error.log
    
    # Check logs if there are issues
    journalctl -u netdata --no-pager | tail -30

    Accessing the Dashboard from Outside the Server

    ⚠️ SECURITY WARNING: Restrict Dashboard Access

    By default, the Netdata dashboard can be accessed from anywhere without authentication. This means anyone who knows the IP and port 19999 can see all your server metrics. Its critical to restrict access before allowing external access.

    Method 1: Restrict Access via Firewall (Recommended)

    # UFW (Ubuntu/Debian)
    ufw allow from YOUR_IP to any port 19999
    
    # firewalld (CentOS/RHEL)
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="YOUR_IP" port port="19999" protocol="tcp" accept'
    firewall-cmd --reload
    
    # iptables
    iptables -A INPUT -p tcp --dport 19999 -s YOUR_IP -j ACCEPT
    iptables -A INPUT -p tcp --dport 19999 -j DROP

    Method 2: Configure Netdata for Authentication

    Edit the Netdata configuration file to add authentication:

    # Edit configuration file
    nano /opt/netdata/etc/netdata/netdata.conf
    
    # Add in the [web] section
    [web]
        bind to = =dashboard
        allow connections from = localhost YOUR_IP
        allow dashboard from = localhost YOUR_IP

    After editing, restart Netdata:

    systemctl restart netdata

    Method 3: Reverse Proxy with Nginx (Most Secure)

    Use Nginx as a reverse proxy with SSL and basic auth:

    # Create Nginx configuration file
    nano /etc/nginx/conf.d/netdata.conf

    Fill in the configuration:

    # server {
    #     listen 443 ssl;
    #     server_name netdata.domain.com;
    #     
    #     ssl_certificate /etc/letsencrypt/live/netdata.domain.com/fullchain.pem;
    #     ssl_certificate_key /etc/letsencrypt/live/netdata.domain.com/privkey.pem;
    #     
    #     location / {
    #         proxy_pass http://127.0.0.1:19999;
    #         proxy_set_header Host $host;
    #         proxy_set_header X-Real-IP $remote_addr;
    #         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    #         auth_basic "Netdata Dashboard";
    #         auth_basic_user_file /etc/nginx/.htpasswd;
    #     }
    # }

    Create a .htpasswd file for basic auth:

    # Install htpasswd utility
    apt install apache2-utils -y  # Debian/Ubuntu
    yum install httpd-tools -y    # CentOS/RHEL
    
    # Create .htpasswd file
    htpasswd -c /etc/nginx/.htpasswd admin

    Restart Nginx:

    nginx -t && systemctl restart nginx

    How to Uninstall Netdata

    If you no longer need Netdata, you can uninstall it cleanly:

    # Stop service
    systemctl stop netdata
    
    # Disable service
    systemctl disable netdata
    
    # Run the uninstaller
    /opt/netdata/bin/netdata-uninstaller.sh --yes
    
    # Clean up remaining files (optional)
    rm -rf /opt/netdata
    rm -rf /var/lib/netdata
    rm -rf /var/log/netdata
    rm -rf /tmp/netdata-*

    Pro Tips: Getting the Most Out of Netdata

    1. Use Netdata Cloud for multi-server monitoring — Netdata provides a free cloud platform for monitoring multiple servers at once. You can view dashboards for all servers in one place. Sign up at app.netdata.cloud.
    2. Set up alerts to Telegram/Email — Netdata can send alerts when certain metrics reach a threshold. Configure in /opt/netdata/etc/netdata/health_alarm_notify.conf.
    3. Disable metrics you dont need — if you dont need all metrics, disable unnecessary ones to reduce resource usage. Edit /opt/netdata/etc/netdata/netdata.conf.
    4. Use the Python plugin for custom metrics — Netdata supports custom metrics via the Python plugin. You can monitor custom applications not supported by default.
    5. Archive data to external database — Netdata metric data is stored for only 1 day by default. You can connect to InfluxDB, Prometheus, or the Cloud for long-term storage.
    6. Monitor from mobile — the Netdata dashboard is responsive and accessible from smartphones. You can monitor your server from anywhere.
    7. Use streaming for server clusters — Netdata can be configured to stream data from multiple slaves to one master. Useful for monitoring server clusters.

    FAQ

    Is Netdata safe for production servers?

    Yes, Netdata is very safe for production. Netdata only reads data from /proc, /sys, and service logs — it doesnt change anything on the system. Its resource usage is also very low (CPU < 1%, RAM < 50MB). Many large companies like Facebook, Cloudflare, and DigitalOcean use Netdata to monitor their production servers.

    Does port 19999 need to be opened in the firewall?

    Only if you want to access the dashboard from outside the server. If you only access it from the server itself (localhost:19999), no port opening is needed. But to monitor from another computer, you need to open port 19999 and restrict access to allowed IPs only.

    How do I update Netdata?

    Netdata will automatically update if using the kickstart script. To update manually, re-run the install command: wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh. The script will detect the existing Netdata installation and perform an update.

    Does Netdata affect server performance?

    Minimal. Netdata uses a low sampling rate and collects data efficiently. Average CPU usage is < 1%, RAM around 40-50MB. On servers with many cores and services, usage might be slightly higher but still stays under 2%. You can check Netdatas own resource usage on its dashboard.

    Related Issues

    Conclusion

    Installing Netdata on a Linux server doesnt have to be complicated. With one command — wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh — you can get a powerful real-time monitoring dashboard in under 5 minutes. No database configuration, no agent setup, no alert rules to write — everything works right from installation.

    The key things to remember: restrict dashboard access to allowed IPs only, because Netdata has no built-in authentication. Use a firewall or reverse proxy with basic auth for security. And most importantly, actually use Netdata for active monitoring — dont just install it and never look at it. The Netdata dashboard is only useful if you regularly check the metrics. Better to install monitoring from the start than to have to explain to a client why their server went down and nobody was monitoring — trust me, Ive been there and I dont want to go through that again.