Saya melihat pybrain untuk mengambil alarm monitor server dan menentukan akar penyebab masalah. Saya senang melatihnya menggunakan pembelajaran terawasi dan menyusun set data pelatihan. Data terstruktur seperti ini:
- Server Tipe A # 1
- Jenis alarm 1
- Jenis alarm 2
- Server Type A # 2
- Jenis alarm 1
- Jenis alarm 2
- Server Type B # 1
- Jenis alarm 99
- Jenis alarm 2
Jadi ada n server, dengan x alarm yang bisa UP
atau DOWN
. Keduanya n
dan x
variabel.
Jika Server A1 memiliki alarm 1 & 2 sebagai DOWN
, maka kita dapat mengatakan bahwa layanan a turun di server itu dan merupakan penyebab masalah.
Jika alarm 1 tidak aktif di semua server, maka kita dapat mengatakan bahwa layanan a adalah penyebabnya.
Mungkin ada beberapa opsi untuk penyebabnya, jadi klasifikasi langsung sepertinya tidak tepat.
Saya juga ingin mengikat sumber data nanti ke internet. Seperti hanya skrip yang melakukan ping beberapa layanan eksternal.
Semua alarm yang tepat mungkin tidak terpicu sekaligus, karena pemeriksaan layanan serial, sehingga dapat mulai dengan satu server turun dan kemudian server lain turun 5 menit kemudian.
Saya mencoba melakukan beberapa hal dasar pada awalnya:
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])
Tetapi saya mengalami kesulitan memetakan sejumlah variabel alarm ke jumlah input statis. Misalnya, jika kita menambahkan alarm ke server, atau menambahkan server, seluruh jaringan perlu dibangun kembali. Jika itu adalah sesuatu yang perlu dilakukan, saya bisa melakukannya, tetapi ingin tahu apakah ada cara yang lebih baik.
Pilihan lain yang saya coba pikirkan adalah memiliki jaring yang berbeda untuk setiap jenis server, tetapi saya tidak melihat bagaimana saya bisa menarik kesimpulan yang luas, karena hanya akan melakukan evaluasi pada satu host, bukan semua host sekaligus.
Jenis algoritma apa yang harus saya gunakan dan bagaimana cara memetakan dataset untuk menarik kesimpulan seluruh lingkungan dengan input variabel?