Amazon Web Services ブログ

Amazon CloudWatch Logs に自動パターン分析と異常検出が提供されるようになりました

ログデータを検索して運用上またはビジネス上のインサイトを見つけることは、多くの場合、干し草の山から針を探すようなものです。通常、個々のログレコードを手動でフィルタリングして確認する必要があります。これを支援するために、Amazon CloudWatch は、数十年にわたる Amazon と AWS の運用データを使用してトレーニングされた高度な機械学習 (ML) アルゴリズムを使用して、ログレコードのパターンを自動的に認識してクラスター化し、注目すべきコンテンツと傾向を抽出し、異常を通知する新しい機能を追加しました。

具体的には、CloudWatch では以下の機能が提供されるようになりました。

  • [Logs Insights] ページの [パターン] タブでは、クエリ結果で繰り返し発生するパターンを見つけて詳細に分析できます。これにより、探している内容を見つけやすくなり、ログ内の新しいコンテンツや予期しないコンテンツにドリルダウンしやすくなります。
  • [Logs Insights]ページの時間間隔セレクターにある [比較] ボタンを使用すると、選択した時間範囲のクエリ結果を、前日、週、月などの前の期間と簡単に比較できます。これにより、以前の安定したシナリオと比較して、何が変更されたかを確認するのにかかる時間が短くなります。
  • ナビゲーションペインの [ログ] セクションの [ログ異常 ] ページでは、取り込み中にログが処理されると、ログで見つかった異常が自動的に表示されます。

一般的なトラブルシューティングの手順で、これらが実際にどのように機能するかを見てみましょう。いくつかのアプリケーションログを調べて主要なパターンを見つけ、2つの期間を比較して何が変化したのかを理解し、最後に異常の検出が問題の発見にどのように役立つかを見ていきます。

ログで繰り返し発生するパターンを検出する
CloudWatch コンソールで、ナビゲーションペインの [ログ] セクションから [Logs Insights ] を選択します。まず、クエリするロググループを選択しました。今回は、検査したい Lambda 関数のロググループを選択し、[クエリを実行] を選択します。

[パターン] タブには、これらのロググループで見つかったパターンが表示されます。パターンの 1 つがエラーのようです。これを選択すると、クエリにフィルターとしてすばやく追加でき、このパターンを含むログに集中できます。とりあえず、虫眼鏡アイコンを選択してパターンを分析します。

コンソールのスクリーンショット。

[パターン検査] ウィンドウには、選択した期間にパターンが発生したことを示すヒストグラムが表示されます。ヒストグラムの後、ログからのサンプルが提供されます。

コンソールのスクリーンショット。

パターンの可変部分 (数字など) は「トークン」として抽出されています。 トークンの値を表示するには、[トークン値] タブを選択します。トークン値を選択してフィルターとしてクエリにすばやく追加し、この特定の値を持つこのパターンを含むログに集中できます。

コンソールのスクリーンショット。

また、[関連パターン] タブを見ると、分析しているパターンと同時に通常発生する他のログを確認することもできます。たとえば、詳細を示す DEBUG ログと一緒に常に書き込まれている ERROR ログを見ていると、その関係がわかります。

ログを前期間と比較する
何が起こっているのかをよりよく理解するために、時間間隔セレクターの [比較] ボタンを選択します。これにより、クエリが更新され、前の期間と結果が比較されます。たとえば、[前日] を選択すると、昨日と比較して何が変化したかがわかります。

コンソールのスクリーンショット。

[パターン] タブでは、エラーの数が実際に 10% 減少していることに気づきました。したがって、現在の状況はそれほど悪くないかもしれません。

重要度が ERROR のパターンにある虫眼鏡アイコンを選択すると、2 つの期間の完全な比較が表示されます。グラフは、選択した時間範囲(1時間)内の 2 つの期間(この場合は現在と昨日)にわたるパターンの出現と重なっています。

コンソールのスクリーンショット。

エラーは減少していますが、まだ残っています。これらのエラーを減らすために、アプリケーションにいくつかの変更を加えます。しばらくしてログを比較したところ、前の期間には存在しなかった新しい ERROR パターンが見つかりました。

コンソールのスクリーンショット。

アップデートで何かが壊れたので、以前のバージョンのアプリケーションにロールバックします。今のところ、エラーの数は私のユースケースでは許容範囲内なので、そのままにしておきます。

ログ内の異常検出
ログを比較してみると、エラーが減ったので安心しています。しかし、予期しないことが起こっているかどうかはどうすれば分かるでしょう? CloudWatch Logs の異常検出は、取り込み中にログが処理されるときに予期しないパターンを検出し、ロググループレベルで有効にできます。

ナビゲーションペインで [ロググループ] を選択し、フィルターを入力すると、以前表示していたのと同じロググループが表示されます。[異常検出] 列で [設定] を選択し、[評価間隔]5 分に設定します。オプションとして、より長い間隔 (最大 60 分) を設定して、特定のログイベントのみを処理して異常を検出するパターンを追加することもできます。

このロググループの異常検出を有効にすると、受信ログは常に過去のベースラインと照合して評価されます。数分待ってから、何が見つかったかを確認するために、ナビゲーションペインの [ログ] セクションから[ログの異常] を選択します。

コンソールのスクリーンショット。

この見方を簡略化するために、追跡したくない異常は非表示にできます。とりあえず、前回と同様の方法で対応するパターンを調べるために、異常の 1 つを選択します。

コンソールのスクリーンショット。

この追加チェックの結果、私の申請には緊急の問題はないと確信しました。これらの新機能で収集したすべてのインサイトにより、ログ内のエラーに集中して解決方法を理解できるようになりました。

知っておくべきこと
Amazon CloudWatch の自動ログパターン分析は、現在 Amazon CloudWatch Logs が提供されているすべての商用 AWS リージョンでご利用いただけます。ただし、中国 (北京)、中国 (寧夏)、イスラエル (テルアビブ) リージョンは除きます。

パターンおよび比較クエリ機能は、既存の Logs Insights クエリコストに応じて課金されます。1 時間の期間を別の 1 時間の期間と比較することは、2 時間の期間にわたって 1 つのクエリを実行することと同じです。異常検出はログ取り込み料金に含まれており、この機能に追加料金はかかりません。詳細については、「Amazon CloudWatch 料金表」を参照してください。

CloudWatch の自動ログパターン分析により、ログの分析方法を簡素化します。

Danilo

原文はこちらです。