Logreduce: Python と機械学習でログノイズを除去する

Logreduce: Python と機械学習でログノイズを除去する

Logreduce は、大量のログ データから異常を検出することでデバッグ時間を節約できます。

継続的インテグレーション (CI) ジョブは大量のデータを生成します。ジョブが失敗した場合、何が問題だったのかを突き止めるのは面倒な作業になることがあります。ログを調査して根本原因を見つけ出す必要がありますが、根本原因はジョブ出力全体のごく一部にしか見つからないことがよくあります。最も関連性の高いデータを他のデータからより簡単に分離するには、以前に正常に実行されたジョブの結果を使用して、失敗した実行ログから異常を抽出する Logreduce 機械学習モデルをトレーニングします。

このアプローチは、Journald やその他のシステム全体の通常のログ ファイルから異常を抽出するなど、他のユース ケースにも適用できます。

機械学習を使用してノイズを削減する

一般的なログ ファイルには、多くの標準イベント (「ベースライン」) と、開発者に関連するいくつかの例外的なイベントが含まれています。ベースラインには、検出や削除が困難なタイムスタンプや一意の識別子などのランダムな要素が含まれる場合があります。ベースライン イベントを削除するには、k 最近傍パターン認識アルゴリズム (k-NN) を使用できます。

ログイベントは、k-NN 回帰で使用できる数値に変換する必要があります。このプロセスは、一般的な特徴抽出ツール HashingVectorizer を使用して、あらゆるタイプのログに適用できます。各単語をハッシュし、各出現をスパース マトリックスにエンコードします。検索空間をさらに縮小するために、このトークン化プロセスでは、日付や IP アドレスなどの既知のランダムな単語が削除されます。

モデルをトレーニングした後、k-NN 検索により、各新しいイベントがベースラインからどれだけ離れているかがわかります。

この Jupyter ノートブックは、このスパース行列ベクトルの処理とグラフ化を示します。

Logreduce の紹介

Logreduce Python ソフトウェアはこのプロセスを透過的に実装します。 Logreduce は、もともとビルド データベースを使用して Zuul CI ジョブの失敗を分析することを目的としていましたが、現在では Software Factory 開発ショップのジョブ ログ処理に統合されています。

最も単純な場合、Logreduce はファイルまたはディレクトリを比較し、類似の行を削除します。 Logreduce は、各ソース ファイルのモデルを構築し、次の構文を使用して、距離が定義されたしきい値を超えるターゲット行を出力します: distance | filename:line-number: line-content

  1. $ logreduce diff / var / log / audit / audit . log . 1 / var / log / audit / audit . log
  2. INFO logreduce . Classifier - Training took 21.982s at 0.364MB / s ( 1.314kl / s ) ( 8.000 MB - 28.884 kilo - lines )
  3. 0.244 | audit . log : 19963 : type = USER_AUTH acct = "root" exe = "/usr/bin/su" hostname = managesf . sftests . com
  4. INFO logreduce . Classifier - Testing took 18.297s at 0.306MB / s ( 1.094kl / s ) ( 5.607 MB - 20.015 kilo - lines )
  5. 99.99 % reduction ( from 20015 lines to 1

Logreduce のより高度な使用法は、再利用のためにモデルをオフラインでトレーニングすることです。ベースラインのさまざまなバリエーションを使用して、k-NN 検索ツリーを適合できます。

  1. $ logreduce dir - train audit . clf / var / log / audit / audit . log .*
  2. INFO logreduce . Classifier - Training took 80.883s at 0.396MB / s ( 1.397kl / s ) ( 32.001 MB - 112.977 kilo - lines )
  3. DEBUG logreduce . Classifier - audit . clf : written
  4. $ logreduce dir - run audit . clf / var / log / audit / audit . log

Logreduce は、Journald の時間範囲 (日数/週数/月数) と Zuul CI ジョブ ビルド履歴のベースラインを検出するためのインターフェイスも実装します。また、複数のファイルで見つかった異常をシンプルなインターフェースでグループ化した HTML レポートを生成することもできます。

管理ベースライン

k-NN 回帰を使用した異常検出の鍵は、モデルが逸脱しすぎたログ ラインを検出するために使用する既知の適切なベースラインのデータベースを持つことです。このアプローチは、すべての名目上のイベントを含むベースラインに依存します。ベースラインに見つからないものはすべて異常として報告されるためです。

CI ジョブは、ジョブの出力が通常決定論的であり、以前の実行の結果を自動的にベースラインとして使用できることから、k-NN 回帰の重要なターゲットとなります。 Logreduce には、失敗したジョブ公開タスクの一部として使用して、簡潔なレポート (完全なジョブのログではなく) を公開できる Zuul ジョブ ロールがあります。この原則は、事前にベースラインを構築できる限り、他の状況にも適用できます。たとえば、公称システムの SoS レポートを使用して、欠陥のある展開における問題を見つけることができます。

異常分類サービス

Logreduce の次のバージョンでは、ログ処理を外部サービスにオフロードし、レポートをさらに分析できるサーバー モードが導入されます。また、Zuul ビルドを分析するための既存のレポートとリクエストのインポートもサポートしています。これらのサービスは分析を非同期で実行し、スコアを調整して誤検知を排除するための Web インターフェースを備えています。

監査レポートは、ターゲット ログ ファイルと、共通の JSON ファイルに記録された異常な行のスコアを含むスタンドアロン データセットとしてアーカイブできます。

プロジェクトロードマップ

Logreduce はすでに効果的に使用できますが、ツールを改善する機会は数多くあります。今後の計画は次のとおりです。

  • ログ ファイルで見つかった多数の注釈付き異常をキュレートし、さらなる調査のためにパブリック ドメイン データセットを生成します。ログ ファイル内の異常検出は難しいトピックであり、新しいモデルをテストするための共通データセットがあれば、新しいソリューションを特定するのに役立ちます。
  • 注釈付きの異常モデルは、報告された距離を改良するために再利用されます。たとえば、ユーザーが距離をゼロに設定してログ行を誤検知としてマークすると、モデルは将来のレポートでこれらのログ行のスコアを下げる可能性があります。
  • アーカイブされた異常をフィンガープリントして、新しいレポートに既知の異常が含まれているかどうかを検出します。したがって、サービスは、異常な事態を報告するのではなく、ジョブで既知の問題が発生したことをユーザーに通知できます。問題が解決されると、サービスはジョブを自動的に再開できます。
  • SOS レポート、Jenkins ビルド、Travis CI などのターゲットに対する、より多くのベンチマーク検出インターフェースのサポート。

このプロジェクトに参加することに興味がある場合は、#log-classify Freenode IRC チャネルでご連絡ください。フィードバックをお待ちしています!

<<:  自動運転技術はすでにかなり成熟しているのに、なぜまだ普及していないのでしょうか?この技術を待っている

>>:  AIを安全で信頼できるものにするためには、まずアルゴリズムの一般化能力を理解することから始める

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

アンドリュー・ン:AIはビッグデータから「スモールデータ」に移行する時が来た

AI界の巨匠アンドリュー・ン氏が最近、新型コロナウイルスの検査で陽性反応を示し、多くのネットユーザー...

3分レビュー! 2021年11月のロボット資金調達の概要

自動化の需要が継続的に高まっているため、ロボット産業の発展は加速段階に入り、わが国のロボット市場は最...

ディープラーニングとマシンビジョンの重要性を分析!ロボットを自由にさせる?

ディープラーニングは産業用ロボットの中核技術であり、ロボットが制約から解放され、環境の変化に応じて自...

近年の機械学習の奇妙な状況

翻訳者注:人工知能分野の発展は学者の貢献と切り離せないものです。しかし、研究が進むにつれて、「クリッ...

MWC19 上海 | データセンター 400G ソリューション、AI が未来を拓く

近年、モバイルインターネット、OTTビデオ、VRなどのビジネスアプリケーションの急速な成長に伴い、通...

人工知能が世界を席巻し、人類はサイボーグへと向かう必要がある

テスラのCEOイーロン・マスク氏はドバイでのイベントで人工知能の将来について語った。同氏は、人間より...

...

エッジインテリジェンス: リアルタイムのデータ処理とインテリジェントな意思決定を実現する新世代のテクノロジー

ラボガイドエッジインテリジェンスは、人工知能 (AI) とエッジコンピューティングを組み合わせた新し...

GPT-5 プレビュー!アレン人工知能研究所がGPT-5の新機能を予測する最も強力なマルチモーダルモデルを発表

GPT-5 はいつ登場し、どのような機能を持つのでしょうか?アレンAI研究所の新しいモデルがその答え...

...

実践的な Golang の基本データ構造とアルゴリズム、k-means クラスタリング アルゴリズム

起源最近読んだ本『はじめてのアルゴリズム』(石田康樹、宮崎修一)この一連のノートは、Golangの実...

Apache Flink トークシリーズ - PyFlink のコアテクノロジーを公開

皆さんこんにちは。本日のサミットで Apache PyFlink のコア技術を皆さんと共有できること...

美団におけるナレッジグラフ可視化技術の実践と探究

著者 | 魏耀成魏ナレッジ グラフの視覚化により、ナレッジ グラフ データをより直感的に表示および分...

国立国防技術大学は、モバイル環境下で高精度のオンラインRGB-D再構成を実現するROSEFusionを提案

最近、国立国防科技大学の徐凱教授のチームは、高速移動に対するランダム最適化に基づくオンライン RGB...