รับเครดิต $200

Monitoring และ Alert บน DigitalOcean: ดู CPU RAM ดิสก์ ตั้งแจ้งเตือน และเช็กเว็บล่มอัตโนมัติ

อัปเดตล่าสุด 3 พฤศจิกายน 2569 · อ่านประมาณ 6 นาที · โดย DigitalOcean Review ไทย

วิธีเปิดใช้ Monitoring agent บน Droplet, อ่านกราฟ CPU/Memory/Disk/Bandwidth, ตั้ง Alert Policy แจ้งเตือนอีเมลหรือ Slack, ตั้ง Billing Alert กันบิลบวม และทางเลือกเช็กเว็บล่มด้วย Uptime

เปิดเผยข้อมูล: บทความนี้มีลิงก์แนะนำ (referral) ของ DigitalOcean หากคุณสมัครผ่านลิงก์ เจ้าของเว็บอาจได้รับเครดิต โดยคุณไม่เสียค่าใช้จ่ายเพิ่ม · อ่านนโยบายการรีวิว

ทำไมต้องมี Monitoring

เซิร์ฟเวอร์ที่ไม่มีใครดูจะเงียบไปจนวันที่มันล่ม สาเหตุที่พบบ่อยที่สุดของเว็บล่มบน Droplet ไม่ใช่การโจมตี แต่เป็น ดิสก์เต็ม, RAM หมด (OOM), CPU ค้าง 100% ซึ่งตรวจพบล่วงหน้าได้ถ้ามีกราฟและการแจ้งเตือน และต้นทุนเริ่มต้นคือศูนย์ เพราะ Monitoring พื้นฐานของ DigitalOcean ไม่คิดค่าใช้จ่ายเพิ่มตามที่ระบุในเอกสาร ณ เวลาที่เขียน

Monitoring ของ DigitalOcean ทำอะไรได้

  • กราฟ Droplet: CPU, Memory, Disk I/O, Disk usage, Bandwidth (public/private), Load average
  • Alert Policies: แจ้งเตือนเมื่อค่าเกินเกณฑ์ ส่งทางอีเมลหรือ Slack
  • Uptime checks: ตรวจว่า URL ตอบสนองหรือไม่ แจ้งเมื่อล่มหรือช้า (ตรวจเงื่อนไขและจำนวนที่ใช้ได้ในหน้า Control Panel)
  • Billing alerts: แจ้งเตือนเมื่อค่าใช้จ่ายถึงเกณฑ์

ขั้นที่ 1: ติดตั้ง Monitoring Agent

ตอนสร้าง Droplet ให้ติ๊ก Monitoring ไว้ ระบบจะติดตั้ง agent ให้ ถ้าเครื่องเก่าไม่มี สามารถติดตั้งเองได้

curl -sSL https://repos.insights.digitalocean.com/install.sh | sudo bash

อ่านสคริปต์ก่อนรันทุกครั้งที่ pipe เข้า bash ตรวจคำสั่งล่าสุดในเอกสาร DigitalOcean แล้วตรวจสถานะ

systemctl status do-agent

จากนั้นเปิดแท็บ Graphs ของ Droplet จะเห็นข้อมูลภายในไม่กี่นาที หากไม่มี agent จะเห็นเฉพาะข้อมูลระดับ hypervisor เช่น CPU และ bandwidth โดยไม่มี Memory และ Disk usage

รับเครดิตฟรี $200 (ใช้ได้ 60 วัน)สมัคร DigitalOcean ผ่านลิงก์แนะนำของเรา แล้วเพิ่มวิธีชำระเงินที่ใช้งานได้ ระบบจะให้เครดิตทดลองใช้งาน ตามเงื่อนไขของ DigitalOcean ณ วันที่สมัคร
สมัครรับเครดิต $200 →

ขั้นที่ 2: ตั้ง Alert Policy

Control Panel → Monitoring → Create Alert Policy

ชุดแนะนำสำหรับเว็บทั่วไป

Metricเกณฑ์ช่วงเวลาเหตุผล
CPU> 85%10 นาทีเตือนก่อนเครื่องค้างจริง
Memory> 85%10 นาทีเตือนก่อน OOM kill
Disk usage> 80%5 นาทีดิสก์เต็มทำให้ฐานข้อมูลพังได้
Bandwidth ขาออกสูงผิดปกติ30 นาทีตรวจเจอ bot/โจมตี/ไฟล์ใหญ่ถูกดึงเยอะ
Load average> จำนวน vCPU × 210 นาทีคิวงานเริ่มสะสม

ตั้งปลายทางแจ้งเตือน (อีเมลหรือ Slack) แล้วเลือกเครื่องแบบรายตัวหรือตาม tag ให้ครอบคลุมเครื่องใหม่อัตโนมัติ

ใช้งานจริงเมื่อได้รับแจ้งเตือน

แจ้งเตือนเช็กอะไร
CPU สูงtop/htop, ดู process ที่กิน, ตรวจ cron หรือบอทที่เข้ามากระหน่ำ
Memory สูงfree -h, `ps aux --sort=-%memhead`, ตรวจ memory leak, เพิ่ม swap หรืออัปเกรด
Disk สูงdf -h, `du -xh /sort -htail -30`, ล้าง log, Docker prune, ย้ายไฟล์ไป Spaces
Bandwidth สูงnethogs, ตรวจ access log ของ Nginx หาไอพีที่ดึงเยอะ

ขั้นที่ 3: Uptime Checks

Uptime check ตรวจเว็บจากภายนอก ตั้ง URL เช่น https://example.com/healthz กำหนดเงื่อนไข (ตอบ 200, เวลาตอบสนอง, อายุใบรับรอง SSL) แล้วผูกกับการแจ้งเตือน ประโยชน์คือรู้เมื่อ *ผู้ใช้เข้าไม่ได้จริง* ไม่ใช่แค่เครื่องยังเปิดอยู่

ทางเลือกอื่นถ้าต้องการตรวจหลายจุดหรือคุมเอง

  • ติดตั้ง Uptime Kuma (โอเพนซอร์ส) ด้วย Docker บนอีก Droplet คนละภูมิภาค ดู ติดตั้ง Docker บน Droplet
  • ใช้บริการตรวจภายนอกที่คุณเลือก
อย่าตรวจเว็บจากเครื่องเดียวกับที่โฮสต์เว็บ ถ้าเครื่องนั้นล่ม ตัวตรวจก็ล่มไปด้วย

ขั้นที่ 4: Billing Alert กันบิลบวม

ที่ Billing → Settings ตั้งแจ้งเตือนเมื่อค่าใช้จ่ายรอบเดือนถึงจำนวนที่กำหนด เช่น 80% ของงบ เหมาะมากถ้าใช้เครดิตทดลองหรือผูกบัตรเครดิต ช่วยจับกรณีลืมปิด Droplet, snapshot สะสม หรือ transfer เกินโควตา ดูวิธีลดต้นทุนเพิ่มที่ 15 วิธีลดค่าใช้จ่าย DigitalOcean และเงื่อนไขราคาที่ ราคา DigitalOcean ทุกบริการ

เครื่องมือเสริมในเครื่อง

เครื่องมือใช้ทำอะไรติดตั้ง
htopดู CPU/RAM แบบสดapt install htop
ncduหาโฟลเดอร์ที่กินดิสก์apt install ncdu
iotopดูดิสก์ I/Oapt install iotop
nethogsดูแบนด์วิดท์รายโปรเซสapt install nethogs
goaccessวิเคราะห์ log Nginxapt install goaccess
journalctl -u ชื่อ -fดู log ของ systemd serviceมีอยู่แล้ว

สคริปต์เช็กดิสก์ง่ายๆ ด้วย cron

#!/bin/bash
USE=$(df / --output=pcent | tail -1 | tr -dc '0-9')
if [ "$USE" -gt 85 ]; then
  echo "Disk ${USE}% on $(hostname)" | mail -s "Disk alert" [email protected]
fi

ต้องตั้งค่าส่งอีเมลของเครื่องก่อนจึงจะใช้ mail ได้ ทางที่ง่ายกว่าคือพึ่ง Alert Policy ของ DigitalOcean

รับมือเมื่อเครื่องล่มแล้ว

  1. เปิดกราฟดูเวลาที่เริ่มผิดปกติ
  2. เข้า Recovery Console ถ้า SSH ไม่ได้
  3. ตรวจ dmesg -T | grep -i -E "oom|killed" ดูว่าถูก OOM kill ไหม
  4. ตรวจ df -h และ df -i (inode เต็มก็ทำให้เขียนไฟล์ไม่ได้)
  5. ถ้าแก้ไม่ได้ กู้จาก Backup/Snapshot ดู Backups และ Snapshots
  6. บันทึกสาเหตุและตั้ง Alert เพิ่มเพื่อไม่ให้เกิดซ้ำ

ติดตามเมื่อใช้ Managed Database, Kubernetes, App Platform

บริการเหล่านี้มีกราฟและเมตริกในตัวของแต่ละบริการ ดู คู่มือ Managed Databases, คู่มือ Kubernetes (DOKS) และ คู่มือ App Platform

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

Monitoring ของ DigitalOcean ทำให้เครื่องช้าลงไหม

agent มีขนาดเล็กและใช้ทรัพยากรน้อยมากในการใช้งานทั่วไป

ควรใช้ Prometheus/Grafana แทนไหม

ถ้าต้องการเมตริกของแอปในระดับลึกและแดชบอร์ดกำหนดเอง ใช้ได้ แต่สำหรับเว็บทั่วไป Monitoring + Alert Policy พื้นฐานก็เพียงพอ และไม่ต้องดูแลระบบเพิ่ม

แจ้งเตือนช้าไหม

เป็นการตรวจตามช่วงเวลาที่ตั้ง จึงมีความหน่วงได้ ตั้งช่วงเวลาและเกณฑ์ให้พอดีเพื่อไม่ให้เตือนมากเกินจนถูกมองข้าม

ต้องตั้งแจ้งเตือนกับทุกเครื่องไหม

ควรตั้งผ่าน tag ให้ครอบคลุมทั้งกลุ่ม แล้วเพิ่ม policy เฉพาะสำหรับเครื่องสำคัญ เช่นฐานข้อมูล

รับเครดิตฟรี $200 (ใช้ได้ 60 วัน)สมัคร DigitalOcean ผ่านลิงก์แนะนำของเรา แล้วเพิ่มวิธีชำระเงินที่ใช้งานได้ ระบบจะให้เครดิตทดลองใช้งาน ตามเงื่อนไขของ DigitalOcean ณ วันที่สมัคร
สมัครรับเครดิต $200 →