Sunucu izleme için sinir ağı


11

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 UPveya DOWN. Her ikisi de nve xdeğişkendir.

Sunucu A1 alarm 1 & 2 olarak DOWNatandı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?


Neden diğer sınıflandırma yöntemleri burada uygun değil? Çıktıların azalmasına neden olan birden fazla durumla ilgileniyorsunuz gibi geliyor. Ancak bu temel olarak sınıflandırmada her temsil öğrenme vakasıdır. Sinir ağları, temel özellikler çok öngörücü olmadığında hangi etkileşim etkilerinin öngörücü olduğunu belirlemenize yardımcı olacaktır. Aksi takdirde başka yöntemler kullanabilirsiniz.
cwharland

Herhangi bir çözümü memnuniyetle karşılıyoruz. Sinir ağı sadece kullanmaya çalıştığım ağdı.
Matt Williamson

İlginç bir sorun. Bunu 6 aydan daha önce yayınladığınızdan beri, bir bıçaklamaya zaman ayırmadan önce hala bununla ilgilendiğinizi onaylamanızı sağlayabilir miyim?
Hack-R

İlk düşüncem sunucu tipi modellerde rastgele bir lojistik regresyon ormanı kullanmak olacaktır. Öyleyse kriterleriniz var ve bir sinir ağının size daha fazlasını vereceğini hemen öğreneceksiniz. Sinir ağları her zaman en iyi sonuçları vermez.
user1269942

Yanıtlar:


2

Bence sorununuzu çözmek için yanlış yöntemleri araştırıyorsunuz.

Kesinlikle sayısal verileriniz yok.

İstatistik tabanlı makine öğrenimi bu tür sorunlarla çok zor bir zaman geçirir. Sorununuz, kural tabanlı sistemlerle çözülmesi gereken sorunlardan birine benziyor. İlk içgüdüm, kuralları anlamaya çalışmak ve onları bir sınıflandırmaya götüren koda koymak olacaktır.

Bununla birlikte, mantığa dayalı bu tür kural tabanlı sistemleri öğrenme yöntemleri vardır. Bugün sadece makine öğrenimi için oldukça modası geçmişlerdir. https://en.wikipedia.org/wiki/Rule-based_system


+1, Eğer bir problemle başa çıkmak için / thens'i kolayca haritalayabilirseniz, YSA'nın saf çıkarımsal mantıktan daha iyi performans göstermesinin bir yolu yoktur. İstatistiksel bir argüman bile (A hizmeti 5/6 sunucusunda kapalıdır, dolayısıyla A servisi kapalıdır), Sinir Ağının gerektirdiği yükü ele almaktan daha iyidir.
Derek Janni

2

Yukarıdaki yoruma uygun olarak, kural tabanlı bir yaklaşım denemenizi öneririz. Sahip olduğunuz her sunucu için hizmetlerini sorgulayın. Tüm hizmetler bir sunucuda çalışmıyorsa, bir sunucu sorununuz vardır. Her hizmet için, hiçbir sunucu hizmetin çalıştığını bildirmezse, hizmetle ilgili bir sorununuz vardır. Her ikisinin de olması durumunda, her biri için bildirimler alacak ve daha sonra herhangi bir bileşenle neler olup bittiğini denetleyebileceksiniz.

Bir YSA modeli kullanarak maliyet, bakım ve kötü sonuç riski basit, kural tabanlı çözümü aşar ve patronunuz muhtemelen burada mantıklı olanı yapmak için sizi arkaya patlatacaktır.

Sunucularınızı ve işlemlerinizi işlevsel tutma konusunda gerçekten ciddiyseniz, size üretim ortamınızda olup bitenler hakkında güvenilir, gerçek zamanlı bildirimler veren bir APM hizmetine yatırım yapmanızı öneririm.

YSA'nın nasıl çalıştığını öğrenmeye çalışıyorsanız - farklı bir sorun deneyin. Sınıflandırma veya anormallik tespiti için iyi bilinen herhangi bir veri kümesi, YSA'nın nasıl çalıştığı hakkında, özel bir veri kümesinden çok daha fazla bilgi sağlayacaktır; bu, etkili bir öğrenme şemasına zorlamak zor olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.