Sunucu monitör alarmları almak ve bir sorunun kök nedenini belirlemek için pybrain bakıyorum. Denetimli öğrenmeyi kullanarak ve eğitim veri setlerini iyileştirerek eğitimden memnunum. Veriler şu şekilde yapılandırılmıştır:
- Sunucu Tipi A # 1
- Alarm türü 1
- Alarm tipi 2
- Sunucu Tipi A # 2
- Alarm türü 1
- Alarm tipi 2
- Sunucu Tipi B # 1
- Alarm türü 99
- Alarm tipi 2
Yani n sunucu vardır, x alarmları olabilir UP
veya DOWN
. Her ikisi de n
ve x
değişkendir.
Sunucu A1 alarm 1 & 2 olarak DOWN
atandıysa, hizmet a'nın bu sunucuda kapalı olduğunu ve sorunun nedeni olduğunu söyleyebiliriz .
Eğer alarm 1 tüm sunucularda aşağı, o zaman diyebiliriz hizmeti bir nedenidir.
Nedeni için potansiyel olarak birden fazla seçenek olabilir, bu nedenle düz sınıflandırma uygun görünmemektedir.
Ayrıca daha sonraki veri kaynaklarını ağa bağlamak istiyorum. Bazı dış hizmetlere ping komutları gibi.
Seri servis kontrolleri nedeniyle tüm uygun alarmlar bir kerede tetiklenmeyebilir, bu nedenle bir sunucu kapalı, ardından 5 dakika sonra başka bir sunucu ile başlayabilir.
İlk başta bazı temel şeyler yapmaya çalışıyorum:
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])
Ancak değişken sayıda alarmı statik giriş sayısına eşleştirmekte zorlanıyorum. Örneğin, bir sunucuya alarm eklersek veya bir sunucu eklersek, tüm ağın yeniden oluşturulması gerekir. Bu yapılması gereken bir şeyse, yapabilirim, ancak daha iyi bir yol olup olmadığını bilmek istiyorum.
Düşünmeye çalıştığım başka bir seçenek, her sunucu türü için farklı bir ağa sahip olmakla birlikte, çevre çapında bir sonuç nasıl çizebileceğimi görmüyorum, çünkü sadece tek bir ana bilgisayar yerine değerlendirmeler yapacak tüm ana bilgisayarlar bir kerede.
Hangi algoritma türünü kullanmalıyım ve değişken girdilerle bir bütün olarak ortam çapında sonuçlar çıkarmak için veri kümesini nasıl eşleyebilirim?