AWS Lambda Insightsを有効化後に出力されるパフォーマンスログの活用方法

Lambda Insightsを有効にすると、関数が呼び出されるたびに

  • 実行時間
  • CPU
  • メモリ
  • コールドスタート

などのリソース情報がパフォーマンスログとして出力されます。

本記事ではパフォーマンスログの確認方法や活用方法ついて記載します。

本記事はLambda Insightsが有効化されていることを前提に記載しますので、有効化する方法を知りたい方は以下の記事をご参照ください

AWS Lambda Insightsを有効化する方法と無効化する方法
AWS Lambda Insightsの有効化と無効化の切り替えは簡単に行えます。Lambda Insightsは有料ですので、エラー発生時など調査が必要な時だけ有効化、不要な時は無効化した方がいいと思います。Lambda関数の実行数に応じて料金も増えていくので、実行数が多い場合は要注意かと思います

まず、パフォーマンスログの確認方法について記載します。

スポンサーリンク

パフォーマンスログの確認方法

CloudWatch->ログ->ロググループ->「/aws/lambda-insights」->Log insightsで表示とメニューをたどります。

クエリ実行するとLambda Insightsを有効化したことで出力されているログを確認できます。→このログをパフォーマンスログと呼んでいます。

次に、パフォーマンスログに出力されている情報について記載します。

パフォーマンスログにはどんな情報が出力されているか

以下のような情報が出力されています

  • agent_memory_avg
  • agent_memory_max
  • agent_version
  • billed_duration
  • billed_mb_ms
  • cold_start
    • コールドスタートの有無
  • cpu_system_time
  • cpu_total_time
  • cpu_user_time
  • duration
  • event_type
  • fd_max
  • fd_use
  • function_name
  • init_duration
    • コールドスタートの所要時間
  • memory_utilization
  • request_id
    • リクエストID
  • rx_bytes
  • threads_max
  • tmp_free
  • tmp_max
  • tmp_used
  • total_memory
  • total_network
  • tx_bytes
  • used_memory_max

次にパフォーマンスログの活用方法について記載します。

パフォーマンスログの活用方法

Log insightsの機能を使ってログを活用できます。

どうやって活用するかについて、「コールドスタートの調査」「リクエストIDをキーとして、リソース情報を調査」を例として、記載していきます。

まずは、パフォーマンスログの活用方法例として、コールドスタートの調査を例に記載していきます。

コールドスタートの調査(コールドスタートの平均時間と最大時間を調査)

例えば、init_duration(コールドスタート)の平均を知りたい場合
以下のクエリを実行することで平均を出すことが可能です。
fields @timestamp, @message, @logStream, @log
| stats avg(init_duration)
| sort @timestamp desc
| limit 20

init_duration(コールドスタート)の最大を知りたい場合は以下のようなクエリになります。

fields @timestamp, @message, @logStream, @log
| stats max(init_duration)
| sort @timestamp desc
| limit 20

次に、リクエストIDをキーとして、リクエスト実行時のリソース状況を調査する方法を記載します。

リクエストIDをキーとして、リソース情報を調査

問題があるリクエストなど、調査したいリクエストIDがある場合、以下のクエリでリクエストIDのリソース情報を調査することが可能です。


fields @timestamp, @message, @logStream
| filter request_id = "{リクエストID}"
| sort @timestamp desc
| limit 20

ログインサイトの使い方は以下の公式記事が参考になりそうですー

CloudWatch Logs Insights クエリ構文 - Amazon CloudWatch Logs
CloudWatch Logs Insights では、クエリ言語を使用してロググループをクエリします。クエリ構文は、一般的な関数、算術演算と比較演算、正規表現など、さまざまな関数とオペレーションをサポートしています。

まとめ

パフォーマンスログを使用することで、以下のような調査ができることがわかりましたー

活用例

コールドスタートの状況
リクエスト毎のリソース状態

 

パフォーマンスログから色々な情報が得られるため、上記以外にも活用方法はありそう!