Lambda Insightsを有効にすると、関数が呼び出されるたびに
- 実行時間
- CPU
- メモリ
- コールドスタート
などのリソース情報がパフォーマンスログとして出力されます。
本記事ではパフォーマンスログの確認方法や活用方法ついて記載します。
本記事はLambda Insightsが有効化されていることを前提に記載しますので、有効化する方法を知りたい方は以下の記事をご参照ください
まず、パフォーマンスログの確認方法について記載します。
パフォーマンスログの確認方法
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をキーとして、リソース情報を調査」を例として、記載していきます。
まずは、パフォーマンスログの活用方法例として、コールドスタートの調査を例に記載していきます。
コールドスタートの調査(コールドスタートの平均時間と最大時間を調査)
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
ログインサイトの使い方は以下の公式記事が参考になりそうですー
まとめ
パフォーマンスログを使用することで、以下のような調査ができることがわかりましたー
コールドスタートの状況
リクエスト毎のリソース状態
パフォーマンスログから色々な情報が得られるため、上記以外にも活用方法はありそう!