Amazon Web Services ブログ

AWS Lambda を使用して構築されたサーバーレスアプリケーションのパフォーマンスを Application Signals で追跡する

2023 年 11 月、Amazon EKSAmazon ECSAmazon EC2 でホストされているアプリケーションの分散システムのパフォーマンスのモニタリングに伴う複雑さを解決することを目的とした AWS 組み込みのアプリケーションパフォーマンスモニタリング (APM) ソリューション Amazon CloudWatch Application Signals が発表されました。Application Signals は、複数のメトリクス、トレース、ログにわたってテレメトリを自動的に相関させることでトラブルシューティングをスピードアップし、アプリケーションの中断を軽減します。Application Signals は、アプリケーションのコンテキストでパフォーマンスを分析するための統合エクスペリエンスを提供することで、最も重要なビジネス機能をサポートするアプリケーションに焦点を当てて生産性を向上させます。

11 月 21 日、AWS Lambda 用 Application Signals for Lambda の提供を発表しました。これにより、関数のアプリケーションの正常性を評価するために必要な手動セットアップの複雑さやパフォーマンスの問題が排除されます。お客様は、Lambda 用 CloudWatch Application Signals を使用してアプリケーションのゴールデンメトリクス (リクエストの送受信量、レイテンシー、障害、エラー) を収集できるようになりました。

AWS Lambda は基盤となるインフラストラクチャの複雑さを無視するので、サーバーの正常性をモニタリングする必要なくアプリケーションの構築に集中できます。これにより、アプリケーションのパフォーマンスと状態のモニタリングにフォーカスを移して、最高のパフォーマンスと可用性でアプリケーションを運用することができます。そのためには、重要なビジネスオペレーションやアプリケーションプログラミングインターフェイス (API) のトランザクション量、レイテンシの急上昇、可用性の低下、エラーなどのパフォーマンスに関するインサイトの高度な視覚化が必要になります。

以前は、異常の根本原因を突き止めるために、複数のツールにわたって分散したログ、メトリクス、トレースを相互に関連付けるのに多くの時間を費やす必要があり、平均修復時間 (MTTR) と運用コストが増大していました。さらに、カスタムコードまたはオープンソース (OSS) ライブラリを使用した手動インストルメンテーションでの独自の APM ソリューション構築には多くの時間がかかり、複雑である上に多くの運用コストが生じ、大量の Lambda 関数を管理する場合にコールドスタート時間が長くなり、デプロイの課題が発生することがありました。現在、Application Signals を使用して、アプリケーション開発者が手動でインストルメンテーションを行ったり、コードを変更したりすることなく、サーバーレスアプリケーションの正常性とパフォーマンスの問題をシームレスにモニタリングしてトラブルシューティングを行うことができるようになりました。

仕組み
Application Signals の組み込み済みの標準化されたダッシュボードを使用すると、重要なビジネスオペレーションや API のパフォーマンスメトリクスをドリルダウンして分析することで、数回のクリック操作だけでパフォーマンス異常の根本原因を特定できます。これにより、関数とその依存関係の間の相互作用を示すアプリケーショントポロジを視覚化できます。さらに、アプリケーションにサービスレベル目標 (SLO) を定義して、最も重要な特定のオペレーションをモニタリングできます。SLO の例には、28 日のローリング間隔でウェブページを 99.9% の精度で 2000 ミリ秒以内にレンダリングするという目標の設定などがあります。

Application Signals は、拡張 AWS Distro for OpenTelemetry (ADOT) ライブラリを使用して Lambda 関数の自動インストルメンテーションを行います。これにより、コールドスタートのレイテンシー、
メモリ消費量、関数呼び出し時間が削減されてパフォーマンスが向上するので、アプリケーションをすばやくモニタリングできます。

ここでは、既存の Lambda 関数 appsignals1 を使って説明します。Lambda コンソールで Application Signals を設定して、このアプリケーションのさまざまなテレメトリを収集します。

関数の [設定] タブで [モニタリングおよび運用ツール] を選択して、[アプリケーションシグナル][Lambda service traces] の両方を有効にします。

この Lambda 関数がリソースとしてアタッチされているアプリケーション myAppSignalsApp があります。最も重要な特定の複数のオペレーションをモニタリングするためにアプリケーションに SLO を定義しました。アプリケーションが 1 日のローリング間隔で 99.9% の精度で 10 ミリ秒以内に実行されるという目標を定義しました。

Application Signals を呼び出してから関数が検出されるまでに 5~10 分かかることがあります。そのため、サービスを表示するには [サービス] ページを更新する必要があります。

[サービス] ページには、Application Signals によって検出されたすべての Lambda 関数のリストが表示されます。送信されたすべてのテレメトリはここに表示されます。

その後、[サービス] マップからアプリケーショントポロジ全体を視覚化し、リクエストの量、レイテンシー、障害、エラーの新しく収集されたメトリクスを使って、サービスの個々のオペレーションや依存関係にわたって異常をすばやく見つけることができます。トラブルシューティングを行うために、任意のアプリケーションメトリクスグラフの任意の時点をクリックして、そのメトリクスに関連する相関トレースとログを検出し、エンドユーザーに影響を与える問題が個々のタスクまたはデプロイに分離されているかどうかをすばやく特定できます。

今すぐご利用いただけます
一般提供が開始された Lambda 用 Amazon CloudWatch Application Signals は、Lambda と Application Signals が利用可能なすべての AWS リージョンで今すぐ使用を開始できます。現在、Application Signals は Python と Node.js のマネージドランタイムを使用する Lambda 関数で使用できます。近い将来、他の Lambda ランタイムのサポートが追加される予定です。

詳細については、AWS Lambda 開発者ガイドApplication Signals 開発者ガイドを参照してください。ご質問は AWS re:Post for Amazon CloudWatch、または通常の AWS サポート窓口までお送りください。

Veliswa

原文はこちらです。