Нейронна мережа для моніторингу сервера


11

Я дивлюся на pybrain для отримання тривог монітора сервера та визначення першопричини проблеми. Я задоволений навчанням цього методу під контрольованим навчанням та курінгом наборів даних про навчання. Дані структуровані приблизно так:

  • Тип сервера A №1
    • Сигналізація типу 1
    • Сигналізація типу 2
  • Тип сервера A №2
    • Сигналізація типу 1
    • Сигналізація типу 2
  • Тип сервера B №1
    • Сигналізація типу 99
    • Сигналізація типу 2

Отже, є n серверів, з x тривогами, які можуть бути UPабо DOWN. І те, nі інше xє змінним.

Якщо сервер A1 має аварійний сигнал 1 & 2 , як DOWN, то можна сказати , що сервіс вниз на цьому сервері , і є причиною проблеми.

Якщо сигнал тривоги 1 не працює на всіх серверах, то можна сказати, що причиною є послуга a .

Можливо, існує декілька варіантів причини, тому пряма класифікація не здається доцільною.

Я також хотів би зв’язати пізніші джерела даних до мережі. Наприклад, лише сценарії, які надають доступ до зовнішньої служби.

Усі відповідні сигнали тривоги можуть не спрацьовувати відразу через перевірку серійної служби, тому вона може починатись з одного сервера, а потім через 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 місяців тому, чи можу я змусити вас підтвердити, що ви все ще цікавитесь цим, перш ніж я витрачу час на це?
Hack-R

Моєю початковою думкою було б використання випадкового лісу логістичної регресії на моделях типу сервера. Тоді ви маєте свої орієнтири, і ви швидко дізнаєтесь, якщо нейронна мережа дасть вам більше. Нейронні мережі не завжди дають найкращі результати.
користувач1269942

Відповіді:


2

На мою думку, ви розглядаєте неправильні методи вирішення своєї проблеми.

Числових даних у вас немає строго.

Машинне навчання на основі статистики дуже важко переживає подібні проблеми. Ваша проблема звучить більше як одна з проблем, яку слід вирішити за допомогою систем, заснованих на правилах. Першим моїм інстинктом було б спробувати зрозуміти правила і ввести їх у код, що веде до класифікації.

Однак існують методи вивчення таких систем, заснованих на правилах, що базуються на логіці. Вони лише сьогодні досить немодні для машинного навчання. https://en.wikipedia.org/wiki/Rule-based_system


+1, Якщо ви можете легко визначити, чи / thens вирішити проблему, то АНН не зможе перевершити чисту логічну логіку. Навіть статистичний аргумент (служба A знижується на 5/6 серверах, таким чином, послуга A знижується) краще, ніж мати справу з накладними витратами, необхідних нейронній мережі.
Дерек Янні

2

Відповідно до вищезазначеного коментаря, пропоную спробувати підхід на основі правил. Для кожного сервера, який ви маєте, запитайте його послуги. Якщо всі сервіси не працюють на сервері, у вас є проблема із сервером. Якщо для кожного сервісу жоден сервер не повідомляє про те, що ця служба запущена, у вас виникли проблеми зі службою. У випадку, якщо це обоє, ви отримаєте повідомлення про кожного, а потім зможете пройти перевірку, що відбувається з будь-яким із складових.

Вартість, технічне обслуговування та ризик поганих результатів за допомогою ANN-моделі все перевищують просте рішення, засноване на правилах, і ваш начальник, ймовірно, погладить вас по спині, просто зробивши те, що має сенс тут.

Якщо ви дуже серйозно ставитесь до того, щоб сервери та процеси були функціональними, я пропоную вам інвестувати в службу APM, яка дає вам надійні сповіщення в реальному часі про те, що відбувається у виробничих умовах.

У випадку, якщо ви просто намагаєтесь дізнатися, як працює АНН - спробуйте іншу проблему. Будь-який відомий набір даних для класифікації або виявлення аномалії надасть вам набагато більше розуміння того, як працює ANN, ніж користувацький набір даних, який може бути жахливо важко примусити до ефективної схеми навчання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.