ช่วงนี้ระบบ Internet ที่บ้านผมเริ่มมีปัญหาบ่อยมากขึ้น รวมถึงระบบไฟฟ้าที่เริ่มมีปัญหาบ่อยขึ้น หลังจากที่มีการเดินระบบสายไฟใหม่ในบริเวณหมู่บ้าน ไฟตกบ่อยขึ้น ส่งผลต่อระบบเน็ตเวิร์คในบ้าน และหลายครั้งที่เกิดปัญหาขึ้นในขณะตัวผมเองไม่ได้อยู่ที่บ้าน ทำให้ผมต้องมองหาวิธีว่าที่จะสามารถแจ้งเตือนเมื่อเกิดปัญหาขึ้น จนมาพบกับ healthchecks.io
สิ่งที่ต้องใช้
- Account เว็บ healthchecks.io เพื่อใช้เป็นรับการ ping เพื่อเช็คว่า network ปกติ
- อุปกรณ์ในการส่ง Ping ไปยัง healthchecks.io (ผมใช้ Uptime Kuma ที่รันใน Armbian)
หลักการ
- สร้าง Checking service บน healthchecks.io เพื่อใช้เป็นตัวรับการ Ping จากอุปกรณ์ใน Home Network
- ส่ง Ping ไปยัง Healthchecks ที่สร้างไว้ โดยให้ interval อยู่ในช่วงที่กำหนดบน healthchecks
Checking service ของ Healthchecks จะทำการตรวจสอบข้อมูลการ Ping ตามกรอบเวลา ในกรณีที่เกิดปัญหากับเน็ตเวิร์คที่บ้าน อุปกรณ์ในวง Network ที่เป็นตัวส่ง Ping จะไม่สามารถส่งข้อมูลออกไปได้
เมื่อ Healthchecks ไม่ได้รับ Ping ภายในระยะเวลาที่กำหนด จะส่งแจ้งเตือนผ่านไปยัง service ต่างๆที่เรากำหนดไว้รองรับการแจ้งเตือนเยอะมากๆ

ตั้งค่า Healthchecks
- สร้าง account ทำการล็อกอินเข้าระบบ คลิก Add Check

- ตั้งค่า ชื่อ slug แท็ก ต่างๆ ส่วนสำคัญ คือ Period และ Grace Time
- Period คือ กรอบเวลาที่รับ Ping จากอุปกรณ์ ตรงนี้ผมตั้งไว้ 5 นาที (อุปกรณ์ของผมมีการ auto reboot ใช้เวลาประมาณ 3 นาที เลยทำการตั้งเวลาเผื่อไว้)
- Grace Time ตามที่ผมเข้าใจคือ ช่วงเวลาก่อนที่จะส่งแจ้งเตือน หากไม่ได้รับการ Ping (ตรงนี้ผมตั้งไว้ 3 นาที)
การตั้งกรอบเวลาทั้งสอง ไม่มีกำหนดตายตัว สามารถปรับเปลี่ยนตามบริบทของแต่ละท่านได้เลย

- คลิก Save จะปรากฎ checker ที่เราสร้างอยู่ในลิสต์เรียบร้อย

โดย ping url คือส่วนที่เราต้องการ เพื่อนำไปป้อนให้อุปกรณ์เพื่อทำการ Ping มาที่นี่ เพื่อเป็นการยืนยันว่า Home network ของเรายังออนไลน์อยู่
ตั้งค่าการแจ้งเตือน
- ไปที่ Intergrations ที่เมนูด้านบน

- เลือกช่องทางการแจ้งเตือน และทำการ Add Intergration ได้เลย ส่วนวิธีการตั้งค่าของแต่ละแพล็ตฟอร์มก็จะต่างกันออกไป

ทดลองตั้งค่าการแจ้งเตือนผ่าน Discord

สามารถ Test การแจ้งเตือนได้ว่าเราทำการตั้งค่าถูกต้องไหม (อันนี้ดีมาก)
- เมื่อตั้งค่า Intergration เรียบร้อย กลับมาที่หน้า Checks จะพบไอคอนของแพล็ตฟอร์มที่เราตั้งค่าการแจ้งเตือนเพิ่มขึ้นมา

จะสังเกตว่า email จะเป็น default อยู่แล้ว ซึ่งเราสามารถ เปิด-ปิด การแจ้งเตือนได้ทั้งหมด โดยคลิกที่ไอคอนได้เลย ไม่ต้องลบ intergration แต่อย่างใด
ตัวอย่างการใช้ Uptime Kuma ในการ Ping ไปยัง Healthchecks
ในกรณีของผม ผมมีบอร์ด Armbian อยู่ที่บ้าน ใช้ทำหน้าที่เป็น DNS Filter กรองโฆษณาหรือเว็บ spam ต่างๆ อยู่แต่เดิม และลง uptime kuma ไว้เพื่อเป็นตัว Monitor อุปกรณ์ smart device ต่างๆ ให้คอยแจ้งเตือนเมื่อผ่านแพล็ตฟอร์มต่างๆ เมื่ออุปกรณ์ตัวไหนออฟไลน์
อธิบายสั้นๆ คือ Uptime Kuma ทำหน้าที่เหมือน Healchecks เลย แต่เงื่อนไขการ Alive checking ต่างกัน โดย Healthchecks จะรับการ Ping จากอุปกรณ์เพื่อตรวจว่ายังทำงาน แต่ Uptime Kuma จะทำการ Ping ไปยังปลายทางเพื่อดู Reponse แทน
วิธีการ
- ล็อกอินเข้า Dashboard ของ Uptime Kuma
- ทำการ Add new monitor
- เลือก Monitor type เป็น HTTP(S) และ ในส่วน URL ให้ใส ping url ที่เราได้จาก healthchecks.io
- Heartbeat Interval และ Heartbeat retry ให้กำหนดระยะเวลาไม่เกินจากที่เราตั้งค่าไว้ที่ healthchecks

สังเกตว่า Notifications ผมจะทำการปิดไว้ เพราะ ในกรณีที่ Network ล่ม ตัวอุปกรณ์ภายในบ้านก็ไม่สามารถส่งข้อมูลออกไปได้อยู่แล้ว ซึ่งเราจะให้ healthchecks เป็นฝ่ายแจ้งเตือน เมื่อไม่ได้รับการ ping จาก uptime kuma แทน และเมื่อมีการแจ้งเตือนว่า Network ในบ้านล่ม ก็จะทราบได้ทันทีว่า อุปกรณ์ในบ้านตัวอื่นๆ ก็ล่มไปทั้งหมดนั่นเอง
- ทำการ Save ข้อมูล ตรวจสอบความถูกต้องที่ dashboard ของ uptime kuma

ไม่มีอะไรผิดพลาด
- ล็อกอินกลับไปที่ healthchecks > Check กด 3 จุด ท้าย checker ที่สร้างไว้เพื่อดู detail
บริเวณขวามือ ส่วนของ Event พบการ ping มาจาก uptime kuma แบบนี้ถือว่าถูกต้อง

อัพเดท
ณ วันที่ 8/10/2024 ขณะที่ผมอยู่นอกบ้าน มีแจ้งเตือนผ่าน Discord ว่าเน็ตเวิร์คที่บ้านล่ม

ทดลองผ่านสถานการณ์จริงแล้ว ถือว่าสอบผ่าน
สรุป
จากการปล่อยให้ระบบที่ตั้งไว้ทำงานผ่านไประยะหนึ่ง จนถึงปัจจุบันที่เขียนบทความนี้ ยังไม่พบปัญหาอะไร รวมถึงระบบอินเตอร์เน็ตที่บ้านยังไม่ล่ม จึงยังไม่ได้ทดสอบบนสถานการณ์จริง
ถ้าไม่ต้องการติดตั้ง uptime kuma สามารถใช้วิธีการอื่นๆ เพื่อ ping ไปยัง healthchecks แทนได้ทั้งหมด Router บางรุ่นที่สามารถ interval ping ก็สามารถทำได้
- สามารถใช้ cron ในการจัดการ ping แทนก็ได้ แต่ที่ผมเลือก uptime kuma เพราะมันมี dashboard ให้ดูผ่าน browser ได้เลย ไม่ต้อง ssh เข้าตัว armbian ให้ยุ่งยากเพียงเพื่อจะดู log file ไม่กี่ตัว
- สามารถใช้วิธี ติดตั้ง uptime kuma จาก hosting นอก home network แล้ว monitor กลับมาตรวจสอบอุปกรณ์ใน home network ก็สามารถทำได้เช่นกัน แต่ผมไม่ได้ใช้วิธีนี้ ส่วนตัวได้ลองเปรียบเทียบกันพบว่า ต้อง setup และจัดการ port กันวุ่นวายพอสมควร
สุดท้ายนี้ หวังว่าจะเป็นไอเดียใหม่ๆ ให้ผู้อ่านไปทดลองและต่อยอดเพิ่มเติมได้บ้างนะครับ