MySQL HeatWaveは、トランザクション、分析、機械学習、生成AIサービスを組み合わせた唯一のフルマネージドのMySQLデータベース・サービスです。また、MySQL HeatWave Lakehouseも含まれており、ユーザーはオブジェクト・ストレージ、MySQLデータベース、またはその両方の組合せに格納されているデータを分析できます。ユーザーは、MySQL HeatWaveを利用したアプリケーションを、Oracle Cloud Infrastructure(OCI)、Amazon Web Services(AWS)およびMicrosoft Azureのいずれかのパブリック・クラウドにデプロイできます。
ログには、システム、アプリケーション、またはネットワークの健全性に関する豊富な重要なデータが含まれています。しかし、膨大な量のデータを扱うため、潜在的なシステム障害やセキュリティの脅威を指し示す可能性のあるパターンや行動を人間が検出することが困難な場面もあります。そこで、MySQL HeatWave AutoMLが登場します。
MySQL HeatWave AutoMLは、ログの異常を検出し、ログの異常を効果的に検出して要約できるようにし、迅速に対応できる情報を提供します。
この投稿では、ログの異常検出、主なユースケース、およびログ・データ内の異常の特定で直面した課題について説明します。この重要なトピックをこの記事で解説します。
ログの異常検出
ログの異常検出では、システム、アプリケーションまたはネットワークからのログ・データの異常なパターンまたは動作を特定します。このような異常は、セキュリティの侵害、システム障害またはパフォーマンス問題などの問題を示す可能性があります。.
ログの異常検出のユースケース
-
運用の改善: アプリケーションのダウンタイムは、重大な財務上の損失を引き起こす可能性があります。このような事象を防ぐために、運用チームは、通常ログに表示される早期警告サインを探します。
-
システム監視: システム・ログは、オペレーティング・システム、サーバーおよびその他のインフラストラクチャのコンポーネントによって生成されます。これらのログの異常は、セキュリティの脅威、システム障害、パフォーマンスの問題、または運用上の非効率を示す可能性があります。
-
根本原因の分析: ログ・データを分析して問題の根本原因を迅速に特定し、迅速な解決を可能にすることで顧客への影響を最小限に抑えることができます。
-
法令遵守および監査: GDPR, SOX, HIPAA, その他のデータ保護法などの規制への準拠は必須であり、違反に対して重大な罰則があります。ログを監視して潜在的な違反を検出し、必要に応じてコンプライアンス・アラートを生成できます。
ログの異常検出の課題
-
データのラベル付け: ラベル付きデータは、機械学習(ML)モデルのトレーニングの基本となるデータの正当性を確立する上で重要な役割を果たします。ただし、通常、ログ・データは種類が豊富で高次元なため、データセット全体にラベルを付けることは現実的ではありません。多くの場合、ラベル付きデータの作成は面倒で時間がかかり、コストがかかります。
-
コンテキストの損失: ログの異常を検出する場合、コンテキストは重要です。単一のログ・エントリは単独では正常であるように見えますが、周囲のログと順番に分析すると、異常なパターンの一部を形成できます。
-
偽陰性と偽陽性: ログ異常検出では、異常なイベントが正常とマークされると偽陰性が発生し、正常なイベントが異常と誤って識別されると偽陽性が発生します。どちらのケースもコストがかかり、不要なアラート、無駄なリソース、潜在的な「アラート疲れ」につながる可能性があります。
-
コールド・スタート: 十分な履歴ログ・データがないと、異常を検出するための効果的なモデルの開発が妨げられる可能性があります。
-
対応時間 迅速な対応を求められる場合に特に重要になりますが、異常な事象から取るべき対応を用意し、システム障害を防止します。
MySQL HeatWave AutoMLでのログの異常検出
MySQL HeatWave AutoMLは、アンサンブル学習アルゴリズムに基づくGeneralized kth Nearest Neighbors (GkNN)と呼ばれる新しい特許取得済の手法を使用して、ラベルなしデータの異常を自動で検出します。これは、通常、検出するために個別のアルゴリズムを必要とする様々な共通タイプの異常を識別します。また、MySQL HeatWave AutoMLは、ログ・データなどの高度にディメンション化されたデータを管理する手法であるプリンシパル・コンポーネント分析(PCA)もサポートしています。
主な機能
教師なし学習と半教師あり学習: MySQL HeatWave AutoMLログ異常検出では、教師なし学習と半教師あり学習の両方がサポートされます。教師なし学習では、モデルを事前にトレーニングする必要なく、新しい異常を検出します。半教師あり学習では、既知の異常を利用して検出精度を向上させます。教師なし学習と半教師あり学習を組み合せると、より効果的なログ異常検出モデルになります。
生成AIの統合: 予測フェーズでは、異常なログ・エントリを検出できますが、解釈が難しく、根本的な問題を明確に伝えていない場合があります。MySQL HeatWave GenAIは、これらのログ・エントリを要約できるため、根本的な原因を理解し、それに対処することが容易になります。
正規表現を使用したログ・データのマスク: デフォルトでは、ログの繰返しパターンをマスクするために事前処理されます。組込みのマスキングに加えて、ユーザーはカスタム正規表現を指定してログ・データをさらに操作できます。
複数のソースからのログのサポート: 複数のソースからのログを使用して、ログ異常検出モデルをトレーニングできます。トレーニング中に、同じソースのすべてのログが一緒に処理されます。
コンテキスト・ウィンドウのサポート: ログ・エントリはグループ化され、異常検出のコンテキストを提供します。ユーザーは、各グループのログ・エントリの数と、連続するグループ間の重複を指定できます。
自動化されたログの異常検出のパイプライン
ログ異常検出の自動パイプラインは、次のステップで構成されます。
- 繰返しパターンのマスク: ログの生データは、drain3を使用して繰返しパターンをマスクされます。これは、ログの生データの・メッセージをテンプレートにグループ化するテンプレート・マイニング・アルゴリズムで、ログ異常検出のために効果的に処理できます。
- ユーザー指定の正規表現の適用: デフォルトのマスキングに加えて、ユーザーは正規表現を指定してログ・エントリを処理できます。
- ログ・エントリのグループ化: ログ・エントリをグループ化して、異常検出のコンテキストを提供します。
- テキストを数値ベクトルに変換: ログ・エントリの各グループを数値ベクトルに変換します。
- 異常検出モデルの構築: 数値ベクトルに基づく異常検出モデルのトレーニング。
- ログ・エントリの要約: 生成AIを使用して、グループ内のログ・エントリを要約します。

モデルの構築、スコアリング、推論 – MySQL HeatWave AutoMLでのログの異常検出モデル
このセクションでは、ログ異常検出モデルを構築し、スコアリングしてモデル品質を評価し、モデルを使用してログ異常を予測するためにユーザーが実行する必要があるステップについて説明します。
トレーニング表およびテスト表の作成とデータの移入
ユーザーは、トレイン表およびテスト表を作成し、ログ・エントリを移入する必要があります。トレーニング表はモデルのトレーニングに使用され、テスト表はモデルの評価に使用されます。
表には、次のデータを含む列が必要です – (1)ログの内容 (2)ログのソース (3)ログの行のラベル
ログの時間的な順序を確立するため、少なくとも1つの列が主キーとして機能する必要があります。「ソース」列が存在しない場合は、すべてのログが同じソースからのものであると想定されます。
mysql> CREATE TABLE training_data (
log_id INT AUTO_INCREMENT PRIMARY KEY,
log_message TEXT,
timestamp DATETIME,
target TINYINT
);
INSERT INTO training_data (log_message, timestamp, target) VALUES
("User login successful: admin", "2023-08-07 09:00:00", 0),
("Database connection established", "2023-08-07 09:05:23", 0),
("Failed login attempt from IP: 192.168.1.20", "2023-08-07 09:12:15", 1),
("Server load is high: 85%", "2023-08-07 09:20:30", 1),
("User logout: Jane", "2023-08-07 18:10:00", 0);
mysql> CREATE TABLE testing_data (
log_id INT AUTO_INCREMENT PRIMARY KEY,
log_message TEXT,
timestamp DATETIME,
target TINYINT
);
INSERT INTO testing_data (log_message, timestamp, target) VALUES
("User login failed: Invalid credentials", "2023-08-08 10:30:00", 1),
("Unusual network traffic from IP: 10.0.0.5", "2023-08-08 12:45:30", 1);
モデルの構築
mysql>CALL sys.ML_TRAIN('anomaly_log_data.training_data', NULL, JSON_OBJECT('task', 'log_anomaly_detection', 'exclude_column_list', JSON_ARRAY('log_id', 'timestamp', 'target')), @unsupervised_log_model);
スコアリングによるモデルの評価
mysql> CALL sys.ML_MODEL_LOAD(@unsupervised_log_model, NULL);
mysql> CALL sys.ML_SCORE('anomaly_log_data.testing_data', 'target', @unsupervised_log_model, 'f1', @anomaly_log_score, NULL);
mysql> SELECT @anomaly_log_score;
+--------------------+
| @anomaly_log_score |
+--------------------+
| 0.8571428656578064 |
+--------------------+
1 row in set (0.0452 sec)
推論の実行
mysql> CALL sys.ML_PREDICT_TABLE('anomaly_log_data.testing_data', @unsupervised_log_model, 'anomaly_log_data.log_predictions_unsupervised',JSON_OBJECT('logad_options',JSON_OBJECT('summarize_logs', TRUE)));
mysql> SELECT * FROM log_predictions_unsupervised\G
*************************** 1. row ***************************
id: 1
parsed_log_segment: User login failed: Invalid credentials Server response time increased Normal database query Unusual network traffic from IP: 10.0.0.5 System update completed successfully. Error log: Stack trace included User activity: Admin accessed settings Unlabeled log: Further investigation needed Security alert: Potential malware detected System shutdown initiated
ml_results: {"summary": "\nHere is a concise summary of the text:\n\nThe system encountered several issues, including an invalid login attempt, increased server response time, and unusual network traffic. A potential malware detection was also triggered, prompting a security alert. The system has been shut down for further investigation.", "index_map": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "predictions": {"is_anomaly": 1}, "probabilities": {"normal": 0.0, "anomaly": 1.0}}
*************************** 2. row ***************************
id: 2
parsed_log_segment: Unusual network traffic from IP: 10.0.0.5 System update completed successfully Error log: Stack trace included User activity: Admin accessed settings Unlabeled log: Further investigation needed Security alert: Potential malware detected System shutdown initiated
ml_results: {"summary": "\nHere is a concise summary:\n\nA system update was completed successfully, but an error log indicates potential malware detection and requires further investigation.", "index_map": [4, 5, 6, 7, 8, 9, 10], "predictions": {"is_anomaly": 1}, "probabilities": {"normal": 0.0, "anomaly": 1.0}}
出力中の’is_anomaly‘は行が異常か正常かを示し、’probabilities‘は異常である確率を示します。
まとめ
ログの異常検出は、ログ・データの異常を検出するための効果的な方法です。これは、運用の改善、システム監視、根本原因の分析、規制コンプライアンス対応、監査などの様々なタスクに適用できます。MySQL HeatWave AutoMLは、様々な異常検出アルゴリズムと教師なし学習と教師あり学習の両方をサポートする、ログ異常検出のための自動機械学習パイプラインを提供します。
詳しくは、MySQL HeatWave AutoMLの ドキュメント および MySQL HeatWave AutoML のページを参照してください。
OCIのAlways Free ServicesでMySQL HeatWaveを無料で利用する。
機械学習モデルの構築や予測の手順は、Oracle LiveLabsでの Getting started with MySQL HeatWave AutoML にて実際に試すことができます。
またデモビデオ build anomaly detection model using unsupervised learning や Principal Component Analysis (PCA) for anomaly detection もあわせてご覧ください。


