मैं सर्वर मॉनिटर अलार्म लेने और एक समस्या का मूल कारण निर्धारित करने के लिए 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])
लेकिन मैं इनपुट की स्थिर संख्या के लिए अलार्म की चर संख्याओं की मैपिंग में एक कठिन समय हूं। उदाहरण के लिए, यदि हम किसी सर्वर में अलार्म जोड़ते हैं, या सर्वर जोड़ते हैं, तो पूरे नेट को फिर से बनाना पड़ता है। यदि ऐसा कुछ है जिसे करने की आवश्यकता है, तो मैं इसे कर सकता हूं, लेकिन जानना चाहता हूं कि क्या बेहतर तरीका है।
एक अन्य विकल्प, जिसके बारे में मैं सोचने की कोशिश कर रहा हूं, प्रत्येक प्रकार के सर्वर के लिए एक अलग जाल है, लेकिन मैं यह नहीं देखता कि मैं एक पर्यावरण-विस्तृत निष्कर्ष कैसे निकाल सकता हूं, क्योंकि यह केवल एक मेजबान पर मूल्यांकन करने के बजाय प्रयास करेगा सभी एक ही बार में होस्ट करते हैं।
मुझे किस प्रकार के एल्गोरिथ्म का उपयोग करना चाहिए और मैं चर इनपुट के साथ संपूर्ण रूप से पर्यावरण-विस्तृत निष्कर्ष निकालने के लिए डेटासेट कैसे मैप करता हूं?