IT運用・保守の効率化、JD Cloudの運用・保守ログ異常検知の深層解釈 自然言語処理によるAIOps実装実践

著者:Jingdong Technology Zhang Xianbo、Zhang Jing、Li Dongjiang

ログの観点からオンライン ビジネスの問題を迅速に発見するための NLP テクノロジに基づくクラスタ操作および保守ログ

ログはIT業界で広く利用されており、ログの異常検知はシステムの稼働状況を把握する上で重要です。この問題に取り組むための従来のアプローチでは、複雑なルールベースの監視された方法と、多大な人的コストが必要です。自然言語処理技術に基づく運用・保守ログの異常検知モデルを提案します。ログ テンプレート ベクトルの品質を向上させるために、特徴抽出を改善しました. 品詞 (PoS) および固有表現認識 (NER) テクノロジをモデルで使用して、ルールの関与を減らしました. テンプレート ベクトルが変更されました. NER の重みベクトルを使用してログを分析することにより、テンプレート内の各単語の PoS 属性により、手動のラベル付けのコストが削減され、重みの分散が改善されます。テンプレート ベクトルを修正するために、ログ テンプレートに重みをラベル付けする方法が導入され、テンプレート修正ベクトルに基づく最終的な検出は、深層ニューラル ネットワーク (DNN) を使用して実現されます。私たちのモデルは、3 つのデータセットで有効性がテストされ、2 つの最先端のモデルと比較され、評価結果は、私たちのモデルがより高い精度を達成することを示しています。

ログは、OS などの IT 分野における稼働状況を記録する主要な方法の 1 つであり、システムが健全な状態にあるかどうかを確認するための重要なリソースです。したがって、ログで正確な異常検出を行うことが非常に重要です。ログ異常には、一般に、異常な個別ログ、異常なログ シーケンス、および異常なログの量的関係の 3 つのタイプがあります。主に異常な個別ログ、つまり異常な情報を含むログを特定します。

一般に、ログの異常検出は、ログ解析、特徴抽出、異常検出の 3 つのステップで構成されます。解析ツールによって抽出されたテンプレートは、モデルに簡単に入力できるように数値データに変換する必要があるテキスト データです。このためには、テンプレートのデジタル表現を取得するために特徴抽出が必要です。テンプレートの特徴抽出に関して、業界はこのタスクを達成するためのさまざまな方法を提案してきました。ワンホット エンコーディングは、テキスト テンプレートを操作可能な数値表現に簡単に変換する最も初期の最も簡単な方法の 1 つです。ワンホット エンコーディングを使用する場合、ログ テンプレートのセマンティック情報は無視されます。この便利なエンコーディング方法に加えて、ますます多くの研究者が自然言語処理 (NLP) 技術を適用してテキストのデジタル変換を実現しています。これには、bag of words、word2vec などの方法が含まれます。上記の方法は、テキスト データから数値データへの変換を達成できますが、ログの異常検出にはまだいくつかの欠点があります。Bag-of-words と word2vec は、テンプレートの意味情報を考慮して単語ベクトルを効率的に取得できますが、テンプレートに出現する各テンプレート単語の重要度調整を考慮する能力が不足しています。また、テンプレートの特徴抽出にはディープ ニューラル ネットワーク (DNN) も使用されます。

タグの結果は最終的な検出にとって異なる重要性を持っているため、モデルは主に、テンプレートの単語の意味情報と各タグの重みの割り当てを考慮しながら、特徴抽出を改善します。PoS と名前付きエンティティ認識 (NER) という 2 つの自然言語処理技術を利用して、次の手順でテンプレートの特徴抽出を実現します。具体的には、元のログ メッセージが最初に FT-Tree によってログ テンプレートに解析され、次にテンプレートが PoS ツールによって処理されて、重みベクトル計算用のテンプレート内の各単語の PoS 属性が取得されます。At the same time, the tokens in the template are vectorized into initial template vectors by word2vec, and the initial template vector areさらに modified by using the weight vector. これらの重要なテンプレート ワードの PoS 属性は、モデルがログをよりよく理解するのに役立ちます。意味。PoS属性が付与された雛形単語は、異常情報認識に対する重要度が異なるため、NERを用いて雛形のPoS属性で重要度の高い雛形単語と、NERが重要と認識した雛形単語を見つけ出す体重が増えます。次に、初期テンプレート ベクトルにこの重みベクトルを乗算して合成テンプレート ベクトルを生成し、これを DNN モデルに入力して、最終的な異常検出結果を取得します。ログ解析における人的入力を減らし、重み計算を準備するために、PoS 分析方法を採用し、テンプレート抽出規則を導入することなく、各テンプレート単語の PoS 属性をマークします。

テンプレートを解析する特徴抽出プロセスは, 異常検出における重要なステップです. 特徴抽出の主な目的は, テキスト形式のテンプレートをデジタルベクトルに変換することです. 業界ではさまざまなテンプレート特徴抽出方法が提案されています:

ワンホット エンコーディング: DeepLo​​g では、k 個のテンプレート ti, i ∈ [0, k) のセットからの各入力ログ テンプレートは、ワンホット エンコーディングとしてエンコードされます。この場合、ログの重要な情報 ti に対してスパースな k 次元ベクトル V = [v0,v1,...,vk-1] が構築され、j は i と等しくなく、j∈[0,k ) 、すべての vi = 1 および vj = 0 に対して。

**自然言語処理 (NLP):** ログ テンプレートのセマンティック情報を抽出して高次元ベクトルに変換するために、LogRobust は既製の Fast-Text アルゴリズムを使用して英語の語彙からセマンティック情報を抽出します。単語間の本質的な関係 (意味的な類似性) を効果的に捉え、各単語を k 次元のベクトルにマッピングします。NLP 手法を使用したさまざまなモデルも、word2vec や bag-of-words など、ほとんどの業界で使用されています。

**ディープ ニューラル ネットワーク (DNN):** word2vec や Fast-Text などのきめの細かいユニットを使用する自然言語処理 (NLP) とは異なり、LogCNN は、全体で使用されるトレーニング可能なレイヤーである 29x128 コードブックに基づいてログ埋め込みを生成します。勾配降下法は、トレーニング中の最適化に使用されます。

**Template2Vec:** は、同義語と反意語に基づいてテンプレート内の単語を効率的に表現する新しいアプローチです。LogClass では、従来の重み付け方法である TF-IDF が TF-ILF に改良され、逆ドキュメント頻度の代わりに逆位置頻度が使用されて、テンプレートの機能構築が実現されます。

生のログ メッセージは半構造化されたテキストです。オンライン決済アプリケーションから収集されたエラー ログのように、「HttpUtil-request Connection failed, Read timeout at java.net. 通常、変数と定数 (テンプレートとも呼ばれます) の 2 つの部分で構成されます。個々のログを識別する異常検出の目的は、元のログから解析されたテンプレートから異常な情報があるかどうかを識別することです。私たちのモデルは、PoS 分析と NER 手法を使用して、より正確で労力を節約したログ異常検出を行います。PoS は、不要な PoS 属性でマークされたテンプレート ワードをフィルタリングするのに役立ちます。NER の目標は、重要な PoS 属性としてマークされたすべてのテンプレート ワードに重要性を割り当てることです。次に、テンプレート ベクトルと重みベクトルを乗算することにより、合成テンプレート ベクトルが得られます。

ログ異常検出モデルは、テンプレートの解析、PoS 分析、初期ベクトルの構築、NER ベースの重み計算、複合ベクトル、最終検出の 6 つのステップで構成されます。検出の全プロセスを図 1 に示します。

ステップ 1: テンプレートの解析

初期ログは半構造化されたテキストであり、ログの検出を混乱させたり妨げたりする可能性のある不要な情報が含まれています。したがって、一部の数値や記号などの変数を省略し、定数、つまりテンプレートを抽出するには、前処理が必要です。前述のログ メッセージを例にとると、元のログ HttpUtil-request は [wx/v1/pay/prepay] のテンプレートへの接続に失敗しました。java.net での読み取りタイムアウトです。次のように抽出できます: HttpUtil 要求接続 *失敗した読み取り時間*。シンプルで効果的な方法である FT-Tree を使用してログ解析を実装し、ストップ ワードなどの重要度の低いトークンを削除するための複雑なルールベースのルールは導入しません。

ステップ 2: PoS 分析

前の手順でテンプレートを解析した結果、英語の単語、フレーズ、およびいくつかの非ネイティブの単語のみが解析されたテンプレートに残り、これらのテンプレートの単語には、VB や NN などのさまざまな PoS 属性があります。多数のログ テンプレートに関する私たちの観察に基づいて、一部の PoS プロパティはモデルがテンプレートによって伝達される意味を理解するために重要ですが、他のプロパティは無視できます。図 3 に示すように、解析テンプレートの "at" という単語は理論的に不要であり、対応する PoS 属性 "IN" も不要です. IN マークを削除しても、テンプレートが正常かどうかを判断できます. したがって、PoS ベクトルを取得した後、特定の PoS プロパティを持つテンプレート ワードを削除することで、テンプレートを簡素化できます。残りのテンプレート ワードは、モデルがテンプレート コンテンツをよりよく理解するために非常に重要です。

ステップ 3: 初期テンプレート ベクターの構築

PoS ベクトルを取得する際に、テンプレートもデジタル ベクトルにエンコードされます。テンプレートのセマンティック情報を考慮するために、word2vec をモデルで使用して、テンプレートの初期ベクトルを構築します。この初期ベクトルは、次のステップで取得された重みベクトルと乗算され、テンプレートの複合最適化表現が取得されます。

ステップ 4: 重量分析

まず、テンプレート内のテンプレート単語に対して PoS 分析を実行し、意味のないテンプレート単語を削除します。残りのテンプレート ワードについては、いくつかは重要であり、サーバーの動作、ヘルス ステータスなどの基本的な情報を伝えるために使用されます。その他は、アクションの対象、警告レベルなど、それほど重要でない情報である場合があります。これらの重要なテンプレート ワードのモデルの学習を強化するために、これらの重要なテンプレート ワードを強調する重みベクトルを作成しました。この目的のために、NER 手法を使用して、重要なエンティティとしてマークされたすべてのテンプレート ワードを、定義済みの重要なエンティティをフィードすることで選択することを学習します。プロセスを図に示します。

CRF は NER で一般的に使用されるツールであり、テンプレート ワードの重要性を識別するためにモデルでも使用されます。つまり、重要としてマークされたテンプレート ワードをモデルに提供することで、モデルは、ラベル付けされていないログの重要なテンプレート ワードを識別することを学習できます。テンプレート内のテンプレート ワードが CRF によって認識されると、対応する位置に重み値 (2.0) が与えられます。したがって、重みベクトル W を取得します。

ステップ 5: 合成ベクトル

重みベクトルWを得た後、初期ベクトルV'に重みベクトルWを乗じることにより、テンプレートを表す複合最適化ベクトルVを得ることができる。重要なテンプレート ワードには大きな重みが割り当てられ、他のテンプレート ワードには小さな重みが割り当てられます。

ステップ 6: 異常検出

5 番目のステップで得られた合成ベクトル v は、異常検出のために最後の全結合層に入力されます。全結合層の出力は 0 または 1 で、それぞれ正常または異常を示します。

モデル評価

ログ異常検出に対するモデルの改善された効果を実験的に検証します。2 つの公開データセットと一連の内部データセットを使用して、モデルの実用性を検証します。ログ異常検出のために業界で提案されている 2 つの Deeplog および LogClass モデルと結果を比較します。

CANet のフレームワークは PyTorch で構築されており、35 のトレーニング エポックでオプティマイザーとしてシンガポールの確率的勾配降下法 (SGD) を選択しています。学習率は 2e4 に設定されます。すべてのハイパーパラメータはゼロからトレーニングされます。

**(1) データセット: **モデル評価用に 2 セットのパブリック データセットと 1 セットの内部データセットを選択しました.BGL と HDFS は、ログ分析に一般的に使用される 2 つのパブリック データセットです: **HDFS:はい 200 以上の Amazon EC2 から収集Hadoop ベースのジョブを実行しているノード。これは 11,175,629 個の生ログ メッセージで構成され、そのうち 16,838 個が「異常」とマークされましたBGL: **BlueGene/L スーパーコンピューター システムから収集され、4,747,963 個の生ログ メッセージが含まれ、そのうち 348,469 個が例外ログです。各ログ メッセージは、異常または正常として手動でマークされます。**データセット A:** は、実用的な検証のために社内から収集されたデータセットです。これには、915,577 個の生のログ メッセージと、手動でマークされた 210,172 個の例外ログが含まれています。

**(2) 基本モデル:** 3 つのデータセットについて、モデルを業界で最も高度な 2 つのモデル (DeepLo​​g および LogClass) と比較します: DeepLo​​g:ディープ ニューラル ネットワークに基づくモデルで、Long Short-検出を達成するためのタームメモリ(LSTM)。DeepLo​​g は、テンプレートのベクトル化方法としてワンショット エンコーディングを採用しています。LogClass: LogClass は新しいアプローチを提案します - Inverse Localization Frequency (ILF) を使用して、機能構築でログ リテラルを重み付けします。この新しい加重方法は、既存の Inverse Document Frequency (IDF) 加重方法とは異なります。

**(3) モデル評価結果:** 精度、再現率、F1 スコアの 3 つの側面から、2 つのベース モデルと私たちのモデルの異常検出効果を評価しました.HDFS データセットでは、私たちのモデルは最高の F1 を取得しましたスコアは 0.981 で、さらに、リコールの点でもモデルが最高のパフォーマンスを発揮します。LogClass は Precision で最高の結果を達成しており、私たちの結果よりわずかに高くなっています。2 番目のデータセットである BGL では、再現率 (0.991) と F1 スコア (0.986) の点でモデルが最高のパフォーマンスを示しましたが、精度は LogClass よりわずかに低かったです。3 番目のデータセット A での 3 つのモデルのパフォーマンスでは、モデルが最高のパフォーマンスを達成し、LogClass がそれに続きます。

すべてのデータセットで、私たちのモデルは最高の F1 スコアと最高のリコールを持っています。

•ログ異常検出のための自然言語処理ベースのモデル。せい。

•**ieeexplore 検索:** https://ieeexplore.ieee.org/abstract/document/9680175

Themis インテリジェント運用保守プラットフォーム インテリジェント テキスト分析機能ビュー: ( http://jdtops.jd.com/ )

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/u/4090830/blog/6814558
おすすめ