ติดตั้ง Uptime Kuma เฝ้าดูเว็บไซต์ของตัวเอง

ตั้งระบบเฝ้าดูเว็บไซต์และบริการที่แจ้งเตือนเข้า LINE หรืออีเมลทันทีเมื่อล่ม พร้อมหน้าสถานะสาธารณะสำหรับแจ้งลูกค้า

โดย ทีมงาน THAI DATA CLOUD อัปเดต อ่าน 9 นาที เข้าชม 11 ครั้ง

แชร์FacebookXLINELinkedIn
Uptime Kuma — ติดตั้ง Uptime Kuma เฝ้าดูเว็บไซต์ของตัวเอง
ติดตั้ง Uptime Kuma เฝ้าดูเว็บไซต์ของตัวเอง

คำตอบสั้น ๆ: ตั้งระบบเฝ้าดูเว็บไซต์และบริการที่แจ้งเตือนเข้า LINE หรืออีเมลทันทีเมื่อล่ม พร้อมหน้าสถานะสาธารณะสำหรับแจ้งลูกค้า

คู่มือนี้อธิบาย Uptime Kuma ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

การรู้ว่าเว็บล่มจากการที่ลูกค้าโทรมาแจ้งคือสถานการณ์ที่ควรหลีกเลี่ยง ระบบเฝ้าดูที่ตรวจสอบทุกนาทีและแจ้งเตือนทันทีทำให้ทีมงานรู้ก่อนและแก้ได้ก่อนที่ผู้ใช้จะได้รับผลกระทบเป็นวงกว้าง

Uptime Kuma เป็นเครื่องมือที่ติดตั้งง่ายที่สุดในกลุ่มนี้ ใช้ทรัพยากรน้อย และรองรับการแจ้งเตือนเข้าช่องทางที่คนไทยใช้จริงอย่าง LINE ได้ในตัว

สิ่งที่ต้องเตรียม

  • เซิร์ฟเวอร์ที่มี Docker RAM เพียง 512 MB ก็เพียงพอ
  • โดเมนย่อยสำหรับเข้าหน้าจอ
  • ควรติดตั้งบนเซิร์ฟเวอร์คนละเครื่องกับเว็บที่จะเฝ้าดู เพราะหากอยู่เครื่องเดียวกันและเครื่องนั้นล่ม ระบบเฝ้าดูก็ล่มไปด้วยจึงแจ้งเตือนไม่ได้

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

sudo mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma
sudo nano docker-compose.yml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data:/app/data
    environment:
      TZ: Asia/Bangkok
sudo docker compose up -d
sudo docker compose logs -f

ขั้นตอนที่ 2: ตั้ง Nginx และ SSL

sudo nano /etc/nginx/sites-available/uptime
server {
    listen 80;
    server_name status.example.com;

    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_http_version 1.1;
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
sudo ln -s /etc/nginx/sites-available/uptime /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d status.example.com --agree-tos -m [email protected] --redirect

WebSocket จำเป็นสำหรับหน้าจอนี้ เพราะข้อมูลอัปเดตแบบเรียลไทม์

ขั้นตอนที่ 3: สร้างการตรวจสอบ

เข้าหน้าเว็บแล้วสร้างบัญชีผู้ดูแล จากนั้นกด Add New Monitor ชนิดที่ใช้บ่อยและควรตั้งไว้

เว็บไซต์ (HTTP/s)

  • URL ใส่ที่อยู่เต็ม
  • Heartbeat Interval 60 วินาที
  • Retries 2 ครั้งก่อนถือว่าล่ม ลดการแจ้งเตือนผิดพลาดจากเครือข่ายสะดุดชั่วคราว
  • Accepted Status Codes 200-299

ตรวจเนื้อหาในหน้าเว็บ (HTTP/s - Keyword)

ใช้เมื่อเว็บตอบ 200 ได้แต่แสดงหน้าข้อผิดพลาด ใส่คำที่ต้องมีในหน้าปกติ เช่น ชื่อบริษัท ทำให้จับปัญหาที่การตรวจสอบธรรมดามองไม่เห็น

วันหมดอายุของใบรับรอง SSL

ในการตรวจสอบแบบ HTTP ให้ตั้ง Certificate Expiry Notification ไว้ที่ 14 และ 7 วัน ป้องกันใบรับรองหมดอายุโดยไม่รู้ตัว

บริการอื่น

  • TCP Port สำหรับฐานข้อมูลหรือ SSH
  • Ping สำหรับอุปกรณ์เครือข่าย
  • DNS ตรวจว่าระเบียนยังชี้ถูกที่
  • Push สำหรับงานตามเวลา โดยให้สคริปต์เรียก URL เมื่อทำงานสำเร็จ หากไม่มีการเรียกภายในเวลาที่กำหนดจะถือว่าล้มเหลว ซึ่งจับกรณีที่งานสำรองข้อมูลหยุดทำงานเงียบ ๆ ได้

ขั้นตอนที่ 4: ตั้งการแจ้งเตือน

ไปที่ Settings แล้ว Notifications กด Setup Notification

LINE (Messaging API)

LINE Notify ปิดบริการไปตั้งแต่วันที่ 31 มีนาคม 2025 ถ้าต้องการรับแจ้งเตือนทาง LINE ให้เลือกชนิด LINE Messenger ใน Uptime Kuma ซึ่งส่งผ่าน LINE Messaging API

  1. สร้าง LINE Official Account แล้วเปิดใช้ Messaging API ใน LINE Official Account Manager (ตั้งแต่ 4 กันยายน 2024 สร้าง Messaging API channel ตรงจาก LINE Developers Console ไม่ได้แล้ว)
  2. เปิด channel นั้นใน LINE Developers Console ออก Channel access token (long-lived) ที่แท็บ Messaging API และคัดลอกค่า Your user ID ที่แท็บ Basic settings
  3. เพิ่ม LINE Official Account นั้นเป็นเพื่อนในแอป LINE ของคุณ ถ้าบัญชีถูกบล็อก ข้อความจะไม่ถึงแม้ระบบจะตอบว่าส่งสำเร็จ
  4. ใน Uptime Kuma เลือกชนิด LINE Messenger ใส่ Channel access token กับ User ID แล้วกด Test

อีเมล

Hostname: smtp.example.com
Port: 587
Security: STARTTLS
Username: [email protected]
Password: รหัสผ่าน
From: [email protected]
To: [email protected]

Telegram

สร้างบอทผ่าน BotFather เอา Token มาใส่ และหา Chat ID ด้วยการส่งข้อความหาบอทแล้วเรียก

curl -s "https://api.telegram.org/bot<TOKEN>/getUpdates" | grep -o '"id":[0-9-]*' | head -1

ตั้งการแจ้งเตือนอย่างน้อยสองช่องทางเสมอ เผื่อช่องทางหนึ่งมีปัญหา

ขั้นตอนที่ 5: สร้างหน้าสถานะสาธารณะ

ไปที่ Status Pages แล้ว New Status Page ตั้งชื่อและที่อยู่ เลือกว่าจะแสดงบริการไหนบ้าง

ประโยชน์คือเมื่อเกิดเหตุ ลูกค้าเปิดดูเองได้ว่าระบบไหนมีปัญหาและกำลังแก้อยู่ ลดจำนวนสายที่โทรเข้ามาถามได้มาก

แสดงหน้านี้บนโดเมนแยก เช่น status.example.com และต้องอยู่คนละเซิร์ฟเวอร์กับระบบหลัก ไม่เช่นนั้นเมื่อระบบหลักล่ม หน้าสถานะก็เปิดไม่ได้

เพิ่มประกาศเหตุการณ์ด้วยปุ่ม Create Incident เพื่อแจ้งความคืบหน้าระหว่างแก้ไข

ขั้นตอนที่ 6: ตั้งช่วงเวลาบำรุงรักษา

ไปที่ Maintenance แล้วกำหนดช่วงเวลาที่จะปิดระบบตามแผน ทำให้ไม่มีการแจ้งเตือนและไม่กระทบสถิติความพร้อมใช้งาน ซึ่งสำคัญเมื่อต้องรายงานตัวเลขให้ผู้บริหารหรือลูกค้า

ขั้นตอนที่ 7: สำรองข้อมูล

sudo tar czf /var/backups/uptime-kuma-$(date +%F).tar.gz -C /opt/uptime-kuma data

ข้อมูลทั้งหมดอยู่ในโฟลเดอร์เดียว จึงสำรองและย้ายเครื่องได้ง่าย

ปัญหาที่พบบ่อยเกี่ยวกับ Uptime Kuma

หน้าเว็บไม่อัปเดตแบบเรียลไทม์

Nginx ไม่ส่งต่อ WebSocket ตรวจคอนฟิกตามขั้นตอนที่ 2

แจ้งเตือนผิดพลาดบ่อย

เพิ่มค่า Retries เป็น 2-3 ครั้ง และเพิ่มระยะเวลา Heartbeat หากเว็บปลายทางตอบช้าโดยธรรมชาติ ตรวจด้วยว่าเซิร์ฟเวอร์ที่รัน Uptime Kuma มีเครือข่ายที่เสถียร

ตรวจเว็บตัวเองแล้วขึ้นล่มทั้งที่เปิดได้

หากเว็บอยู่หลัง Cloudflare หรือมีระบบป้องกันบอต อาจบล็อกคำขอจากระบบเฝ้าดู เพิ่ม IP ของเซิร์ฟเวอร์เข้ารายการที่อนุญาต หรือตั้ง User-Agent เฉพาะแล้วยกเว้นที่ฝั่งเว็บ

ลืมรหัสผ่านผู้ดูแล

รีเซ็ตได้จากในคอนเทนเนอร์

sudo docker compose exec uptime-kuma node extra/reset-password.js

ต้องการระบบเฝ้าระวังที่มีทีมวิศวกรดูแลตลอด 24 ชั่วโมง ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

สรุปขั้นตอน Uptime Kuma

ทบทวน Uptime Kuma ทั้งหมดตามลำดับ ก่อนนำไปใช้กับระบบจริง

  1. ติดตั้ง
  2. ตั้ง Nginx และ SSL
  3. สร้างการตรวจสอบ
  4. ตั้งการแจ้งเตือน
  5. สร้างหน้าสถานะสาธารณะ
  6. ตั้งช่วงเวลาบำรุงรักษา
  7. สำรองข้อมูล

เมื่อทำครบทุกข้อแล้ว Uptime Kuma จะพร้อมใช้งาน หากผลลัพธ์ไม่เป็นไปตามที่คาด ให้ย้อนกลับไปดูหัวข้อปัญหาที่พบบ่อยด้านบน ซึ่งรวบรวมกรณีที่พบจริงจากการใช้งาน Uptime Kuma ไว้แล้ว

อ่านเพิ่มเติมเกี่ยวกับ Uptime Kuma

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน