AWS Lambda のログ記録とメトリクス。 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Lambda のログ記録とメトリクス。

ラムダワークロードに合わせてサーバーを管理したり監視したりする必要がなくなり、自動的に以下と連携します CloudWatchメトリクスと CloudWatch アプリケーションのコードをさらに設定したりインストルメンテーションしたりせずにログを記録します。このセクションでは、Lambda で使用されるシステムのパフォーマンス特性と、構成の選択がパフォーマンスにどのように影響するかを理解することができます。また、パフォーマンスの最適化やアプリケーションレベルの問題の診断のために Lambda 関数のログに記録して監視するのに役立ちます。

Lambda 関数のログを記録する

Lambda は、Lambda 関数からの標準出力と標準エラーメッセージを次の宛先に自動的にストリーミングします。 CloudWatch ロギングドライバーを必要とせずにログを記録します。Lambda はまた、Lambda 関数を実行するコンテナを自動的にプロビジョニングし、個別のログストリームにログメッセージを出力するように設定します。

それ以降の Lambda 関数の呼び出しでは、同じコンテナを再利用し、同じログストリーミングに出力することができます。Lambda は新しいコンテナをプロビジョニングし、新しいログストリーミングに起動を出力することもできます。

Lambda 関数が最初に呼び出されると、Lambda は自動的にロググループを作成します。Lambda 関数には複数のバージョンがあり、実行するバージョンを選択できます。Lambda 関数の呼び出しのすべてのログは、同じロググループに保存されます。名前は変更できず、/aws/lambda/<YourLambdaFunctionName> の形式で設定します。Lambda 関数のインスタンスごとに、ロググループ内に個別のログストリーミングが作成されます。Lambda には、ログストリームの標準的な命名規則があり、YYYY/MM/DD/[<FunctionVersion>]<InstanceId> の形式で設定します。InstanceId は、Lambdaファンクションインスタンスを識別するために AWS によって生成されます。

ログメッセージは JSON 形式にすることをお勧めします。JSON 形式を使用すると、より簡単にクエリを実行できるからです。 CloudWatch ログインサイト。また、より簡単にフィルタリングやエクスポートを行うことができます。ロギングライブラリを使用してこのプロセスを簡略化することも、独自のログ処理関数を作成することもできます。ログメッセージの書式と分類に役立つログライブラリを使用することをお勧めします。例えば、Lambda 関数が Python で書かれている場合は、Python ログモジュールをクリックして、メッセージをログに記録し、出力形式を制御することができます。Lambda は Python で記述された Lambda 関数に Python ロギングライブラリをネイティブに使用しており、Lambda 関数内でロガーを取得してカスタマイズできます。AWSラボでは以下のものを作成しました。AWSPython 用ラムダパワーツールコールドスタートなどの重要なデータをログメッセージに簡単に追加できるようにする開発者ツールキット。このツールキットは Python、Java、タイプスクリプト、.NET で利用できます。

また、ログ出力レベルを変数で設定し、環境や要件に応じて調整することもベストプラクティスの一つです。Lambda 関数のコードは、使用されるライブラリに加えて、ログ出力レベルに応じて大量のログデータを出力する可能性があります。これは、ログのコストやパフォーマンスに影響を与える可能性があります。

Lambda では、コードを更新することなく、Lambda 関数のランタイム環境の環境変数を設定することができます。例えば、コードから取得できるログ出力レベルを定義する LAMBDA_LOG_LEVEL 環境変数を作成することができます。次の例では LAMBDA_LOG_LEVEL 環境変数を取得し、その値を使用してログ出力を定義しようとしています。環境変数が設定されていない場合、デフォルトで INFO レベルになります。

import logging from os import getenv logger = logging.getLogger() log_level = getenv("LAMBDA_LOG_LEVEL", "INFO") level = logging.getLevelName(log_level) logger.setLevel(level)

から他の宛先へのログの送信 CloudWatch

他の宛先 (Amazon など) にログを送信できます。 OpenSearch サブスクリプションフィルターを使用して、サービスまたは Lambda 関数)。Amazon を使用していない場合 OpenSearch サービスでは、Lambda 関数を使用してログを処理し、に送信できます。AWSお好みのサービスを使ってAWSSDK。

また、Lambda 関数で AWS クラウド外のログ送信先用の SDK を使用し、ログステートメントを直接任意の送信先に送ることも可能です。このオプションを選択する場合、レイテンシー、追加の処理時間、エラーおよびリトライ処理、運用ロジックの Lambda 関数への結合などの影響を考慮することをお勧めします。

Lambda 関数のメトリクス

Lambda を使用すると、サーバーを管理したりスケーリングすることなくコードを実行できるため、システムレベルの監査と診断の負担がほぼなくなります。ただし、Lambda 関数のシステムレベルでパフォーマンスと呼び出しメトリクスを理解することは重要です。これは、リソース構成を最適化し、コードのパフォーマンスを向上させるのに役立ちます。パフォーマンスを効果的に監視および測定することで、ユーザーエクスペリエンスを向上させ、Lambda 関数を適切にサイジングすることでコストを下げることができます。一般的に、Lambda 関数として実行されるワークロードには、取得、および分析が必要なアプリケーションレベルのメトリクスもあります。Lambda は埋め込みメトリックス形式を直接サポートするため、アプリケーションレベルのキャプチャが可能になります。 CloudWatch メトリクスをより簡単に。

システムレベルのメトリクス

Lambda は以下と自動的に統合されます。 CloudWatch メトリクスと以下の一式を提供しますLambda 関数の標準メトリクス。また Lambda は、これらのメトリクスを使用して Lambda 関数ごとに個別のモニタリングダッシュボードも提供します。モニタリングする必要がある重要なメトリクスは、エラーと呼び出しエラーの 2 つです。呼び出しエラーと他のエラータイプの違いを理解することは、Lambda デプロイの診断とサポートに役立ちます。

呼び出しエラー は Lambda 関数の実行を防ぎます。これらのエラーは、コードが実行される前に発生するため、コード内でエラー処理を実装して識別することができません。代わりに、これらのエラーを検出し、オペレーションとワークロードの所有者に通知する Lambda 関数のアラームを設定する必要があります。これらのエラーは、多くの場合、設定や権限のエラーに関連しており、設定や権限の変更が原因で発生することがあります。呼び出しエラーは、関数の複数回の呼び出しを引き起こすリトライを開始する可能性があります。

Lambda 関数を正常に起動した場合、関数から例外がスローされた場合でも HTTP 200 レスポンスが返されます。Lambda 関数は、エラーハンドリングを実装し、例外を発生させ、Errors メトリクスが Lambda 関数の失敗した実行を捕捉し識別するようにする必要があります。Lambda 関数の呼び出しから、実行が完全に失敗したか、部分的に失敗したか、成功したかを判断するための情報を含むフォーマットされたレスポンスを返す必要があります。

CloudWatch 提供するCloudWatch ラムダインサイト個々の Lambda 関数で有効にできます。Lambda インサイトは、システムレベルのメトリクス(例えば、CPU時間、メモリ、ディスク、ネットワーク使用量)を収集、集約、要約します。また、Lambda インサイトは、診断情報(コールドスタートや Lambda ワーカーのシャットダウンなど)を収集、集約、要約し、問題の切り分けや迅速な解決に役立てます。

Lambda インサイトは、埋め込みメトリック形式を使用して、Lambda 関数の名前に基づいたログストリーミング名のプレフィックスを持つ /aws/lambda-insights/ ロググループにパフォーマンス情報を自動的に出力します。これらのパフォーマンスログイベントにより、 CloudWatch 自動処理の基礎となるメトリック CloudWatch ダッシュボード。パフォーマンステストや本番環境では、Lambda インサイトを有効にすることをお勧めします。Lambda Insightsによって作成される追加のメトリクスには、Lambda 関数を正しくサイジングして、必要ない容量に対する支払いを回避するのに役立つ memory_utilization が含まれます。

アプリケーション・メトリクス

独自のアプリケーションメトリクスを作成してキャプチャすることもできます。 CloudWatch 埋め込みメトリック形式を使用する。活用できます。AWS が提供した埋め込みメトリック形式用ライブラリ埋め込みメトリック形式のステートメントを作成して送信するには CloudWatch。統合ラムダ CloudWatch ロギング機能は、適切にフォーマットされた埋め込みメトリクス形式のステートメントを処理して抽出するように設定されています。