ログファイル分析のためのAIの設計


12

既知の機器のエラーを見つけて、新しい障害パターンを見つけるAIツールを開発しています。このログファイルは時間ベースであり、既知のメッセージ(情報とエラー)があります。JavaScriptライブラリを使用しています。イベントドロップを使用してデータをソフトに表示していますが、実際の仕事と疑問は、既知のAIを見つけるためにAIをトレーニングする方法です。パターンと新しい可能なパターンを見つけます。私はいくつかの要件があります:

1-ツールは次のいずれかになります。追加の環境のインストールに依存していない、またはb。少ないほど良いです(完璧なシナリオは、スタンドアロンモードのブラウザーでツールを完全に実行することです)。

2-パターンアナライザを断片化する可能性、一種のモジュール性、エラーごとに1つのモジュール。

これを行うために推奨されるアルゴリズムの種類は何ですか(ニューラルネットワーク、遺伝的アルゴリズムなど)?JavaScriptを使用して動作する何かが存在しますか?そうでない場合、このAIを作成するのに最適な言語は何ですか?


1
これには、機械学習よりもルールベースのほうが適していると
思います

@antlersoft既知の問題については同意しますが、パターンを検索して欠陥との相関も作成したいと考えています。
ジュリアーノオリヴェイラ

おすすめですか?考えましょう...正規表現を使用していますか?ニューラルネットワークは、古典的なアルゴリズムを使用しても解決策がない問題に推奨されます。ほとんどすべてのニューラルネットワークは、前処理されたデータを取得します。ログを「前処理」すると、解決策も得られます。
betontalpfa

回答:


9

エントリ間の相関

最初の推奨事項は、ログファイル内の適切な警告および情報エントリが、ソリューションの機械学習コンポーネントへのエラーとともに表示されることを確認することです。情報メッセージ、警告、およびエラーの間に相関がある可能性がある場合、すべてのログエントリは潜在的に有用な入力データです。時々、相関が強く、学習率を最大化するために重要です。

システム管理者は、これを一連の警告として経験し、その後、警告に示された状態が原因でエラーが発生することがよくあります。警告の情報は、システムまたはサブシステムで重大な障害が発生したときに作成されたエラーエントリよりも、障害の根本的な原因を示しています。

この問題のように見える、相互運用する機器または一連のマシンのシステムヘルスダッシュボードを構築している場合、問題の根本的な原因といくつかの早期警告機能は、表示する重要な情報です。

さらに、すべてのシステムヘルス状態が不良であるとは限りません。

学習メカニズムに提示する前に、フィルタリングによって除去する必要がある唯一のログエントリは、確実に無関係で無相関のログエントリです。これは、ログファイルが複数のシステムからのロギングの集約である場合に当てはまることがあります。そのような場合、分析されている独立したシステムのエントリは、分析されている現象と相関することができない可能性のあるエントリから分離して抽出する必要があります。

分析を一度に1つのエントリに制限すると、ダッシュボードの有用性が大幅に制限されることに注意することが重要です。システムの正常性は、最新のログエントリの正常性の指標とは異なります。最新のNエントリのヘルス指標の線形合計でさえありません。

システムヘルスは、多くのエントリと非常に非線形で時間的に依存する関係にあります。パターンは、多くのタイプのシステムで数日のうちに徐々に出現する可能性があります。非常に有用なダッシュボードが必要な場合は、システムのベース(またはベース)ニューラルネットをトレーニングして、これらの健康、非線形の兆候、差し迫った危険、リスク条件を特定する必要があります。差し迫った障害または品質管理の問題の可能性を表示するには、かなり長いログエントリの時間枠全体がこのニューラルネットに入る必要があります。

既知のパターンと未知のパターンの区別

既知のパターンの識別は、重要な点で新しいパターンの識別とは異なることに注意してください。既知のエラーのエントリ構文の特異性はすでに特定されており、これらのエントリの処理の入力正規化段階での学習負担が大幅に軽減されます。新しいエラータイプの構文の特異性を最初に発見する必要があります。

既知のタイプのエントリを未知のエントリから分離することもできるため、既知のエントリタイプをトレーニングデータとして使用して、新しい構文パターンの学習に役立てることができます。目的は、構文的に正規化された情報を意味解析に提示することです。

ログファイル固有の正規化の最初の段階

タイムスタンプが常にエントリの同じ場所にある場合は、相対ミリ秒に変換し、0x0a文字の前の0x0d文字を削除することは、正規化の最初のステップとして他の何よりも前に実行できます。スタックトレースは、トレースレベルのタブ区切りの配列に折りたたむこともできるため、ログエントリとログ行が1対1で対応します。

エラーの既知のエントリと未知のエントリの両方から発生する構文的に正規化された情報と、エラー以外のタイプのエントリは、意味構造のカテゴリの単純な識別のために教師なしネットに提示できます。ユーザー名や部品のシリアル番号などの番号やテキスト変数を分類する必要はありません。

構文的に正規化された情報が適切にマークされ、カウント、容量、メトリック、タイムスタンプなどの非常に変動しやすいシンボルを示す場合、特徴抽出を適用して、意味構造と変数の区別を維持する方法で表現パターンを学習できます。この区別を維持することで、システムメトリックのより継続的な(離散的ではない)傾向を追跡できます。各エントリは、アプリオリに知られているか、特徴抽出によって最近取得されたかに関係なく、0個以上のそのような変数を持つことができます。

傾向は、時間に対して、または特定の種類のインスタンス数に対してグラフ化できます。このようなグラフィックスは、機械的疲労、容量超過状態のアプローチ、または障害点にエスカレートするその他のリスクの特定に役立ちます。トレンドがそのような状態が差し迫っていることを示しているときに、警告インジケータを生成するように、さらにニューラルネットをトレーニングすることができます。

遅延ロギング

ソフトウェアアーキテクトやテクノロジーオフィサーが重要なシステム情報のストレージフォーマットをソフトウェア開発者のさまざまな便利な気まぐれに任せるのをやめた場合、このすべてのログ分析は意味がありません。ログファイルは一般的に混乱します。ログファイル内のパターンに関する統計情報の抽出は、ソフトウェア品質管理における最も一般的な課題の1つです。一般的なロギングフレームワークはどれも厳格さを奨励していないため、厳格さが普遍的に伐採に適用される可能性は低いです。そのため、この質問が頻繁に表示されています。

この特定の質問の要件セクション

この質問に示されている特定のケースでは、要件#1はブラウザーで分析を実行する設定を示していますが、これは可能ですが推奨されません。ECMAは素晴らしいスクリプト言語であり、パーサーの学習に役立つ正規表現機構はECMAに組み込まれています(これは要件#1の他の部分に準拠しており、追加のインストールは必要ありません)コンパイルされていない言語は、 Javaとして効率的です。また、ガベージコレクションと、バイトコードのマシンコードへのマッピングをランタイムに委任することによって発生する非効率性のため、JavaでもCほど効率的ではありません。

機械学習の多くの実験では、別の素晴らしい言語であるPythonを使用していますが、Pythonで行った作業のほとんどは、多くの場合、速度が1,000倍近く向上する計算効率の高いC ++に移植されました。C ++メソッドのルックアップでさえボトルネックだったため、ポートはECMAスタイルの継承をほとんど使用しませんが、はるかに高速です。従来の典型的なカーネルコードでは、C構造体と関数ポインターの使用により、vtableのオーバーヘッドが排除されます。

モジュール式ハンドラーの2番目の要件は妥当であり、トリガーされたルール環境がNNアーキテクチャーと互換性がないと多くの人が考えたくなる可能性があることを意味しますが、そうではありません。パターンカテゴリが特定されると、最初の入力データで最も一般的なものを最初に探すことは、すでに上記のプロセスに組み込まれている既知/不明の区別に含まれています。ただし、このモジュール式のアプローチには課題があります。

システムヘルスは単一のエントリではなく傾向によって示されることが多く(上記のように)、システムヘルスは個々のエントリのヘルス値の線形合計ではないため、エントリを処理するためのモジュラーアプローチは、それ以上パイプなしでディスプレイにパイプするべきではありません。分析。これは実際、ニューラルネットがヘルスモニタリングで最大の機能向上を提供する場所です。モジュールの出力は、これらの健康、差し迫った危険、およびリスク条件の非線形表示を識別するようにトレーニングできるニューラルネットに入力する必要があります。

さらに、事前障害動作の一時的な側面は、かなりの長さのログエントリの時間枠全体がこのネットに入らなければならないことを意味します。これはさらに、ソリューションの計算集中型部分の選択肢としてECMAまたはPythonが不適切であることを意味します。(Pythonの傾向は、C ++で行うことです:オブジェクト指向の設計、カプセル化を使用し、監視コードの設計パターンに従い、実際の学習や他の計算集約型またはデータ集約型の非常に計算効率の高いカーネルのようなコードを使用します機能。)

ピッキングアルゴリズム

アーキテクチャの初期段階でアルゴリズムを選択することはお勧めしません(質問の最後に暗示されているように)。最初にプロセスを設計します。学習コンポーネント、必要なコンポーネントのタイプ、トレーニング後の目標状態、強化を使用できる場所、および望ましいネットワーク動作を強化/修正するためにウェルネス/エラー信号を生成する方法を決定します。これらの決定は、目的の表示コンテンツだけでなく、予想されるスループット、コンピューティングリソース要件、および最小有効学習率にもとづいて行います。システムのアルゴリズム、言語、および容量計画は、それらのすべてが少なくとも大まかに定義された後でのみ意味のある選択ができます。

生産における同様の作業

ここのラボでは、ソーシャルネットワーキングの自動化の一環として、シンプルな適応型解析が実行されていますが、シンボルとシーケンシャルパターンのセットは限定されています。ハードウェアの容量とスループットによってのみ制限される、任意の大きな基本言語単位、接頭辞、末尾、および接尾辞に再構成せずに拡張します。正規表現ライブラリの存在は、設計をシンプルに保つのに役立ちました。異方性の形式のDCNNから供給されるPCREバージョン8シリーズライブラリを使用して、構成可能なウィンドウサイズと移動増分サイズで入力テキストを移動するウィンドウから特徴を抽出します。最初のパスで収集された入力テキスト統計に適用されたヒューリスティックは、2つの層に配置された架空のPCREのセットを生成します。

無秩序に摂動されたテキスト検索で最高のPCREにより高い確率の重みを適用するために最適化が行われます。これは、トレーニングのNN逆伝播で使用されるのと同じ勾配降下法の収束戦略を使用します。これは、バックトレース、ファイル、またはエラーの存在などの仮定を行わない素朴なアプローチです。それはアラビア語のメッセージとスペイン語のメッセージに等しく適応します。

出力はメモリ内の任意の有向グラフであり、オブジェクト指向データベースのダンプに似ています。

قنبلة -> dangereux -> 4anlyss
bomba -> dangereux
ambiguïté -> 4anlyss -> préemption -> قنبلة

強化バージョンのリエントラントアルゴリズムがスタブ化され、ウェルネス信号がすでに利用可能であるにもかかわらず、他の作業は、適応パーサーを促進するか、自然言語の作業を使用する次のステップに向けて作業を横取りしました。言語理解のアイデア想起の側面を模倣する、アイデアを表すフィルター。

最終コメント

システムには、ログ分析問題と同様のコンポーネントとプロセスアーキテクチャがあり、上記の概念を証明します。もちろん、ロギングを実行しているシステムの開発者間でロギングが行われる方法がまとまっていないほど、人間または人工のエージェントがエントリを明確にすることが難しくなります。一部のシステムロギングは、長い間品質管理が不十分であり、ログはほとんど役に立ちません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.