ติดตั้ง Netdata ตรวจสอบ VPS Server แบบ real-time

ติดตั้ง Netdata บน VPS ตรวจสอบ Server แบบ Real-time

มิถุนายน 2026 · อ่าน 7 นาที

Netdata คือ monitoring agent โอเพนซอร์สที่เก็บ metrics ทุก 1 วินาที และแสดงผลผ่าน web dashboard แบบ real-time — ดู CPU, RAM, Disk I/O, Network, Process, Container และ Application metrics ได้ในที่เดียว โดยไม่ต้องตั้ง database หรือ pipeline ซับซ้อน ต่างจาก Prometheus+Grafana ที่ต้องตั้งหลายชั้น Netdata ติดตั้งด้วยคำสั่งเดียวแล้วใช้งานได้ทันที บทความนี้ครอบคลุมการติดตั้ง, ตั้ง alert, รักษาความปลอดภัย dashboard และ export metrics ออกไปยัง Grafana

ทำไมถึงใช้ Netdata?

ติดตั้ง Netdata

# วิธีที่ 1 — Official installer script (แนะนำ)
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry

# วิธีที่ 2 — ติดตั้งจาก apt (Ubuntu/Debian)
apt install -y netdata

# เปิดใช้และเริ่ม service
systemctl enable netdata
systemctl start netdata

# Netdata จะ listen บน port 19999 โดย default
# เปิดเบราว์เซอร์: http://YOUR_VPS_IP:19999

ล็อก Dashboard ไม่ให้เปิด Public

ค่า default ของ Netdata เปิด port 19999 ให้ทุกคนเข้าได้ ต้องปิดทันทีแล้วใช้ reverse proxy แทน

# แก้ไฟล์ config
nano /etc/netdata/netdata.conf

# เพิ่มใน [web] section
[web]
    bind to = 127.0.0.1

# Restart Netdata
systemctl restart netdata

ตั้ง Nginx Reverse Proxy พร้อม Authentication

# สร้าง password file
apt install -y apache2-utils
htpasswd -c /etc/nginx/.netdata_auth admin

# สร้าง Nginx vhost
nano /etc/nginx/sites-available/netdata

server {
    listen 80;
    server_name monitor.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name monitor.yourdomain.com;

    ssl_certificate     /etc/letsencrypt/live/monitor.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/monitor.yourdomain.com/privkey.pem;

    auth_basic "Netdata Monitoring";
    auth_basic_user_file /etc/nginx/.netdata_auth;

    location / {
        proxy_pass http://127.0.0.1:19999;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# Enable และ reload
ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

เปิดใช้ Plugin และ Monitoring เพิ่มเติม

Netdata auto-detect หลาย service แต่บางตัวต้องตั้งค่าเพิ่ม:

# MySQL Monitoring — สร้าง user ให้ Netdata อ่าน metrics
mysql -u root -p -e "CREATE USER 'netdata'@'localhost' IDENTIFIED BY '';
  GRANT USAGE ON *.* TO 'netdata'@'localhost';
  FLUSH PRIVILEGES;"

# แก้ไฟล์ plugin config
nano /etc/netdata/python.d/mysql.conf
# เพิ่ม:
# localhost:
#   'user': 'netdata'
#   'pass': ''
#   'my.cnf': '/etc/mysql/my.cnf'

# Docker container monitoring
# Netdata detect Docker อัตโนมัติถ้า socket /var/run/docker.sock เข้าถึงได้
usermod -aG docker netdata
systemctl restart netdata

ตั้ง Alert แจ้งเตือน

# ดู alert ที่ active อยู่
/etc/netdata/health.d/

# ตั้ง email alert
nano /etc/netdata/health_alarm_notify.conf

# แก้ส่วน email:
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="[email protected]"
SENDMAIL=/usr/sbin/sendmail

# ตั้ง Slack webhook
SEND_SLACK="YES"
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK"
DEFAULT_RECIPIENT_SLACK="#alerts"

# ทดสอบ alert
su -s /bin/bash netdata -c "/usr/libexec/netdata/plugins.d/alarm-notify.sh test"

Export Metrics ไปยัง Prometheus + Grafana

# เปิด Prometheus exporter ใน Netdata
nano /etc/netdata/exporting.conf

[prometheus:local]
    enabled = yes
    destination = localhost:9091
    # หรือใช้ native Prometheus endpoint โดยตรงที่:
    # http://127.0.0.1:19999/api/v1/allmetrics?format=prometheus

# เพิ่ม scrape config ใน Prometheus
# prometheus.yml:
# - job_name: 'netdata'
#   static_configs:
#     - targets: ['localhost:19999']
#   metrics_path: '/api/v1/allmetrics'
#   params:
#     format: [prometheus]

# นำเข้า Grafana dashboard ID 7107 (Netdata Overview)
# หรือ ID 2701 (Netdata ที่นิยมใช้)
Tip: Netdata มี Netdata Cloud (free tier) ให้รวม dashboard จากหลาย server ไว้ที่เดียว ไม่ต้องเปิด port — connect ผ่าน agent tunnel ได้เลย

ตั้ง Log Retention ลดการใช้ RAM

# แก้ history และ memory mode
nano /etc/netdata/netdata.conf

[global]
    # เก็บ history 6 ชั่วโมง (ค่า default = 3600 วินาที)
    history = 21600
    # ใช้ dbengine แทน ram เพื่อเก็บ history ยาวขึ้น
    memory mode = dbengine

[db]
    # พื้นที่ disk สำหรับ dbengine (MB)
    dbengine multihost disk space MB = 512

systemctl restart netdata

ตรวจสอบว่า Netdata ทำงานถูกต้อง

# ดูสถานะ service
systemctl status netdata

# ตรวจสอบ port ที่ listen (ต้องเห็น 127.0.0.1:19999 หลังแก้ config)
ss -tlnp | grep 19999

# ดู log error
journalctl -u netdata -n 50

# เช็ก API health endpoint
curl -s http://127.0.0.1:19999/api/v1/info | python3 -m json.tool | head -20

# ดู metrics ทั้งหมดที่ collect ได้
curl -s "http://127.0.0.1:19999/api/v1/charts" | python3 -c "import sys,json; d=json.load(sys.stdin); print(f'Charts: {len(d[\"charts\"])}')"
Tip: ถ้า Netdata ใช้ CPU สูงผิดปกติ ให้ปิด plugin ที่ไม่ใช้ใน /etc/netdata/python.d.conf หรือ /etc/netdata/node.d.conf แต่ละ plugin สามารถตั้ง enabled: no ได้อิสระ

แก้ปัญหาที่พบบ่อย

Error: "Cannot open /proc/net/dev"

เกิดเมื่อ kernel ไม่มี procfs หรือ container ถูกจำกัด privilege เกินไป

# ตรวจสอบว่า procfs mount อยู่
ls /proc/net/dev

# สำหรับ Docker container ต้อง run ด้วย --cap-add SYS_PTRACE
docker run -d \
  --cap-add SYS_PTRACE \
  --pid=host \
  --network=host \
  -v /proc:/host/proc:ro \
  -v /sys:/host/sys:ro \
  netdata/netdata

Error: "netdata: command not found" หลัง install

installer เพิ่ม PATH ใหม่ที่ /opt/netdata/usr/sbin/ ต้อง reload shell

export PATH=$PATH:/opt/netdata/usr/sbin
# หรือ logout แล้ว login ใหม่

# ตรวจสอบตำแหน่งจริง
which netdata || find /opt /usr -name netdata -type f 2>/dev/null

Error: "Permission denied" สำหรับ MySQL plugin

User netdata ไม่มีสิทธิ์อ่าน MySQL stats

mysql -u root -p -e "GRANT USAGE ON *.* TO 'netdata'@'localhost'; FLUSH PRIVILEGES;"

# ตรวจสอบ
mysql -u netdata -e "SHOW GLOBAL STATUS LIMIT 5;"

Dashboard โหลดช้าหรือ charts หาย

มักเกิดจาก browser cache หรือ proxy ไม่ส่ง WebSocket

# เพิ่มใน Nginx location block
location / {
    proxy_pass http://127.0.0.1:19999;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_cache_bypass $http_upgrade;
}

Netdata กิน RAM มากเกินไป

ค่า default เก็บ metrics ใน RAM ถ้า server มี RAM น้อยควรเปลี่ยน mode

nano /etc/netdata/netdata.conf

[global]
    memory mode = save   # บันทึก disk แทน RAM
    history = 3600       # ลด history เหลือ 1 ชั่วโมง

systemctl restart netdata
# ตรวจ RAM หลัง restart
ps aux | grep netdata | awk '{print $6}' | head -5

คำถามที่พบบ่อย

Netdata กับ Grafana+Prometheus ต่างกันอย่างไร?

Netdata เหมาะสำหรับ real-time troubleshooting — เห็นข้อมูล 1 วินาที ติดตั้งง่าย ไม่ต้องตั้ง pipeline Prometheus+Grafana เหมาะกว่าสำหรับ long-term trend, multi-server aggregation และ custom dashboard ที่ซับซ้อน ใช้ร่วมกันได้โดย Netdata export metrics ให้ Prometheus scrape

Netdata ส่ง data ออก internet ไหม?

ค่า default ไม่ส่ง — --disable-telemetry ปิด telemetry ได้ตั้งแต่ install ถ้าใช้ Netdata Cloud ต้องเชื่อมด้วย claim token แต่ข้อมูล metrics ยังอยู่บน VPS ของคุณ ไม่ถูก upload ไปยัง cloud

Netdata รองรับ Container monitoring ไหม?

รองรับ Docker และ LXC/LXD ได้โดยอัตโนมัติ — ดู CPU/RAM แยกต่อ container และเห็น network/disk I/O ของแต่ละ container ถ้าต้องการ Kubernetes ต้องใช้ Netdata Helm chart แยก