[レポート] Amazon CloudWatch Logs から実行可能なインサイトを得る #COP326 #AWSreInvent

2023.12.29

アノテーション テクニカルサポートの川崎です。

本記事は AWS re:Invent 2023 のセッションレポートとなります。

概要

Are you maximizing the value from your Amazon CloudWatch Logs? Join this session to get more out of your CloudWatch Logs when you optimize for the right insights. Learn how you can use the latest capabilities in CloudWatch Logs to improve your observability posture. Learn how to use the logs you already ingest by adding context to your data. From pattern detection with machine learning to high-res capabilities in EMF to real-time interactive analysis, see how you can get actionable insights from your logs.

[機械翻訳] Amazon CloudWatch Logsから最大限の価値を引き出していますか?このセッションに参加して、適切な洞察のために最適化することで、CloudWatch Logsからより多くのものを引き出しましょう。CloudWatch Logsの最新機能を使用して、観測可能な状態を改善する方法を学びます。データにコンテキストを追加することで、既にインジェストしているログを使用する方法を学びます。機械学習によるパターン検出からEMFの高解像度機能、リアルタイムのインタラクティブ分析まで、ログから実用的な洞察を得る方法をご覧ください。

セッション動画

セッション資料

セッション情報

COP326

01. 導入

私は Bobby Hallahan です。AWS のオブザーバビリティチームのシニアスペシャリスト SA をしています。

Nikhil Dewan です。CloudWatch Logs のシニアマネージャーをしています。

本セッションでは、ログから実用的な洞察を得るための方法に焦点を当てます。特に、AWSのCloudWatchを使用して既に得られているデータ、または新しいワークロードの導入を検討している際に、どのようにしてその価値を最大化できるかを探求します。 まず、この300レベルのセッションでは、参加者にCloudWatchに関する一定の実践的な知識とオブザーバビリティに関する基本的な理解があることを前提としています。 オブザーバビリティの概要と基本的なレベル設定について説明し、それからCloudWatch Logsに関連する新しい機能の公開へと移ります。

公開されたばかりの新機能を活用して、ログデータからどのように洞察を導き出すかについて掘り下げていきます。 問いかけることから始めます。自身が所有またはサポートしているワークロードの健全性をどのように把握しているのか、 考えてみてください。

例えば、パフォーマンスに影響を与えた直近のアプリケーションの変更や、大規模なイベントの影響を考慮することが挙げられます。 オブザーバビリティについて話を進めると、多くの人にとってそれはさまざまな意味を持ちます。 制御理論の観点からは、外部出力からシステムの内部状態をどれだけ適切に推測できるかという指標です。 私たちは、ログ、メトリクス、トレースという形でテレメトリーを出力します。 これらのデータタイプは独立して存在せず、相関関係を使ってワークロードの特性を理解し、運用することが可能です。 オブザーバビリティは、ログデータだけでなく、相関関係を利用して洞察を得る方法にも重要な役割を果たします。 このセッションを通じて、皆さんがこれらの機能を有意義かつ影響力のある方法で使用できるようになることを目指しています。 定義を共有し、理解を深めることで、単一のツールを使用して、問題のあるメトリクスを解析し、その根本原因を特定できるようになります。 最後に、Nikhil にこの話を渡し、CloudWatch Logs とサービスの進化について少し説明してもらいます。

02. Amazon CloudWatchについて

CloudWatchはAWSにおける監視およびオブザーバビリティを提供するネイティブサービスで、 テレメトリデータの収集や分析などの一連の機能を持っています。 私達は使いやすい洞察とデータを詳しく調べる強力なツールを提供しており、今日はその詳細を話すつもりです。 CloudWatchは大規模なオブザーバビリティに焦点を当てていて、 AWSの顧客が毎月11,000兆のメトリクスや6エクサバイトのログを送信しています。

顧客はCloudWatchが完全に管理され、AWSアカウントに付随していること、 またセットアップや管理が不要であることを高く評価しています。 セキュリティ面も含めて拡張性が高く、100以上のAWSサービスと統合されています。 さらに、VPC や Route 53、Lambda など様々なAWSサービスからのテレメトリに加え、 カスタムアプリケーションからのメトリクス、ログ、トレースも取り扱えるため、 CloudWatchをテレメトリの基盤として利用できる点も気に入っています。 お客様は、自動で作成されるダッシュボードや コンテナや Lambda Insights のような厳選されたエクスペリエンス など、すぐに使えるインサイトを気に入っています。

これは、すべての重要なテレメトリを自動的に収集するだけでなく、視覚化するのに役立ちます。 最後に、お客様は、今日の講演のタイトルである、より実用的な洞察を得るのに役立つ分析への当社の投資を非常に高く評価しています。

今日のセッションで焦点を当てるCloudWatch Logsに関しては、2014年にサービスを開始して以来、 ロギングエージェントの提供を行い、フルマネージドのデータ取り込みと保存、 そしてメトリクスを作成するメトリクスフィルター機能を備えていました。

03. 主要なマイルストーン

私たちは創業以来、CloudWatch Logsサービスに多くの機能を追加してきました。特に私が注目するのは2018年のCloudWatch Logs Insightsのリリースです。これにより、対話型のクエリエンジンを通してログ分析が可能になりました。多くのお客様から好評を得て、ログ管理サービスから包括的なソリューションへと進化してきたことが実感できます。2019年にリリースした機能により、構造化されたログデータの分析が可能となりました。私たちは機能の追加を続け、多くのインサイトを提供する努力をしています。 私たちのサービスは、2023年にも新機能をリリースし続けており、Live Tailのリリースやクエリエクスペリエンスの強化など、多くの改善を行いました。そして今私が特に興奮しているのは、新しい機能であるCloudWatch Logs Infrequent Accessの追加です。これによりお客様は50%低いコストでログの管理が可能になり、標準ログクラスとの選択肢が広がりました。 当社はお客様から聞いた課題に応え、コストと性能のバランスが求められるロギングソリューションを提供しています。新しいログクラスは、顧客が必要とするコア機能を提供し、コストを削減します。標準ログクラスではリアルタイムの可視性や高度な分析機能が求められるケースに向けた機能を提供し、低頻度アクセスのログクラスは事後のフォレンジック分析やコンプライアンスのためのコアロギングが必要な場合に適しています。 最終的に、CloudWatch Logsの新しい低頻度アクセス機能によって、すべてのログを一元化し、その結果としてアプリケーションの健全性の可視性を高め、コストを効率よく抑えながら必要な機能を提供できるようになりました。お客様はこれらの新機能を利用して、ログ量の増大という課題に対応し、運用の効率化とコスト削減を実現できるようになります。これにより、ログが提供する価値を最大限に引き出すことが可能です。Fluent CommerceやDesignCrowdなど、早期採用企業も私たちのサービスにより、効率的なスケーリングとログの統合を成功させています。 私たちのサービスは、お客様がアプリケーションが適切に機能するかどうかを追跡し、潜在的な問題を積極的に特定するのに役立ちます。これは、より事前の監視と予測に基づいて問題に対処する能力を高めることで、運用の効率を大幅に向上させます。

04. レゴアナロジー

レゴブロックを使ったアナロジーを使って、ある概念を説明したいと考えます。私は2人の息子を持つ父親で、彼らはレゴが大好きです。私と妻は彼らに遊んだ後の片付けを促していますが、実際そうすると次のプレイセッションの開始時に、必要なブロックを探す手間が発生してしまうのです。息子たちが必要な色や形のブロックを探すのを助けてほしいと頼まれると、私たちは一生懸命にそのブロックを探す必要が出てきます。

05. パターン分析

現在のログ管理は量が多く整理が難しいものです。ブロックを色別に整理する魔法の杖のように、CloudWatch Logsはログを重要なパターンに自動的に整理し、分析を容易にします。例えば、ログには多くの情報が含まれており、タイムスタンプやAPIリクエスト情報などが混在していますが、パターン分析機能を使うことで重要な情報を効率的に抽出することができます。新しいパターンが出現すると、ログの中の異常を検出し、何が変わったかを迅速に理解することが可能です。 また、異常検出機能を利用して常にログを監視することで、新たな問題の兆候をいち早く発見し対応できます。この機能はCloudWatch Logsを活用しているお客様にとって、ログの分析方法を変革する可能性があると信じています。さらに、AIを活用した自然言語クエリの生成機能を新たにリリースしました。これにより、ユーザーは自然言語で質問を投げかけるのみで、適切なクエリを生成し、迅速にテレメトリの洞察を得られるようになります。 これらの機能により、ログ分析に要する時間と労力が大幅に削減され、更なるデータの洞察が可能になるでしょう。日々蓄積される大量のログデータを有効に活用し、システムの安定稼働や問題解決をより迅速かつ効率的に行うことができるようになることが期待されています。これらの新しい機能はまず米国東部バージニアと米国西部オレゴンの2つのリージョンでプレビューが開始され、これらを実際に体験できるようになりました。これらの進化したログ分析ツールは、今後さらに広範な顧客に対する価値を提供すると期待されています。

06. デモ

ここでは、オブザーバビリティのワークショップで使用されるペットの里親募集ウェブサイトのアプリケーションを題材に、その機能と特にフォーカスすべき点について議論していきます。アプリケーションはマイクロサービスベースで、異なるフロントエンドが備わっており、里親募集のリスト作成や料金の支払いをするAPIがあります。このサイトでは種々のペットを検索し、里親募集を検討したり実行したりすることができますが、ワークショップ用にエラーが組み込まれており、異常検知を行うためのログが重要な役割を果たします。 私が実際に集中しているのは、検索APIとリスト採用APIです。これらを利用して、異常検出が有効になっているECSペットのロググループを確認し、異常検出オプションを有効にして、発見された異常のリストを確認します。それには異常のパターンや傾向、最初と最後に検出された時刻などの情報が含まれており、異常行動が正確に検出されたかどうかのフィードバックを提供することも可能です。 ログの異常を詳細に見ると、検索中や構築中にエラーやアクセス拒否などが発生していることが分かります。特定のログサンプルを確認することで、Amazon S3に関連するアクセス拒否エラーが記録されていることが明らかになります。これは、S3バケットレベルやサービスレベルの操作がCloudTrailに記録されることと矛盾しません。LogsInsightsやCloudTrailを使ってその原因を追究するのがよいでしょう。 以上の要約に基づいて、この文章は、マイクロサービスベースのアプリケーションの異常検出機能と、それを通じて発見されるエラーパターンやログの分析プロセスについて説明しています。アプリケーションの実際の挙動を見ることで、開発者はより効果的にシステムの問題を特定し、対処することが可能になります。

07. クエリジェネレーター

CloudTrail コンソールが表示され、ログの書き込まれたリージョンでCloudTrail ログ グループが選択されますが、私はLogs Insightsについて詳しくなく、クエリ言語もよく知りません。始めるべき点も分からず、保存されたクエリもありません。かつて私は同じような状況に遭遇し、それは困難でストレスの原因でした。クエリ アシストとクエリ ジェネレーターは価値があると考えており、何を探すか明確な言葉で尋ねることができます。S3エラーを探すためにクエリを生成し、フィルタがeventSourceであり、Amazon S3が存在することがわかります。特定のフィールド名を検索する方法やクエリの構築方法を学び、設定を含めることができます。クエリジェネレーターはロググループのコンテキストを使用し、選択されたフィールドを導きます。利用しているロググループに基づいて異なる結果が得られます。フィールド検出がないロググループを選ぶとメッセージ解析を試みますが、フィールド検出があるロググループを使用すれば、それらを指定してクエリを実行できます。クエリを実行して何が得られるか見てみます。

08. クエリをアップデート

まず、クエリジェネレーターを使用してクエリを更新し、イベント名ごとに結果をグループ化すれば、使用されたイベントの種類やセッションを発行したユーザー名が得られると述べられています。 さらに、更新されたクエリを利用して、AWSサービスのロールから生じるエラーを特定し、CreateBucket イベント名で359回のアクションがあったことが指摘されています。これは、IAM権限エラーや、アプリケーションコードにバグが存在する可能性を示唆しています。1時間に300ものS3バケットを作成するのは理にかなっていないため、S3オブジェクトを作成するはずが間違ってバケットを作成してしまっている可能性があります。 また、Logs Insightsを使用してログデータを分析する方法について詳述しており、例えば特定のAPIのログを調査することでペットの里親募集リストの生成などのプロセスが確認できるといいます。 最後に、より効果的なログ分析のためのツールとしてLogs Insightsの使用を推奨し、このツールが提供するデフォルトクエリを実行することでログデータに対する洞察が得られる点を強調しています。

09. パターン分析

20個のサンプルログを調べることで、主にHTTPアクセスログやJSONフォーマットのログが混在し、3つの特定のパターンが観察できることが示されています。この分析から、ログ行の全確認ではなく、パターンを見ることで、ロググループの大部分を理解し、イベント比率による選択が可能であることが分かります。 特に、「GetTopTransactions」というメインのAPI呼び出しや、「ListAdoptionsMiddleware」というAPIのログが抽出されており、それぞれがどのような情報を含んでいるか(例えば「resultCount」やトークン値など)が説明されています。7,000件のGetTopTransactionsのログイベントが、1時間以内のロググループの78%を占めていることが示され、ロググループ内のパターンの優位性や価値について考えるきっかけを与えています。それに加えて、ListAdoptionsMiddlewareの結果が2つ未満の場合は問題があるかもしれないという実用的な分析例も提供しています。 また、すべてのログイベントを分析するためのオプションが提供されており、変更を確認するための比較機能も紹介されています。この機能は過去のデータとの差分を見ることで、何か重要な変更があったかどうかを識別できるようになっています。このような比較は、アプリケーションの更新や変更があった後の影響を理解する上で非常に貴重です。

10. メトリクスフィルター

私はログに関する洞察をさらに深めるために新しいサービスを調べ、パターン検出や異常検出に焦点を当てた作業に戻ることにします。私はクエリサポートを受け、ログからの洞察を得る様々な方法についても話し始めました。ログからの情報を捉え、警告を発し、対応する方法に焦点を当てるのが最初のステップです。 特に、CloudWatch Logsの機能として、メトリクスフィルタを活用することが重要です。メトリクスフィルタはログからの情報を取り出し、それをメトリクスに変換し、アラームを設定するのに役立ちます。これにより、異常検出やダッシュボードの作成、計算式の使用など、CloudWatchメトリクスが提供する全ての機能を活用できます。メトリークスフィルタによって、指標に基づいてアラームを設定することが可能になり、長期間のデータ保持も可能です。 次に、具体的なメトリクスフィルタの使用例を紹介します。例えば、HTTP応答のステータスが200であるリクエストをカウントするといったフィルター設定が可能です。また、ログフィールド値を指標として抽出することも可能で、レイテンシなどの測定を行うことができます。 さらに、メトリクスフィルタのディメンションサポートについても説明します。ディメンションを使用することで、動的に新しいメトリクスを作成し、より具体的な情報をメトリクススとして記録することができます。これにより、例えばHTTPメソッドやステータスコードごとに異なるメトリクススを得ることができ、より有意義な情報を把握することが可能になります。 ディメンションがより重要となるのは、完全修飾メトリクス名として、クエリや検索、クロスアカウント分析に活用できるためです。しかしながら、ディメンションには限界があります。たとえばIPアドレスなどの高カーディナリティ(一意性が高い指標)は、Contributor Insightsでの分析が適しています。Contributor Insightsでは、ログデータ内の固有の組み合わせを分析し、重要な外れ値や貢献者を特定することができます。 最後に、実際のデモを通じて、これらの機能がどのように役立つかを具体的に示します。VPCデータを例として取り上げ、深い洞察を得る方法を実演します。これらの解説を通じて、ログから得られる情報を最大限に活用するための様々なアプローチがあることを明らかにします。

11. VPC Insights

私たちは、送信元と宛先アドレスを示す Contributor Insight ルールの性能について検討しています。これは通信のバイト数を追跡し、数時間の間に送信元と宛先のユニークなIPアドレスの組み合わせの総数を表示します。例えば、3時間で23,000の組み合わせが、12時間では47,000の組み合わせが検出されたとします。しかし、トップ10などの重要な統計だけに興味がある場合、47,000もの詳細な統計を提供することは意味がないかもしれません。Contributor Insightsは、ログから多数のイベントを抽出し、上位の貢献者を把握するために設計されており、VPC フロー ログなどの様々なソースからデータを取得できます。 また、DynamoDBなどのAWSサービスと統合できるほか、CloudTrailや独自のカスタムログにも対応可能です。このツールは非常に強力であり、ルールを調整することでVPCフロー ログの確認が可能です。ログ グループのプレフィックスによって選択することができるため、アカウント全体で動的に機能し、新規に作成されたVPCやログに対応できます。 メトリクスフィルターは、特定のログパターンをメトリクスに変換する機能であり、ペットに関連するログデータに例を見てみましょう。ペットの種類、ID、色などの異なるフィールドに注目し、これらをメトリクスフィルターで抽出することができます。SLAの基準を構築し、resultCountなどの項目に基づいてメトリクスを取得できます。 さらに、メトリクスフィルターは正規表現にも対応しており、JSON形式のログだけでなく、テキストログにも適用できます。これにより、さまざまなログ形式に対応し、ログ内の特定の情報をメトリクスとして抽出できるようになりました。 新しいメトリクスが追加された場合は、ダッシュボードに簡単に反映できるように、検索リクエストに含めることが推奨されます。これにより、メトリクスの動的な生成とレンダリングが可能です。最後に、リストアダプションのメトリクスがある場合、様々な統計を取得することができます。例えばパーセンタイルランクによって、特定の結果のリストリクエストがある割合を明らかにすることができます。

12. データ保護

お客様が必要としているのは、誤ってログに記録された機密データや個人情報(PII)への不正アクセスを防ぐ機能です。人間やチャットボットといった多様なログ生成元が存在するため、この問題はとても複雑です。そのため、お客様はユーザーによるPIIへのアクセスを保護するために、複雑なカスタムソリューションを必要としています。 re:Inventで発表したCloudWatch Logsの機密データ保護は、まさにこのようなニーズに応えるものです。次世代AIを活用したチャットボットなどがログに名前や生年月日、SSN(社会保障番号)などの情報を記録すると、CloudWatch Logsの機密データ保護機能がこれらのPIIデータを検出してマスクすることができます。 加えて、中央のコンプライアンス担当者がPIIデータを監査する必要がある場合、適切なアクセス権限を持つ人ならば、データを検証したり一時的にマスクを解除したりすることが可能です。 これに関連して、医療、財務、認証情報など4つの異なるテーマにわたる100以上の管理されたデータ識別子をサポートしています。これにより多言語にわたる問題の検出が可能になります。 次に、お客様に人気のある2つの機能、Live TailとLog Insightsについてご紹介します。Live Tailは、リアルタイムでログをインタラクティブに表示する機能で、デプロイ中や設定変更時の問題に即時に対応できます。また、Log Insightsは専用のクエリエンジンで、ログフィールドが自動的に検出され、問題のトラブルシューティングに役立ちます。作成したクエリは保存して再利用が可能で、結果をエクスポートしてチームと共有することもできます。 さらに昨年、アカウント間でログ分析をサポートする機能が追加されました。これにより、データの操作が簡単になりました。これらのコマンドはSQLベースで理解しやすく、今後ボビーがデモを通じて機能について詳しく説明します。

13. Logs Insights

まず、Logs Insights コンソールを使って、リアルタイムでログを確認する方法を示します。Live Tail 機能を用いれば、Lambda サービスなどで生成されるログをほぼリアルタイムで見ることができ、有用なフィードバックを受け取ることが可能です。さらに、特定のログのパターンをフィルタすることで、拒否されたイベントのみを確認することもできます。 次に、VPC フロー ログの確認方法を紹介します。クエリを開始すると、さまざまなフロー ログが表示され、特定のネットワークインターフェイス(ENI)がハイライトされます。これにより、特定のポートやプロトコルを含む新しいイベントをダイナミックに確認することができます。 Logs Insights の活用についても話します。こちらは顧客が KMS コストに関するデータを分析し、高額なコストの原因と責任者を特定するためのツールです。このツールを使いこなせば、複数の統計を一度に計算し、KMS のリクエストに関するコストを計算することができます。これにより、コストの合計を出し、使用者や役割ごとにリストアップすることが可能になります。 ログの効率的な利用においては、ログを構造化することや、メトリクスデータの取り込みが重要です。EMF(埋め込みメトリクス形式)を使うことで、高いデータカーディナリティのログを記録することができます。JSON 形式のログを記録したり、メトリクスデータとログデータを組み合わせたりすることで、効率良くデータ収集が可能になります。 また、X-Ray トレースをログに追加することで、ログに関連するトレース ID の指定が可能になります。これはサービスレンズ内でカスタムログメトリクスとトレースの相関関係を構築できるため、サービスの品質向上に役立ちます。 最後に、過去10年の発展を経た CloudWatch Logs の進化について説明し、リリースされた新しいロギング機能の紹介をしました。これらの機能には、低頻度アクセス ログクラス、機械学習機能、そして自然言語クエリ生成機能が含まれます。これにより、メトリクスフィルター、機密データ保護、Contributor Insights の使用、Live Tail や Log Insights を使った問題の調査が簡単になります。構造化ログとトレース注入を使用してログを強化し、最適な製品を提供するためにAWSチームは努力しています。

所感

新しい CloudWatch Logs の機能や使い方について知ることができました。

Log InsightsやLive Tailなどの新機能を使うと、リアルタイムでのログ監視や、 より効率的なトラブルシューティングを行うことができます。

オブザーバビリティの強化に向けて、CloudWatch がどう進化しようとしているのか、 興味深い洞察が得られたセッションでした。

本セッションの内容に興味を持たれた方は、上部のリンクからセッション動画、セッション資料をご覧ください。

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。