सर्वर की निगरानी के लिए तंत्रिका जाल


11

मैं सर्वर मॉनिटर अलार्म लेने और एक समस्या का मूल कारण निर्धारित करने के लिए pybrain देख रहा हूं। मैं पर्यवेक्षित शिक्षण और प्रशिक्षण डेटा सेटों का उपयोग करके प्रशिक्षण से खुश हूं। डेटा कुछ इस तरह संरचित है:

  • सर्वर प्रकार A # 1
    • अलार्म टाइप 1
    • अलार्म टाइप 2
  • सर्वर प्रकार # 2
    • अलार्म टाइप 1
    • अलार्म टाइप 2
  • सर्वर प्रकार बी # 1
    • अलार्म टाइप 99
    • अलार्म टाइप 2

तो n सर्वर हैं, एक्स अलार्म के साथ हैं जो UPया हो सकते हैं DOWN। दोनों nऔर xचर रहे हैं।

यदि सर्वर A1 में अलार्म 1 और 2 है DOWN, तो हम कह सकते हैं कि सेवा उस सर्वर पर डाउन है और समस्या का कारण है।

यदि सभी सर्वरों पर अलार्म 1 डाउन है, तो हम कह सकते हैं कि सेवा एक कारण है।

संभावित रूप से कारण के लिए कई विकल्प हो सकते हैं, इसलिए सीधे वर्गीकरण उचित नहीं लगता है।

मैं नेट के डेटा के बाद के स्रोतों को भी जोड़ना चाहूंगा। जैसे कि स्क्रिप्ट्स जो किसी बाहरी सेवा को पिंग करती हैं।

धारावाहिक सेवा की जाँच के कारण सभी उपयुक्त अलार्म को एक बार में चालू नहीं किया जा सकता है, इसलिए यह एक सर्वर डाउन और फिर 5 मिनट बाद किसी अन्य सर्वर के साथ शुरू हो सकता है।

मैं पहली बार में कुछ बुनियादी चीजें करने की कोशिश कर रहा हूं:

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer


INPUTS = 2
OUTPUTS = 1

# Build network

# 2 inputs, 3 hidden, 1 output neurons
net = buildNetwork(INPUTS, 3, OUTPUTS)


# Build dataset

# Dataset with 2 inputs and 1 output
ds = SupervisedDataSet(INPUTS, OUTPUTS)


# Add one sample, iterable of inputs and iterable of outputs
ds.addSample((0, 0), (0,))



# Train the network with the dataset
trainer = BackpropTrainer(net, ds)

# Train 1000 epochs
for x in xrange(10):
    trainer.train()

# Train infinite epochs until the error rate is low
trainer.trainUntilConvergence()


# Run an input over the network
result = net.activate([2, 1])

लेकिन मैं इनपुट की स्थिर संख्या के लिए अलार्म की चर संख्याओं की मैपिंग में एक कठिन समय हूं। उदाहरण के लिए, यदि हम किसी सर्वर में अलार्म जोड़ते हैं, या सर्वर जोड़ते हैं, तो पूरे नेट को फिर से बनाना पड़ता है। यदि ऐसा कुछ है जिसे करने की आवश्यकता है, तो मैं इसे कर सकता हूं, लेकिन जानना चाहता हूं कि क्या बेहतर तरीका है।

एक अन्य विकल्प, जिसके बारे में मैं सोचने की कोशिश कर रहा हूं, प्रत्येक प्रकार के सर्वर के लिए एक अलग जाल है, लेकिन मैं यह नहीं देखता कि मैं एक पर्यावरण-विस्तृत निष्कर्ष कैसे निकाल सकता हूं, क्योंकि यह केवल एक मेजबान पर मूल्यांकन करने के बजाय प्रयास करेगा सभी एक ही बार में होस्ट करते हैं।

मुझे किस प्रकार के एल्गोरिथ्म का उपयोग करना चाहिए और मैं चर इनपुट के साथ संपूर्ण रूप से पर्यावरण-विस्तृत निष्कर्ष निकालने के लिए डेटासेट कैसे मैप करता हूं?


अन्य वर्गीकरण विधियाँ यहाँ उपयुक्त क्यों नहीं हैं? लगता है कि आप कई मामलों से संबंधित हैं जो आउटपुट के कम सेट की ओर ले जाते हैं। लेकिन यह मूल रूप से वर्गीकरण में सीखने के प्रतिनिधित्व का हर मामला है। तंत्रिका जाल आपको यह पता लगाने में मदद करेंगे कि जब आधार विशेषताएं बहुत अधिक अनुमानित नहीं हैं तो इंटरैक्शन प्रभाव क्या है। अन्यथा आप अन्य तरीकों का उपयोग कर सकते हैं।
cwharland

मैं किसी भी समाधान का स्वागत करता हूं। तंत्रिका जाल सिर्फ मैं उपयोग करने का प्रयास कर रहा था।
मैट विलियमसन

दिलचस्प समस्या है। जब से आपने इसे 6 महीने पहले पोस्ट किया है, क्या मैं आपको इस बात की पुष्टि करने के लिए मिल सकता हूं कि आप अभी भी इसमें रुचि रखते हैं इससे पहले कि मैं इस पर एक स्टैब लेने में समय बिताऊं?
हैक-आर

मेरा शुरुआती विचार प्रति सर्वर-टाइप मॉडल पर लॉजिस्टिक रिग्रेशन के यादृच्छिक वन का उपयोग करना होगा। तब आपके पास अपने बेंचमार्क होते हैं और यदि आप एक तंत्रिका जाल आपको अधिक देंगे तो आपको बहुत जल्दी पता चल जाएगा। तंत्रिका जाल हमेशा सबसे अच्छा परिणाम नहीं देते हैं।
user1269942

जवाबों:


2

मेरी राय में आप अपनी समस्या को हल करने के लिए गलत तरीकों को देख रहे हैं।

आपके पास कोई संख्यात्मक डेटा नहीं है।

ऐसी समस्याओं के साथ सांख्यिकी आधारित मशीन सीखने का बहुत कठिन समय होता है। आपकी समस्या उन समस्याओं में से एक है जो नियम आधारित प्रणालियों के साथ हल की जानी चाहिए। मेरी पहली वृत्ति नियमों को समझने और उन्हें एक वर्गीकरण की ओर ले जाने वाले कोड में डालने की होगी।

तर्क के आधार पर इस तरह के नियम आधारित सिस्टम सीखने के लिए कुछ तरीके हैं। वे आज मशीन सीखने के लिए केवल काफी फैशनेबल हैं। https://en.wikipedia.org/wiki/Rule-based_system


+1, यदि आप आसानी से पता लगा सकते हैं कि क्या / अगर किसी समस्या से निपटने के लिए कोई रास्ता नहीं है तो एएनएन शुद्ध हीनतापूर्ण तर्क को बेहतर बनाने वाला है। यहां तक ​​कि एक सांख्यिकीय तर्क (सेवा ए नीचे 5/6 सर्वर पर है, इस प्रकार सेवा ए नीचे है) ओवरहेड से निपटने से बेहतर है जो एक न्यूरल नेट की आवश्यकता होती है।
डेरेक जननी

2

उपरोक्त टिप्पणी के अनुरूप, मेरा सुझाव है कि आप एक नियम-आधारित दृष्टिकोण का प्रयास करें। आपके पास प्रत्येक सर्वर के लिए, उसकी सेवाओं को क्वेरी करें। यदि सभी सेवाएँ किसी सर्वर पर डाउन हैं, तो आपको सर्वर की समस्या है। प्रत्येक सेवा के लिए, यदि कोई सर्वर रिपोर्ट नहीं करता है कि सेवा चल रही है, तो आपको सेवा में समस्या है। इस मामले में कि यह दोनों है, आप प्रत्येक के लिए नोटिस प्राप्त करेंगे और फिर निरीक्षण में जाने में सक्षम होंगे कि किसी भी घटक के साथ क्या हो रहा है।

एएनएन मॉडल का उपयोग करके खराब परिणामों की लागत, रखरखाव, और जोखिम सभी सरल, नियम-आधारित समाधान से अधिक है और आपके बॉस शायद आपको पीठ पर थपथपाएंगे कि यहां क्या करना है।

यदि आप अपने सर्वरों और प्रक्रियाओं को क्रियाशील रखने के बारे में वास्तव में गंभीर हैं, तो मेरा सुझाव है कि आप एपीएम सेवा में निवेश करें जो आपको विश्वसनीय, वास्तविक समय की सूचना देता है कि आपके उत्पादन वातावरण में क्या हो रहा है।

इस मामले में कि आप केवल यह जानने की कोशिश कर रहे हैं कि एएनएन कैसे काम करता है - एक अलग समस्या का प्रयास करें। वर्गीकरण या विसंगति का पता लगाने के लिए कोई भी प्रसिद्ध डेटासेट आपको अधिक जानकारी प्रदान करेगा कि एएनएन कस्टम डेटासेट की तुलना में कैसे काम करता है, जो कि एक प्रभावी शिक्षण योजना में तालमेल के लिए बहुत कठिन हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.