ตัวตรวจสอบระบบของเราเริ่มบริการที่เราตั้งใจหยุดไว้ใหม่

ปฏิบัติการ

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

เหตุผลที่ตัวตรวจสอบระบบตัวนี้มีอยู่

บริการที่จบการทำงานอย่างเรียบร้อยเมื่อได้รับ SIGTERM ตัวอย่างเช่นเพราะมีบางสิ่งฆ่ามันโดยระบุชื่อ จะไม่ถือว่า "failed" ในมุมมองของ systemd Restart=on-failure จะไม่เริ่มมันกลับมา และ systemctl --failed จะไม่แสดงรายการมัน มันจะหยุดนิ่งจนกว่าจะมีใครบังเอิญสังเกตเห็น ดังนั้นตัวตรวจสอบระบบจึงมองหาบริการที่เปิดใช้งานไว้แต่ไม่ได้ทำงาน แล้วเริ่มมัน

ปัญหาอยู่ที่ว่าบริการที่คุณหยุดด้วยมือจะดูเหมือนกันเป๊ะ

ครั้งแรก

เมื่อวันที่ 7 ตุลาคม เราหยุดตัวประมวลผลวิดีโอด้วย systemctl stop เวลา 12:47 เพื่อแก้ไขคิวงานของมัน เวลา 12:55 มันกลับมาทำงานอีกครั้ง: ตัวตรวจสอบระบบได้เริ่มมัน

ครั้งที่สอง

เมื่อวันที่ 21 ตุลาคม เราต้องการหน่วยความจำของเครื่องที่ให้บริการเว็บไซต์สองแห่งของเราสำหรับการทดสอบโมเดล สคริปต์หนึ่งได้หยุดเว็บแอปของเว็บไซต์ งานซิงก์ และคอนเทนเนอร์ฐานข้อมูล อีกครั้งด้วย systemctl stop ประมาณห้านาทีต่อมา ตัวจับเวลาที่คอยดูเว็บไซต์ และเวลา 19:14 ตัวตรวจสอบระบบ ได้เริ่มอุโมงค์และเว็บแอปกลับมา

อุโมงค์รับทราฟฟิกอีกครั้ง แต่เว็บแอปไม่สามารถตอบกลับได้: โมเดลที่อยู่ระหว่างการทดสอบครอบครองหน่วยความจำของเครื่องไว้ 114 GiB ตั้งแต่ประมาณ 19:14 ถึง 20:00 ผู้เข้าชมบางรายพบข้อผิดพลาด 502 เวลา 20:00 เราปิดใช้งานอุโมงค์ เว็บแอป และงานซิงก์ และหยุดตัวจับเวลา

กฎที่เราใช้ตอนนี้

กับดัก systemd อีกสองข้อจากเดือนเดียวกัน

Factory Floor เฝ้าดูบริการที่เปิดใช้งานแต่ไม่ได้ทำงาน โดยค่าเริ่มต้นมันจะรายงานเท่านั้น และจะเริ่มบริการให้ก็ต่อเมื่อคุณเปิดใช้ตัวเลือกนั้น ตั้งแต่เวอร์ชัน 1.0.3 การแจ้งเตือนของมันยังบอกวิธีระงับบริการอย่างจงใจ และ runbook ของมันก็บอกแบบเดียวกัน

อัปเดตแล้ว: