用于服务器监控的神经网络


11

我正在寻找pybrain来接收服务器监视器警报并确定问题的根本原因。我很高兴使用监督学习对其进行培训并整理培训数据集。数据的结构如下:

  • 服务器类型A#1
    • 警报类型1
    • 警报类型2
  • 服务器类型A#2
    • 警报类型1
    • 警报类型2
  • 服务器类型B#1
    • 警报类型99
    • 警报类型2

因此,有n台服务器,其中x个警报可以是UPDOWN。这两个nx是可变的。

如果服务器A1的警报1和2DOWN,则可以说该服务器上的服务a已关闭,并且是问题的原因。

如果所有服务器上的警报1都关闭,则可以说服务a是原因。

原因可能有多种选择,因此直接分类似乎不合适。

我还想将以后的数据源绑定到网络上。例如只是ping某些外部服务的脚本。

由于进行了串行服务检查,因此可能不会立即触发所有适当的警报,因此可以在一分钟内关闭一台服务器,然后在五分钟后关闭另一台服务器,从而启动警报。

首先,我正在尝试做一些基本的事情:

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 2014年

我欢迎任何解决方案。神经网只是我试图利用的那个。
Matt Williamson

有趣的问题。既然您在6个月前发布了此信息,我可以花点时间刺探它,让我确认您仍然对此感兴趣吗?
Hack-R

我最初的想法是在每个服务器类型的模型上使用逻辑回归的随机森林。然后,您便有了基准,您会很快发现神经网络是否能为您带来更多收益。神经网络并不总是能提供最佳结果。
user1269942

Answers:


2

我认为您正在寻找解决问题的错误方法。

您完全没有数字数据。

基于统计的机器学习很难解决此类问题。您的问题听起来更像是基于规则的系统应解决的问题之一。我的第一个直觉是尝试理解规则并将其放入导致分类的代码中。

然而,存在用于基于逻辑学习这种基于规则的系统的方法。对于当今的机器学习来说,它们只是非常不流行。https://zh.wikipedia.org/wiki/基于规则的系统


+1,如果您可以轻松地确定解决问题的心态,那么ANN绝不会胜过纯推理逻辑。即使是统计参数(服务A在5/6服务器上关闭,因此服务A处于关闭状态)也比处理神经网络所需的开销更好。
Derek Janni

2

与上述评论一致,建议您尝试基于规则的方法。对于您拥有的每个服务器,查询其服务。如果所有服务都在服务器上关闭,则您有服务器问题。对于每个服务,如果没有服务器报告该服务正在运行,则说明该服务存在问题。在两者兼有的情况下,您将获得每一个的通知,然后能够检查任何成分的状况。

使用ANN模型的成本,维护成本和不良后果的风险都超过了基于规则的简单解决方案,您的老板可能会在这里做一些有意义的事情,反过来为您服务。

如果您真的很想保持服务器和流程的正常运行,建议您投资APM服务,该服务可以针对生产环境中发生的情况向您提供可靠的实时通知。

如果您只是想学习ANN的工作原理,请尝试其他问题。与自定义数据集相比,任何知名的用于分类或异常检测的数据集都将为您提供更多有关ANN工作原理的见解,而这很难强制成为一种有效的学习方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.