서버 모니터 알람을 가져와 문제의 근본 원인을 확인하기 위해 pybrain을 찾고 있습니다. 감독 학습을 사용하고 교육 데이터 세트를 관리하여 교육에 만족합니다. 데이터는 다음과 같이 구성됩니다.
- 서버 유형 A # 1
- 경보 유형 1
- 경보 유형 2
- 서버 유형 A # 2
- 경보 유형 1
- 경보 유형 2
- 서버 유형 B # 1
- 경보 유형 99
- 경보 유형 2
따라서 x 개의 알람이있는 또는 n 개의 서버 가 n 개 있습니다. 모두 와 변수입니다.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])
그러나 나는 다양한 수의 알람을 정적 입력 수에 매핑하는 데 어려움을 겪고 있습니다. 예를 들어, 서버에 알람을 추가하거나 서버를 추가하는 경우 전체 네트를 재 구축해야합니다. 그것이해야 할 일이라면 할 수는 있지만 더 좋은 방법이 있는지 알고 싶습니다.
내가 생각하고있는 또 다른 옵션은 각 유형의 서버마다 다른 그물을 가지고 있지만 환경 전반에 걸친 결론을 도출하는 방법을 알 수는 없습니다. 한 번에 모든 호스트.
어떤 유형의 알고리즘을 사용해야하며 변수 입력을 사용하여 환경 전체의 결론을 전체적으로 도출하기 위해 데이터 집합을 어떻게 매핑합니까?