Monitor เว็บ Hosting ให้ Online ตลอด 24 ชั่วโมง

ตั้งค่า Uptime Monitoring บน Shared Hosting รับแจ้งเตือนทันทีเมื่อเว็บล่ม ผ่าน Email และ LINE

Monitor เว็บ Hosting ให้ Online ตลอด 24 ชั่วโมง Hosting

เว็บไซต์ล่มโดยไม่รู้ตัวคือฝันร้ายของเจ้าของเว็บทุกคน โดยเฉพาะเว็บธุรกิจหรือร้านค้าออนไลน์ที่ทุกนาทีของการ downtime หมายถึงยอดขายและความไว้วางใจของลูกค้าที่สูญเสียไป บทความนี้จะพาคุณตั้งค่า Uptime Monitoring สำหรับเว็บบน Shared Hosting อย่างละเอียด ตั้งแต่เครื่องมือฟรีที่แนะนำ ไปจนถึงการตั้งค่าแจ้งเตือนผ่าน Email และ LINE Notify เพื่อให้คุณรู้ทันทีเมื่อมีปัญหาเกิดขึ้น

ทำไม Uptime Monitoring ถึงสำคัญ

Hosting ระดับ Shared ที่ดีมักการันตี Uptime ที่ 99.9% ต่อปี ฟังดูสูงมาก แต่ความจริงคือ 99.9% ยังหมายความว่าเว็บสามารถล่มได้นานถึง 8.7 ชั่วโมงต่อปี หากเป็น 99.5% คือ downtime ได้ถึง 43 ชั่วโมง ปัญหาคือ Hosting Provider อาจไม่แจ้งเตือนคุณทันทีเมื่อเว็บล่ม คุณจึงต้องมีระบบ Monitoring ของตัวเองเพื่อ:

เครื่องมือ Uptime Monitoring ฟรีที่แนะนำ

มีบริการ Uptime Monitoring ฟรีหลายเจ้าที่เหมาะกับเจ้าของเว็บ Shared Hosting โดยไม่ต้องติดตั้งซอฟต์แวร์เพิ่มเติมบน Server:

1. UptimeRobot (แนะนำสำหรับผู้เริ่มต้น)

UptimeRobot เป็นบริการ Monitor ที่ได้รับความนิยมสูงสุด ใช้ฟรีได้ถึง 50 monitors โดย Check ทุก 5 นาที รองรับการแจ้งเตือนผ่าน Email, Slack, LINE และอื่นๆ มี Dashboard สวยงาม ดูสถิติย้อนหลังได้ สมัครใช้งานที่ uptimerobot.com แล้วเพิ่ม Monitor ได้ทันที

2. Freshping (Check ทุก 1 นาที)

Freshping ให้ Check ได้ถี่กว่าในแผนฟรี โดย Check ทุก 1 นาที รองรับ 50 websites รับแจ้งเตือนผ่าน Email, Slack, Webhook และ Line Notify เหมาะกับเว็บที่ต้องการความแม่นยำสูง

3. Better Uptime

มีแผนฟรีที่ Check ทุก 3 นาที ข้อเด่นคือมีหน้า Status Page สวยงามให้สร้างฟรี เหมาะสำหรับแจ้งสถานะเว็บให้ลูกค้าทราบแบบ Professional

วิธีตั้งค่า UptimeRobot แบบ Step-by-Step

เริ่มจากการสมัครบัญชีที่ uptimerobot.com แล้วทำตามขั้นตอนต่อไปนี้:

ขั้นตอนที่ 1: สร้าง Monitor ใหม่

  1. Login เข้า Dashboard ของ UptimeRobot
  2. คลิก + Add New Monitor
  3. เลือก Monitor Type เป็น HTTP(s)
  4. ใส่ URL เว็บของคุณ เช่น https://yoursite.com
  5. ตั้ง Monitoring Interval เป็น 5 minutes (แผนฟรี)
  6. คลิก Create Monitor

ขั้นตอนที่ 2: ตั้งค่า Alert Contact สำหรับ Email

ไปที่ My Settings > Alert Contacts แล้วเพิ่ม Email ที่ต้องการรับการแจ้งเตือน สามารถเพิ่มได้หลาย Email เช่น Email ส่วนตัว Email ทีมงาน หรือ Email ลูกค้า

ขั้นตอนที่ 3: เชื่อมต่อ LINE Notify

UptimeRobot รองรับ Webhook ทำให้เชื่อมต่อกับ LINE Notify ได้ ทำตามขั้นตอน:

  1. ไปที่ notify-bot.line.me แล้ว Login ด้วย LINE Account
  2. เลือก Generate Token > ตั้งชื่อ Token เช่น "เว็บ Monitor"
  3. เลือก Chat ที่ต้องการส่งแจ้งเตือน (ส่วนตัวหรือ Group)
  4. คัดลอก Token ที่ได้มา
  5. ใน UptimeRobot ไปที่ Alert Contacts > Add Alert Contact
  6. เลือกประเภท Webhook
  7. ใส่ URL: https://notify-api.line.me/api/notify
  8. เพิ่ม Custom Header: Authorization: Bearer YOUR_LINE_TOKEN
  9. ตั้งค่า POST Parameter: message=Your site is DOWN!

ใช้ Cron Job ใน cPanel ตรวจสอบเว็บตัวเอง

นอกจากบริการภายนอก คุณยังสามารถสร้าง Script PHP แบบง่ายๆ แล้วใช้ Cron Job ใน cPanel ให้ตรวจสอบเว็บและส่ง Email แจ้งเตือนได้ด้วยตัวเอง วิธีนี้เหมาะสำหรับผู้ที่ต้องการควบคุมทุกอย่างด้วยตัวเอง

สร้างไฟล์ check_uptime.php ใน Hosting แล้วใส่โค้ดด้านล่าง:

<?php
// check_uptime.php - Uptime Monitor Script สำหรับ cPanel Shared Hosting
$url        = 'https://yoursite.com';
$alert_email = '[email protected]';
$timeout    = 10; // วินาที

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'UptimeBot/1.0');
$response   = curl_exec($ch);
$http_code  = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error      = curl_error($ch);
curl_close($ch);

// ถ้า HTTP Code ไม่ใช่ 200 หรือเกิด Error ให้ส่ง Email
if ($http_code != 200 || !empty($error)) {
    $subject = "[DOWN] $url ไม่สามารถเข้าถึงได้";
    $body    = "เว็บไซต์ $url ล่ม!\n"
             . "HTTP Code: $http_code\n"
             . "Error: $error\n"
             . "เวลา: " . date('Y-m-d H:i:s') . "\n";
    mail($alert_email, $subject, $body);
}
echo "HTTP $http_code | " . date('H:i:s') . "\n";
?>

จากนั้นตั้งค่า Cron Job ใน cPanel โดยไปที่ Cron Jobs แล้วเพิ่ม Job ใหม่:

# ตรวจสอบทุก 5 นาที
*/5 * * * * /usr/bin/php /home/username/public_html/check_uptime.php

# ตรวจสอบทุก 1 นาที (ใช้ได้เมื่อ Hosting อนุญาต)
* * * * * /usr/bin/php /home/username/public_html/check_uptime.php

# ดู Path ของ PHP บน cPanel ได้โดยใช้ Terminal:
# which php
# /usr/local/bin/php (บาง Hosting ใช้ Path นี้)

# ตรวจสอบ Cron Log (ถ้า Hosting รองรับ):
# tail -f /home/username/logs/cron.log
หมายเหตุ: Script check_uptime.php ที่วางบน Server เดียวกับเว็บจะล้มเหลวหาก Server ทั้งตัวล่ม แนะนำให้ใช้ร่วมกับบริการ Monitoring ภายนอกอย่าง UptimeRobot เพื่อความมั่นใจสูงสุด

ตั้งค่า Status Page สำหรับแจ้งลูกค้า

เมื่อเว็บมีปัญหา ลูกค้ามักเข้าหน้าเว็บไม่ได้และไม่รู้ว่าเกิดอะไรขึ้น การมี Status Page ให้ลูกค้าตรวจสอบสถานะได้เองช่วยลดความกังวลและลดปริมาณ Support Ticket ได้มาก บริการที่ให้ Status Page ฟรีได้แก่ Better Uptime, Freshping และ Instatus เพียงสมัครและเพิ่ม Monitor แล้วแชร์ลิงก์ Status Page ให้ลูกค้า เช่น status.yoursite.com

ตั้งค่า Response Time Alert

นอกจาก Downtime ยังควร Monitor ความช้าของเว็บด้วย เพราะเว็บที่โหลดช้า (Response Time เกิน 3 วินาที) ส่งผลเสียต่อ SEO และ User Experience ไม่แพ้เว็บล่ม UptimeRobot และ Freshping สามารถตั้ง Alert ได้เมื่อ Response Time เกินค่าที่กำหนด เช่น แจ้งเตือนเมื่อเกิน 2000ms

Tip: ตั้ง Alert 2 ระดับ ได้แก่ Warning เมื่อ Response Time เกิน 2 วินาที และ Critical เมื่อเกิน 5 วินาที จะช่วยให้รู้ตั้งแต่เว็บเริ่มช้าก่อนที่จะล่มจริง

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

หลังตั้งค่าแล้ว ควรทดสอบให้แน่ใจว่าระบบแจ้งเตือนทำงานได้จริง ใช้คำสั่งต่อไปนี้ใน Terminal (หรือ cPanel Terminal) เพื่อตรวจสอบ:

# ทดสอบ curl ไปยังเว็บตัวเองและดู HTTP Status Code
curl -o /dev/null -s -w "%{http_code}\n" https://yoursite.com

# ดู Response Time (unit: วินาที)
curl -o /dev/null -s -w "Connect: %{time_connect}s | TTFB: %{time_starttransfer}s | Total: %{time_total}s\n" https://yoursite.com

# ทดสอบ SSL Certificate ว่ายังใช้ได้ถึงเมื่อไร
curl -vI https://yoursite.com 2>&1 | grep "expire date"

# ทดสอบ Redirect ว่า HTTP เปลี่ยนเป็น HTTPS ถูกต้อง
curl -I http://yoursite.com 2>&1 | grep "Location"

# ทดสอบส่ง Email Alert จาก PHP Script โดยตรง
php /home/username/public_html/check_uptime.php
Tip: ทดสอบระบบแจ้งเตือนโดยการปิด/เปิด Monitor ชั่วคราวใน UptimeRobot หรือแก้ URL ใน Monitor ให้เป็น URL ที่ไม่มีอยู่จริง แล้วรอดู Alert ที่ได้รับ หลังจากนั้นแก้กลับให้ถูกต้อง วิธีนี้จะพิสูจน์ว่าระบบแจ้งเตือนทำงานจริงโดยไม่ต้องทำให้เว็บล่มจริงๆ

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

Error: "Monitor แจ้ง DOWN แต่เว็บยังเปิดได้ปกติ"

ปัญหานี้มักเกิดจาก Firewall บน Server บล็อก IP ของ Monitoring Service ไว้ UptimeRobot ตรวจสอบจาก Data Center หลายแห่งทั่วโลก ถ้า IP ที่ใช้ Check ตรงกับ IP ที่ถูก Block ก็จะแสดงว่า DOWN แม้เว็บปกติ วิธีแก้คือไปที่ cPanel > IP Blocker หรือ CSF Firewall แล้วตรวจสอบว่ามี IP Range ของ UptimeRobot ถูก Block อยู่หรือไม่ สามารถดูรายการ IP ของ UptimeRobot ได้ที่ uptimerobot.com/ips

Error: "ไม่ได้รับ Email แจ้งเตือนเมื่อเว็บล่ม"

ตรวจสอบ Spam/Junk Folder ก่อนเป็นอันดับแรก เพราะ Email จาก Monitoring Service มักถูกกรองเป็น Spam หากยังไม่พบ ให้ตรวจสอบ Alert Contact ใน UptimeRobot ว่า Email ถูกต้องและ Status เป็น Active หรือไม่ ทดสอบโดยคลิก Send Test Alert แล้วรอ Email ประมาณ 1-2 นาที หากยังไม่ได้รับ ให้ลองใช้ Email อื่นเช่น Gmail แทน

Error: "Cron Job PHP Script ทำงานแต่ไม่ส่ง Email"

ปัญหาอยู่ที่ฟังก์ชัน mail() ของ PHP บน Shared Hosting บางเจ้าถูก Disable หรือ Restrict ไว้ ให้แก้โดยใช้ PHPMailer ส่งผ่าน SMTP แทน:

// ใช้ PHPMailer + SMTP แทน mail() ใน check_uptime.php
require 'PHPMailer/src/PHPMailer.php';
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->Host       = 'mail.yoursite.com';
$mail->SMTPAuth   = true;
$mail->Username   = '[email protected]';
$mail->Password   = 'your_smtp_password';
$mail->Port       = 587;
$mail->setFrom('[email protected]', 'Uptime Monitor');
$mail->addAddress('[email protected]');
$mail->Subject    = '[DOWN] yoursite.com ล่ม!';
$mail->Body       = "เว็บล่มเมื่อ " . date('Y-m-d H:i:s');
$mail->send();

Error: "Monitor แสดง Response Time สูงผิดปกติ 5-10 วินาที"

Response Time สูงบน Shared Hosting มักเกิดจาก Server โหลดสูงเพราะมีผู้ใช้ร่วม Server คนอื่นใช้ทรัพยากรหนัก หรือเกิดจาก WordPress Plugin ที่ทำงานหนัก ให้ตรวจสอบ Error Log ใน cPanel และ Query Log ของ MySQL ถ้าเกิดซ้ำบ่อยควรติดต่อ Hosting Provider หรือพิจารณา Upgrade Plan หรือย้ายไป VPS

Error: "LINE Notify ไม่ได้รับข้อความแจ้งเตือน"

ตรวจสอบ Token ว่ายังใช้งานได้อยู่ที่ notify-bot.line.me > Connected Services LINE Token หมดอายุหรือถูก Revoke จะต้องสร้างใหม่ นอกจากนี้ตรวจสอบว่า Webhook URL และ Header ตั้งค่าถูกต้อง โดยทดสอบด้วย curl:

# ทดสอบ LINE Notify Token ด้วย curl
curl -X POST https://notify-api.line.me/api/notify \
  -H "Authorization: Bearer YOUR_LINE_TOKEN" \
  -F "message=ทดสอบ LINE Notify จาก Uptime Monitor"
# ถ้าได้ {"status":200,"message":"ok"} แสดงว่า Token ใช้ได้

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

Q: ใช้ UptimeRobot แบบฟรีเพียงพอไหม?

A: สำหรับเว็บส่วนใหญ่ แผนฟรีของ UptimeRobot เพียงพอมาก ให้ Monitor ได้ 50 websites Check ทุก 5 นาที รับ Email Alert ได้ไม่จำกัด หากต้องการ Check ทุก 1 นาทีหรือต้องการ SMS Alert ค่อยพิจารณา Upgrade เป็น Pro Plan ในราคาเริ่มต้น $7/เดือน

Q: ควรตั้ง Cron Job Check ทุกกี่นาที?

A: ทุก 5 นาทีเหมาะสำหรับเว็บทั่วไป ทุก 1-2 นาทีสำหรับเว็บอีคอมเมิร์ซที่รับออเดอร์ตลอดเวลา แต่ควรระวังว่า Cron Job ที่ถี่มากเกินไปอาจส่งผลต่อ Performance ของ Server บน Shared Hosting ตรวจสอบนโยบาย Cron ของ Hosting Provider ก่อนเสมอ

Q: ถ้าเว็บล่มบ่อย ควรทำอย่างไร?

A: หากเว็บล่มบ่อยกว่า 99.5% ต่อเดือน ให้ดำเนินการดังนี้: 1) เก็บ Log การล่มทุกครั้งพร้อมเวลาและ Error Code 2) ติดต่อ Hosting Support พร้อมหลักฐาน 3) ถ้า Hosting ไม่แก้ไขภายใน 30 วัน พิจารณาย้าย Hosting ที่ดีกว่า บริการที่มี SLA 99.9% และ Support 24 ชั่วโมงจะช่วยลดปัญหาได้มาก