本文の内容は、2022年11月10日にAlan Murphyが投稿したブログ(https://sysdig.com/blog/aws-lambda-telemetry/)を元に日本語に翻訳・再構成した内容となっております。
AWS Lambdaのようなサーバーレスコンピューティング環境における観測性は、常に課題でした。サーバーレス環境の純粋な性質は、以下の問題により、従来の可観測性ツールがやや不利になることを意味しています。
- サーバーレスコンピューティングは通常、静的なランタイム環境を必要とせず、また提供しません
- サーバーレス機能の刹那的な性質
- 関数の実行にしばしば見られる微小時間
- サーバーレス機能がいつ、どこで実行されるかの分散性
クラウドプロバイダーはしばしば、呼び出し、同時実行、期間、エラー数などの実行時メトリクスを公開することによって、サーバーレス機能のコントロールプレーンメトリクスに相当するものをエクスポートしますが、これらのメトリクスへのアクセスには、これまで文字通りコンシュームとレイテンシーの代償が必要でした。新しく発表されたAWS Lambda Telemetry APIは、サーバーレス機能のメトリクスに実行時に直接アクセスできるようにすることで、この2つの問題を解決することを目的としています。
AWS Lambdaの基礎知識
AWS Lambdaはサーバーレスサービスで、実行環境(AWS EC2、AWS EKS、Kubernetesなど)を用意することなく、オンデマンドでコード(または関数)を実行することができるようになります。AWS Lambda functionのサポートは、例えばHello World Pythonスクリプトのような非常に単純なfunctionから、呼び出されるとHTTP 200応答コードとともにHTTP経由でどこにでもある「Hello World」を返すだけで、AWS Alexaスキルを構築して実行するのにLambdaを使用するなど、functionとして追加のAWSサービスとの直接統合を可能にするものまで、多岐にわたっています。AWS Lambdaサービスの詳細については、AWS Lambdaサービスのホームページをご覧ください。AWS Lambdaは事前に設定されたランタイムを必要としませんが、それでもLambda functionは実行環境で実行されます。この実行環境では、Lambda Layersと呼ばれる外部のコードやツール、ポストプロセッサーを、同じ実行環境内のLambda functionにアタッチすることもできます。Lambda Layersは、Lambda functionの実行結果だけでなく、各Lambda functionの実行からコントロールプレーンイベントを抽出するなど、Lambda functionの実行周辺の動作にも対応できる柔軟性の高いシステムです。
Sysdig Monitor Lambda Extension
本日AWSは、AWS Lambda Telemetry APIの提供を発表しました。これによりSysdigのようなプロバイダーは、Lambda LayersとしてパッケージされたそれぞれのLambda functionと一緒に実行する特定の遠隔測定ツールを作成できるようになりました。これらのツールまたは拡張機能は、各Lambda functionにアタッチして、functionイベント、function 開始時間、function 終了時間、function エラーなどの遠隔測定データをコンシュームすることができます。Lambda functionが実行されると、そのfunctionと一緒に拡張機能が実行されます。AWS Lambda Telemetry APIの一般提供に伴い、SysdigはAWS Lambda Telemetry API用のSysdig Monitor Lambda Extensionのプレビュー提供を発表します。このツールにより、Sysdigは個々のLambda functionから来るイベントデータに基づいてリアルタイムのメトリクスを生成・収集し、それらのメトリクスをSysdig Monitorアカウントに直接プッシュすることができるようになります。これにより、他のコアな観測可能メトリクスと一緒に、ほぼリアルタイムのサーバーレスメトリクスをコンシュームすることができます。
どのように動作するのですか?
Sysdig Monitor Extension for AWS Lambdaは、サーバーレスコントロールプレーン環境を監視するために重要な4つのメトリクスを生成します。- aws_lambda_invocations
- aws_lambda_duration
- aws_lambda_postruntime_extensions_duration
- aws_lambda_errors
Telemetry APIプラグイン for Sysdigの仕組み
AWS Lambda Telemetry APIは、SysdigがLambda functionからのイベントストリームに直接プラグインすることを可能にします。
Lambda functionのイベントをOpenTelemetryイベントと互換性のあるフォーマットでプッシュし、他の拡張機能でコンシュームできるようにし、観測ツールがそれらのイベントをネイティブに取り込み、Sysdigの場合、実行可能なメトリクスに変換することができるようにします。
これはリアルタイムアーキテクチャであるため、Lambda functionが実行されるたびにイベントが生成され、実行時にOTEL互換のフォーマットでLambdaイベントに即座にアクセスできるようになります。Lambda functionが呼び出されると、Telemetry APIを通じてイベントが発生・公開され、Sysdigは各functionの実行時にイベントをfunction単位で直接コンシュームすることができます。Sysdigがこれらのイベントをコンシュームすると、呼び出し回数やfunction時間などのリアルタイムなメトリクスが生成され、Sysdig Monitorプラットフォームへプッシュされます。
その結果、Lambda functionからメトリクスを受け取る際のレイテンシーが低くなり、大量の関数のワークロードや環境では非常に重要なものとなっています。Lambda functionのイベントの結果に他のコンポーネントが依存する可能性があるシステムで低レイテンシーを要求する場合、それらのイベントをSysdig Monitorのようなリアルタイム観測スタックに流す機能は重要です。Sysdig Monitor Extension for AWS Lambda Telemetry APIをデプロイすることで、ユーザーはすぐにリアルタイムのイベントストリームに接続し、観測可能なスタックへのメトリクス受信のレイテンシーを低減することができます。
すでにAWS CloudWatch Metric StreamsからメトリクスをインジェストしているSysdig Monitorユーザにとって、AWS Lambda Telemetry APIから生成されたメトリクスを追加することで、より低いレイテンシとより高い忠実度で特定のLambdaメトリクスにアクセスすることができます。Lambda Telemetry APIから生成されるメトリックのリストは、AWS CloudWatch Metric Streamsを通じてAWS Lambdaのメトリクスをストリーミングするときに利用可能なトリクスの完全なリストと一致することを意味するものではなく、リアルタイム機能監視のための非常に焦点を当てたトリクスのリストを提供するものです。
AWS CloudWatch Metric Streamsを通じてメトリクスをコンシュームしたくないお客様にとって、これらの重要なLambda functionメトリクスに直接アクセスすることは、AWS CloudWatch Metric Streamsに関連する処理および取り込みコストを低減しながら、必要なリアルタイム観測性を提供することができます。
詳細については、公式ドキュメントをご覧ください。
Sysdig Monitor Extensionのメリット
観測ツールのゴールは、観測スタック全体の柔軟性を高め、MTTRを低下させることです…言い換えれば、できるだけ短時間でできるだけイベントソースに近づくことです。Sysdig Monitor Extension for AWS Lambda Telemetry APIのプレビュー提供により、Sysdigユーザーは以下のメリットをすぐに享受することができます。インストゥルメンテーションの簡素化
Telemetry APIを通じて直接利用可能なプラットフォームメトリクスを公開することで、Sysdigユーザーは、重要なLambdaサーバーレスメトリクスをSysdig Monitorプラットフォームに取り込むためのより直接的な経路を手に入れることができます。これにより、リアルタイムサーバーレス機能のレイテンシーとMTTRの低減につながります。デフォルトでは、AWS CloudWatch Metric Streamsを通じたAWS Lambdaのメトリクスは通常1分であるのに対し、AWS Lambda Telemetry API向けSysdig Monitor Extensionは、10秒ごとのケイデンスでイベント生成されたメトリクスをSysdig Monitoringプラットフォームへプッシュします。functionの状態への素早いアクセスは、Lambda functionのMTTRを低減させ、リアルタイムイベントドリブンのシステムには不可欠となります。
可観測性の向上
AWS Lambda Telemetry APIは、Lambda実行環境のライフサイクル(初期化、呼び出しなど)の実行時パフォーマンスとフェーズについて、より深い洞察を提供します。Telemetry APIを介したリアルタイムイベントに基づいてメトリクスを生成することで、SysdigはAWS Lambda functionのパフォーマンスや状態に対するより深い洞察を提供します。- コールドスタートの視認性向上(initフェーズに関連するイベントを通じて)
- 初期化の成功と動作の理解(initフェーズ中)
- タイムアウト/リセットにより呼び出しフェーズでしばしば発生する問題の可視化(initイベントの「フェーズ」可視化を通じて)。
Sysdig MonitorでのAWS Lambdaの監視可能性
OpenTelemetry(OTEL)の互換性
現在、SysdigはAWS CloudWatch Metric Streamsが実装するOTEL形式をネイティブにサポートしており、AWS Kinesis FirehoseからJSON形式のメトリクスを直接受け取り、そのデータ形式に含まれるメトリクス情報をPrometheusネイティブのメトリクスに変換しています。Sysdig Monitor Lambda Extensionの追加により、SysdigはそのサポートをAWS Lambda Telemetry APIによるLambda functionから生成されるリアルタイムイベントにも拡張しました。OTEL互換のSysdig Monitor Extensionは、Telemetry API経由でLambdaイベントを簡単かつ効率的にコンシュームし、Lambda functionの実行と環境に関するインサイトを収集します。コスト削減
Sysdig Monitor Extension for AWS Lambdaは、AWS CloudWatch Metric Streams経由でAWS Lambdaが提供するフルメトリクススイートの取り込みを補強するように設計されていますが、AWS Lambda functionのリアルタイム監視に必要な主要メトリクスのみを取り込むためのコスト効率の良い方法を提供することが可能です。Sysdig Monitor Lambda Extension経由で直接メトリクスをインジェストすることで、ユーザーはAWS CloudWatch Metric Streamsを(要件が許す限り)バイパスすることができ、AWS LambdaからAWS CloudWatch Metric Streams経由で利用できるすべてのメトリクスを取り込むために通常かかる費用を節約することができます。プレビューにて提供を開始
Sysdig Monitor Extension for AWS Lambda Telemetry APIは、現在プレビューモードで利用可能です。拡張機能へのアクセス、インストール、設定、使用方法の詳細については、https://aws.amazon.com/blogs/compute/introducing-the-aws-lambda-telemetry-api/ を参照してください。30日間のトライアルにサインアップし、サインアッププロセスでAWSリージョンを選択すれば、今すぐ無料で試すことができます。
AWS MarketplaceでSysdig Secure DevOps Platformをご購入ください!
Sysdigは、AWS Marketplaceで簡単にご購入いただくことができます。