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

ลูกค้าอาจจ่ายเงินสำเร็จ แต่รายการหยุดก่อนถึงคนแพ็ก แม้หน้าเว็บยังเปิดได้ตามปกติ สิ่งที่น่าดูคือรายการไปถึงไหน ค้างนานกว่าปกติหรือยัง และถ้ารอถึงรอบตรวจถัดไปจะพลาดรอบส่งของไหม ส่วนกราฟ CPU กับ log ซึ่งเป็นบันทึกการทำงานของระบบ ช่วยตามต่อว่าอะไรทำให้รายการค้าง
Google SRE อธิบายเรื่องการแยกอาการออกจากสาเหตุ ไว้คือดูว่างานส่วนไหนเสีย แล้วค่อยหาว่าทำไม กราฟทรัพยากรยังมีประโยชน์ แต่ถ้าจะให้เรียกคนกลางคืน ก็ควรบอกถึงปัญหาที่รอไม่ได้ เช่น พื้นที่ใกล้หมดจนรับคำสั่งซื้อเพิ่มไม่ได้ก่อนเช้า
กลับมาที่ CPU ถ้าสูงเฉพาะช่วงสรุปยอด งานเสร็จตามปกติ และคำสั่งซื้อยังเดิน ผมยอมให้กราฟนี้อยู่ในรายงานเพื่อดูแนวโน้มก่อน แลกกับการไม่รู้ทุกครั้งทันทีที่ตัวเลขขึ้นสูง แต่ถ้างานเริ่มช้าลงจนรายการสะสม การตัดสินใจเดิมก็ต้องเปลี่ยนตามอาการที่เห็น
งานที่รอได้ยังต้องมีคนตาม เช่น พื้นที่ลดลงต่อเนื่องแต่เหลือเวลาจัดการ ให้สร้างงานไว้กับผู้ดูแลและตกลงว่าจะตรวจรอบไหน
ถ้ามีหลักฐานว่าข้อมูลลูกค้าถูกเปิดให้คนนอก คนรับอาจต้องรีบตรวจและจำกัดการเข้าถึง แม้คำสั่งซื้อยังเดิน เกณฑ์ว่าจะปลุกจึงต้องดูสิ่งที่จะเสียเพิ่มระหว่างรอด้วย
ถ้าต้องเรียกตอนนี้ ใครทำอะไรได้บ้าง

เมื่อตกลงว่าคำสั่งซื้อค้างต้องเรียกคนรับผิดชอบเข้ามาแก้ไขปัญหาทันที ข้อความว่า “Critical” ที่ส่งเข้ากลุ่มแชตยังช่วยคนรับข้อความได้น้อย เขาต้องรู้ว่าระบบไหนมีปัญหา เริ่มเห็นอาการเมื่อไร และเปิดดูรายการค้างตรงไหน ข้อความที่พาไปดูหลักฐานช่วยให้เริ่มตรวจง่ายกว่าป้ายสีแดง
ให้ลิงก์ไปหน้ารายการค้างที่คนรับเปิดได้ ส่วนข้อมูลลูกค้ากับค่าลับเก็บไว้ในระบบที่จำกัดสิทธิ์ จากนั้นระบุว่าใครรับผิดชอบในช่วงเวลานั้น ถ้าคนรับผิดชอบหลักไม่ตอบจะติดต่อใครต่อ ห้องแชตช่วยให้ทีมเห็นเรื่องเดียวกัน แต่ต้องมีคนตอบรับด้วยว่ารับไปตรวจแล้ว
เพื่อนร่วมงานที่รับช่วงไม่จำเป็นต้องซ่อมได้ทุกอย่าง เขาอาจเปิดดูว่ารายการหยุดจริง ติดต่อผู้ให้บริการ และแจ้งคนแพ็กให้ใช้วิธีทำงานชั่วคราวที่ทีมตกลงไว้ สิ่งที่ต้องถามต่อคือเขามีสิทธิ์เปิดหน้ารายการไหม และรู้หรือไม่ว่าต้องโทรหาใคร ถ้าทุกทางยังต้องรอผู้ดูแลคนเดิม การมีชื่อสำรองก็ยังไม่ช่วยให้ส่งของต่อได้
เวลาที่ต้องเริ่มตรวจควรแยกจากเวลาซ่อมเสร็จ เพราะคนรับอาจยืนยันปัญหาและหาทางให้งานเดินต่อได้ก่อนรู้สาเหตุทั้งหมด ช่วงเวลารับเรื่องต้องมาจากผลเสียของการรอและคนที่จัดไว้จริง
ถ้ากิจการต้องรับมือกลางคืน ก็ต้องจัดคนหรือบริการรับช่วง พร้อมค่าใช้จ่ายและเวลาพัก ถ้ายังจัดไม่ได้ เจ้าของกิจการต้องรู้ว่าจะกระทบงานอย่างไร การเปิดส่งข้อความตลอดคืนทำได้ง่ายกว่าการจัดคนดูแลตลอดคืนมากครับ
ลองส่งข้อความทดสอบให้คนสำรองเปิดหลักฐานและติดต่อคนถัดไป จะเห็นว่าติดที่สิทธิ์หรือช่องทางไหน ส่วนกฎตรวจจับต้องทดสอบแยกว่ามองเห็นอาการจริง การเห็นโทรศัพท์ดังตอบได้เพียงว่าข้อความส่งมาถึง
ทำให้เหตุเดียวไม่กลายเป็นหลายงาน
คำสั่งซื้อค้างครั้งเดียวอาจทำให้ทั้งงานส่งข้อมูลและระบบปลายทางแจ้งปัญหาตามกัน ถ้าทุกข้อความแยกเรียกคน ผู้ดูแลต้องไล่อ่านก่อนรู้ว่ากำลังตรวจเหตุเดียวกันอยู่ Prometheus Alertmanager มีวิธีจัดกลุ่ม ลดข้อความซ้ำ และเลือกปลายทางรับเรื่อง แนวคิดนี้ช่วยให้คนรับเห็นงานที่ต้องทำชัดขึ้น แม้ทีมจะใช้เครื่องมืออื่นที่มีความสามารถต่างกัน
อาการสั้น ๆ ที่หายเองอาจลดการแจ้งได้ด้วยการรอดูว่าเกิดต่อเนื่องหรือไม่ ตามแนวทาง Alerting ของ Prometheus แต่เวลารอควรเหมาะกับสิ่งที่กำลังตรวจ ถ้ารายการกำลังสูญหายหรือข้อมูลกำลังถูกเปิดเผย การหน่วงเพื่อให้โทรศัพท์เงียบลงอาจเพิ่มความเสียหาย ส่วนการพักแจ้งระหว่างบำรุงรักษาควรเลือกเฉพาะกฎที่เกี่ยวข้องและมีเวลาสิ้นสุด จะได้ไม่ลืมเปิดกลับหลังงานจบ

หลังใช้งานไปสักรอบ เอาข้อความที่ดังมาคุยกับคนรับว่าเปิดดูแล้วต้องทำอะไร และช่วยให้คำสั่งซื้อเดินต่อเร็วขึ้นไหม ถ้า CPU สูงจริงแต่ไม่มีงานให้ทำ ปัญหาอาจอยู่ที่เลือกให้มันเรียกคนผิดจังหวะ การย้ายไปดูในรายงานเหมาะกว่าขยับเกณฑ์จนมองไม่เห็นอาการ ส่วนกรณีที่คนแพ็กพบรายการค้างก่อนระบบแจ้ง ก็ควรกลับไปดูว่ากฎพลาดตรงไหน
ผมอยากให้ระบบนี้เหลือข้อความที่คนรับอ่านแล้วรู้ว่าจะเริ่มตรงไหน งานที่รอได้อยู่ในรอบตรวจที่มีคนตาม และกราฟยังหาเจอเมื่อต้องใช้ วันไหนคำสั่งซื้อหยุดเดิน โทรศัพท์ที่ดังควรพาเรื่องไปถึงคนที่ช่วยให้งานเดินต่อได้จริงครับ
อ่านต่อที่เกี่ยวข้อง
- Post-Incident Review สำหรับทีมเล็ก สำหรับนำสิ่งที่เกิดขึ้นกับการรับเหตุไปปรับงานโดยไม่โทษคน