서버 모니터링을위한 신경망


11

서버 모니터 알람을 가져와 문제의 근본 원인을 확인하기 위해 pybrain을 찾고 있습니다. 감독 학습을 사용하고 교육 데이터 세트를 관리하여 교육에 만족합니다. 데이터는 다음과 같이 구성됩니다.

  • 서버 유형 A # 1
    • 경보 유형 1
    • 경보 유형 2
  • 서버 유형 A # 2
    • 경보 유형 1
    • 경보 유형 2
  • 서버 유형 B # 1
    • 경보 유형 99
    • 경보 유형 2

따라서 x 개의 알람이있는 또는 n 개의 서버 가 n 개 있습니다. 모두 와 변수입니다.UPDOWNnx

서버 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

필자의 초기 생각은 서버 유형별 모델에서 임의의 로지스틱 회귀 포리스트를 사용하는 것입니다. 그런 다음 벤치 마크를하고 신경망이 더 많은 것을 제공한다면 꽤 빨리 알 수 있습니다. 신경망이 항상 최상의 결과를 제공하는 것은 아닙니다.
user1269942 2016 년

답변:


2

제 생각에는 문제를 해결하기 위해 잘못된 방법을 찾고 있습니다.

숫자 데이터가 엄격하게 없습니다.

통계 기반 머신 러닝은 이러한 문제로 인해 매우 힘든 시간입니다. 문제는 규칙 기반 시스템으로 해결해야하는 문제 중 하나와 비슷합니다. 나의 첫 번째 본능은 규칙을 이해하고이를 분류로 이끄는 코드에 넣는 것입니다.

그러나 논리를 기반으로 규칙 기반 시스템을 학습하는 방법이 있습니다. 오늘날 머신 러닝에는 유행이 아닙니다. https://en.wikipedia.org/wiki/Rule-based_system


+1, 문제를 해결하기 위해 if / thens를 쉽게 매핑 할 수 있다면 ANN이 순수한 추론 적 논리를 능가하는 방법은 없습니다. 신경망이 요구하는 오버 헤드를 처리하는 것보다 통계적인 주장 (서비스 A가 5/6 서버에서 다운되었으므로 서비스 A가 다운 되었음)도 더 좋습니다.
Derek Janni

2

위의 의견에 따라 규칙 기반 접근 방식을 시도하는 것이 좋습니다. 보유한 각 서버에 대해 서비스를 조회하십시오. 모든 서비스가 서버에서 다운되면 서버에 문제가있는 것입니다. 각 서비스에 대해 서버에서 서비스가 실행되고 있다고보고하지 않으면 서비스에 문제가있는 것입니다. 둘 다인 경우 각각에 대해 알림을 받고 구성 요소 중 어떤 일이 일어나고 있는지 검사 할 수 있습니다.

ANN 모델을 사용한 비용, 유지 보수 및 나쁜 결과의 위험은 모두 단순한 규칙 기반 솔루션을 능가하며 상사는 아마도 여기에서 의미있는 일을하기 위해 등을 두드리게 될 것입니다.

서버와 프로세스의 기능을 유지하는 것이 정말로 중요하다면 프로덕션 환경에서 진행중인 작업에 대한 안정적인 실시간 알림을 제공하는 APM 서비스에 투자하는 것이 좋습니다.

ANN 작동 방식을 배우려고하는 경우 다른 문제를 시도하십시오. 분류 또는 이상 탐지에 대해 잘 알려진 데이터 세트는 사용자 정의 데이터 세트보다 ANN이 어떻게 작동하는지에 대한 더 많은 통찰력을 제공하므로 효과적인 학습 체계를 강요하기가 매우 어려울 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.