サーバー監視用のニューラルネット


11

サーバーモニターアラームを取得し、問題の根本的な原因を特定するためのpybrainを調べています。教師あり学習を使用してトレーニングしたり、トレーニングデータセットをキュレーションしたりして満足しています。データは次のような構造になっています。

  • サーバータイプA#1
    • 警報タイプ1
    • 警報タイプ2
  • サーバータイプA#2
    • 警報タイプ1
    • 警報タイプ2
  • サーバータイプB#1
    • アラームタイプ99
    • 警報タイプ2

だから、あるn個のサーバーがして、XのことができるアラームUPまたはDOWN。どちらnx可変です。

サーバーA1のアラーム1および2DOWNである場合、そのサーバーでサービスaがダウンしており、問題の原因であると言えます。

すべてのサーバーでアラーム1がダウンしている場合、サービスaが原因であると言えます。

原因には複数のオプションが存在する可能性があるため、単純な分類は適切ではないようです。

また、後のデータソースをネットに結び付けたいと思います。一部の外部サービスにpingを実行するスクリプトだけなど。

シリアルサービスチェックのため、適切なアラームがすべて一度にトリガーされるとは限らないため、あるサーバーがダウンしてから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 2014

どんな解決策も歓迎します。ニューラルネットは、私が利用しようとしたものにすぎませんでした。
マットウィリアムソン

興味深い問題。これを6か月以上前に投稿したので、私がそれに刺すのに時間をかける前に、これにまだ興味があることを確認してもらえますか?
Hack-R

私の最初の考えは、サーバータイプのモデルごとにロジスティック回帰のランダムフォレストを使用することでした。次に、ベンチマークを取得し、ニューラルネットでさらに多くの効果が得られるかどうかをすばやく確認します。ニューラルネットが常に最良の結果をもたらすとは限りません。
user1269942

回答:


2

私の意見では、あなたはあなたの問題を解決するために間違った方法を調べています。

厳密には数値データはありません。

統計ベースの機械学習は、このような問題に非常に苦労しています。あなたの問題は、ルールベースのシステムで解決すべき問題の1つに似ています。私の最初の本能は、ルールを理解し、それらを分類につながるコードに組み込むことです。

ただし、ロジックに基づいてこのようなルールベースのシステムを学習する方法があります。それらは、今日の機械学習ではまったく流行遅れです。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.