ในการแบ่งปันความรู้เรื่องของ observability ของ service หรือ ระบบงานนั้น
หนึ่งในเรื่องที่น่าสนใจคือ
การตรวจสอบ และ การ alert เพื่อแจ้งเตือนการทำงานที่ไม่ปกติแบบอัตโนมัติ
เพื่อให้เรารู้ปัญหา และ จุดเกิดเหตุได้รวดเร็วยิ่งขึ้น
จากนั้นก็จะช่วยให้เราแก้ไขได้รวดเร็วมากยิ่งขึ้น
หรือช่วยปรับปรุงเรื่องของ MTTR (Mean Time to Recovery/Repair) ให้ดีขึ้น

แน่นอนว่า ก่อนจะใช้เครื่องมือเราก็ต้อง คิด วิเคราะห์ และ ออกแบบก่อนว่า

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

เช่นถ้าต้องการทำการตรวจสอบจากมุมมองของผู้ใช้งาน
ก็ต้องทำการสร้างระบบให้ตรวจสอบระบบงานของเราอยู่ตลอดเวลา
เช่น ทำการแบบ interval ให้ยิง หรือ ส่ง request มายังระบบเราทุก ๆ x วินาที/นาที เป็นต้น
ถ้ามีข้อผิดพลาดขึ้นมา ก็ทำการส่งปัญหานั้นมายังช่องทางต่าง ๆ ของทีม
ทั้ง email, message และระบบ alert/notification ต่าง ๆ ก็ว่ากันไป

จากนั้นก็มาดูเครื่องมือว่า มีอะไรให้ใช้งานกันบ้าง ?

ถ้าแบบติดตั้งง่าย ๆ และใช้งานง่าย ๆ และ ฟรีก็ เช่น

  • Gatus.io
  • Uptime Kuma หรือ ถ้าขี้เกียจติดตั้งเองก็ใช้งานผ่าน UptimeRobot
  • ถ้าใช้กับ Docker + Uptime Kuma ก็ใช้งานผ่าน AutoKuma

หรือถ้าต้องการจัดเก็บพวก metric ต่าง ๆ เอง
ก็สามารถใช้งาน

  • Prometheus สำหรับจัดเก็บ metric data
  • โดยที่ prometheus มี exporter เพื่อดึงข้อมูลจาก software ต่าง ๆ ออกมา พร้อมก็มี library ของภาษาโปรแกรมต่าง ๆ ให้ใช้งาน
  • จากนั้นทำการเขียน alert rule เพื่อใช้งานกับ alert manager ได้เลย

หรือใน code ของระบบงานนั้น เมื่อเกิดปัญหาขึ้นมาแล้ว
เราสามารถ integrate เข้ากับระบบ alert ได้เลย
ไม่ต้องมาเสียเวลาเพื่อวิเคราะห์ metric หรือ log
ซึ่งวิธีนี้เรียกว่า Exception tracking นั่นเอง

ก็เป็นอีกทางเลือกหนึ่งที่น่าสนใจ

เป้าหมายหลัก ๆ ของระบบนี้คือ

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

เน้นคุณภาพ มากกว่า ปริมาณ