इस सवाल को पूछे जाने में आपको 5 महीने हो चुके हैं, और उम्मीद है कि आपको कुछ पता चल जाएगा। मैं यहां कुछ अलग सुझाव देने जा रहा हूं, आशा करता हूं कि आप अन्य परिदृश्यों में उनके लिए कुछ उपयोग करेंगे।
आपके उपयोग-मामले के लिए मुझे नहीं लगता कि आपको स्पाइक-डिटेक्टिंग एल्गोरिदम देखने की जरूरत है।
तो यहाँ है: चलो एक समय रेखा पर होने वाली त्रुटियों की एक तस्वीर के साथ शुरू करते हैं:
आप जो चाहते हैं वह एक संख्यात्मक संकेतक है, त्रुटियों की कितनी तेजी से "माप" आ रही है। और यह उपाय थ्रेसहोल्ड करने के लिए उत्तरदायी होना चाहिए - आपके सिस्मैडिन्स उन सीमाओं को निर्धारित करने में सक्षम होना चाहिए, जो संवेदनशीलता के साथ चेतावनी में बदल जाते हैं।
उपाय 1
आपने "स्पाइक्स" का उल्लेख किया है, स्पाइक प्राप्त करने का सबसे आसान तरीका हर 20 मिनट के अंतराल पर हिस्टोग्राम बनाना है :
आपके sysadmins सलाखों की ऊंचाइयों पर आधारित संवेदनशीलता को सेट करेंगे अर्थात 20 मिनट के अंतराल में सबसे अधिक त्रुटियां सहनीय होंगी।
(इस बिंदु पर आप सोच रहे होंगे कि 20 मिनट की खिड़की की लंबाई को समायोजित नहीं किया जा सकता है। यह कर सकते हैं, और आप खिड़की की लंबाई को एक साथ प्रदर्शित होने वाली वाक्यांश त्रुटियों में शब्द को परिभाषित करने के रूप में सोच सकते हैं ।)
आपके विशेष परिदृश्य के लिए इस पद्धति में क्या समस्या है? ठीक है, आपका चर एक पूर्णांक है, शायद 3. से कम है। आप अपनी सीमा 1 पर सेट नहीं करेंगे, क्योंकि इसका मतलब है कि "हर त्रुटि एक चेतावनी है" जिसे एल्गोरिथ्म की आवश्यकता नहीं है। इसलिए दहलीज के लिए आपकी पसंद 2 और 3 होने वाली है। यह आपके सिस्मडिन्स को पूरी तरह से दानेदार नियंत्रण नहीं देता है।
उपाय २
समय विंडो में त्रुटियों की गणना करने के बजाय, वर्तमान और अंतिम त्रुटियों के बीच मिनटों की संख्या पर नज़र रखें। जब यह मान बहुत छोटा हो जाता है, तो इसका मतलब है कि आपकी त्रुटियां बहुत अधिक हो रही हैं और आपको चेतावनी देने की आवश्यकता है।
आपके sysadmins संभवत: 10 पर सीमा निर्धारित करेंगे (अर्थात यदि त्रुटियाँ 10 मिनट से कम हो रही हैं, तो यह एक समस्या है) या 20 मिनट। शायद कम मिशन-महत्वपूर्ण प्रणाली के लिए 30 मिनट।
यह उपाय अधिक लचीलापन प्रदान करता है। उपाय 1 के विपरीत, जिसके लिए आपके द्वारा काम कर सकने वाले मूल्यों का एक छोटा समूह था, अब आपके पास एक उपाय है जो 20-30 मान प्रदान करता है। इसलिए आपके सिस्मडिन्स में फाइन-ट्यूनिंग के लिए अधिक गुंजाइश होगी।
अनुकूल सलाह
इस समस्या से निपटने का एक और तरीका है। त्रुटि आवृत्तियों को देखने के बजाय, त्रुटियों के होने से पहले उनकी भविष्यवाणी करना संभव हो सकता है।
आपने उल्लेख किया कि यह व्यवहार किसी एकल सर्वर पर हो रहा था, जिसे प्रदर्शन समस्याओं के लिए जाना जाता है। आप उस मशीन पर कुछ प्रमुख प्रदर्शन संकेतक की निगरानी कर सकते हैं , और जब कोई त्रुटि होने वाली हो तो उन्हें बता सकते हैं। विशेष रूप से, आप CPU उपयोग, मेमोरी उपयोग और KPI को डिस्क I / O से संबंधित देखेंगे। यदि आपका CPU उपयोग 80% से अधिक है, तो सिस्टम की गति धीमी हो जाएगी।
(मैं तुम्हें कहा था कि आप किसी भी सॉफ्टवेयर स्थापित करने के लिए नहीं करना चाहता था पता है, और यह आप परफ़ॉर्मेंस का उपयोग कर ऐसा कर सकता है यह सच है। लेकिन वहाँ मुफ़्त उपकरण है जो की तरह आप के लिए यह करना होगा, कर रहे हैं Nagios और Zenoss ।)
और यहां आने वाले लोगों के लिए एक समय-श्रृंखला में स्पाइक पहचान के बारे में कुछ खोजने की उम्मीद है:
टाइम-सीरीज़ में स्पाइक डिटेक्शन
एक्स1, एक्स2, । । ।
एमकश्मीर= ( 1 - α ) एमके - १+ α xकश्मीर
αएक्सकश्मीर
यदि आपका नया मान चलती औसत से बहुत दूर चला गया है, उदाहरण के लिए
एक्सकश्मीर- एमकश्मीरएमकश्मीर> 20 %
तब आप चेतावनी देते हैं।
वास्तविक समय के डेटा के साथ काम करने पर मूविंग एवरेज अच्छे होते हैं। लेकिन मान लीजिए कि आपके पास पहले से ही एक तालिका में डेटा का एक गुच्छा है, और आप स्पाइक्स को खोजने के लिए इसके खिलाफ SQL क्वेरी चलाना चाहते हैं।
मै सुझाव दूंगा:
- अपनी समय-श्रृंखला के माध्य मान की गणना करें
- σ
- 2 σ
समय श्रृंखला के बारे में अधिक मजेदार चीजें
कई वास्तविक-विश्व समय-श्रृंखला चक्रीय व्यवहार प्रदर्शित करते हैं। एआरआईएमए नामक एक मॉडल है जो आपको अपने समय-श्रृंखला से इन चक्रों को निकालने में मदद करता है।
मूविंग एवरेज जो चक्रीय व्यवहार को ध्यान में रखते हैं: होल्ट एंड विंटर्स