เป็นเวลา 5 เดือนแล้วที่คุณถามคำถามนี้และหวังว่าคุณจะได้ทราบบางสิ่ง ฉันจะทำข้อเสนอแนะที่แตกต่างกันเล็กน้อยที่นี่หวังว่าคุณจะเห็นประโยชน์บางอย่างสำหรับพวกเขาในสถานการณ์อื่น ๆ
สำหรับการใช้งานของคุณฉันไม่คิดว่าคุณจะต้องดูอัลกอริธึมการตรวจจับแบบขัดขวาง
ดังนั้นนี่ไป: ลองเริ่มด้วยรูปภาพของข้อผิดพลาดที่เกิดขึ้นบนไทม์ไลน์:
สิ่งที่คุณต้องการคือตัวบ่งชี้ตัวเลข "การวัด" ว่าข้อผิดพลาดเกิดขึ้นเร็วแค่ไหน และมาตรการนี้ควรคลาดเคลื่อนไปจากการนวดข้าว - ผู้ดูแลระบบของคุณควรสามารถกำหนดขีด จำกัด ที่ควบคุมว่าข้อผิดพลาดความไวใดเปลี่ยนเป็นคำเตือน
วัด 1
คุณพูดถึง "spikes" วิธีที่ง่ายที่สุดในการรับเข็มคือวาดฮิสโตแกรมในทุก ๆ 20 นาที:
sysadmins ของคุณจะตั้งค่าความไวตามความสูงของบาร์นั่นคือข้อผิดพลาดที่ยอมรับได้มากที่สุดในช่วงเวลา 20 นาที
(ณ จุดนี้คุณอาจสงสัยว่าไม่สามารถปรับความยาวหน้าต่าง 20 นาทีได้และคุณสามารถคิดถึงความยาวของหน้าต่างเป็นการกำหนดคำด้วยกันในข้อผิดพลาดวลีที่ปรากฏขึ้นพร้อมกัน )
ปัญหาของวิธีนี้สำหรับสถานการณ์เฉพาะของคุณคืออะไร ดีตัวแปรของคุณเป็นจำนวนเต็มอาจน้อยกว่า 3 คุณจะไม่ตั้งเกณฑ์ของคุณเป็น 1 เพราะนั่นหมายถึง "ข้อผิดพลาดทุกคำเตือน" ซึ่งไม่ต้องใช้อัลกอริทึม ดังนั้นตัวเลือกของคุณสำหรับขีด จำกัด จะเท่ากับ 2 และ 3 นี่ไม่ได้ทำให้ระบบดูแลระบบของคุณมีการควบคุมที่ละเอียด
วัด 2
แทนที่จะนับข้อผิดพลาดในหน้าต่างเวลาให้ติดตามจำนวนนาทีระหว่างข้อผิดพลาดปัจจุบันและข้อผิดพลาดล่าสุด เมื่อค่านี้น้อยเกินไปหมายความว่าข้อผิดพลาดของคุณเริ่มบ่อยเกินไปและคุณต้องแจ้งเตือน
ผู้ดูแลระบบของคุณอาจตั้งค่าขีด จำกัด ไว้ที่ 10 (เช่นหากข้อผิดพลาดเกิดขึ้นน้อยกว่า 10 นาทีมันเป็นปัญหา) หรือ 20 นาที อาจใช้เวลา 30 นาทีสำหรับระบบที่มีภารกิจสำคัญน้อยกว่า
มาตรการนี้ให้ความยืดหยุ่นมากขึ้น ซึ่งแตกต่างจากการวัด 1 ซึ่งมีชุดค่าขนาดเล็กที่คุณสามารถใช้งานได้ในขณะนี้คุณมีการวัดที่ให้ค่า 20-30 ที่ดี sysadmins ของคุณจะมีขอบเขตมากขึ้นสำหรับการปรับจูน
คำแนะนำที่เป็นมิตร
มีวิธีอื่นในการแก้ไขปัญหานี้ แทนที่จะดูที่ความถี่ของข้อผิดพลาดอาจเป็นไปได้ที่จะทำนายข้อผิดพลาดก่อนที่จะเกิดขึ้น
คุณกล่าวว่าพฤติกรรมนี้เกิดขึ้นในเซิร์ฟเวอร์เดียวซึ่งทราบว่ามีปัญหาด้านประสิทธิภาพ คุณสามารถตรวจสอบตัวบ่งชี้ประสิทธิภาพหลักบางอย่างบนเครื่องนั้นและให้พวกเขาบอกคุณเมื่อเกิดข้อผิดพลาด คุณจะพิจารณาการใช้งาน CPU การใช้หน่วยความจำและ KPI ที่เกี่ยวข้องกับ Disk I / O หากการใช้งาน CPU ของคุณเกิน 80% ระบบจะช้าลง
(ฉันรู้ว่าคุณบอกว่าคุณไม่ต้องการติดตั้งซอฟต์แวร์ใด ๆ และเป็นความจริงที่คุณสามารถทำได้โดยใช้ PerfMon แต่มีเครื่องมือฟรีอยู่ที่นั่นซึ่งจะทำสิ่งนี้ให้คุณเช่นNagiosและZenoss )
และสำหรับคนที่มาที่นี่โดยหวังว่าจะได้พบกับการตรวจจับแบบสไปค์ในซีรีย์เวลา:
การตรวจจับแบบขัดขวางใน Time-Series
x1, x2, . . .
Mk= ( 1 - α ) Mk - 1+ α xk
αxk
หากค่าใหม่ของคุณเคลื่อนห่างจากค่าเฉลี่ยเคลื่อนที่มากเกินไป
xk- MkMk> 20 %
จากนั้นคุณแจ้งเตือน
ค่าเฉลี่ยเคลื่อนที่เป็นสิ่งที่ดีเมื่อทำงานกับข้อมูลเรียลไทม์ แต่สมมติว่าคุณมีกลุ่มข้อมูลอยู่ในตารางอยู่แล้วและคุณต้องการเรียกใช้คิวรี่ SQL เพื่อค้นหาสไปค์
ฉันจะแนะนำ:
- คำนวณค่าเฉลี่ยของอนุกรมเวลาของคุณ
- σ
- 2 σ
สิ่งที่สนุกสนานมากขึ้นเกี่ยวกับอนุกรมเวลา
โลกแห่งความเป็นจริงเวลา - อนุกรมแสดงพฤติกรรมวงจร มีรูปแบบที่เรียกว่าARIMAซึ่งช่วยให้คุณสามารถแยกวงจรเหล่านี้ออกจากอนุกรมเวลาของคุณได้
การย้ายค่าเฉลี่ยซึ่งคำนึงถึงพฤติกรรมที่เป็นวงรอบ: โฮลท์และวินเทอร์