CloudWatch Logs InsightsでLambda関数ごとにメモリ使用量や実行時間を集計するクエリ
Lambda関数ごとにメモリ使用量、処理時間、課金対象時間を集計し、それぞれの最大、平均、最小値をまとめて取得するクエリを作成しました。
CloudWatch Logs Insightsのコンソールで、時間範囲とロググループを選択し、クエリを実行してください。
filter @type = "REPORT"
| stats count(*) as executions, # 実行数
min(@maxMemoryUsed / 1000 / 1000) as minMemoryUsedMB, # 最小メモリ使用量(MB)
avg(@maxMemoryUsed / 1000 / 1000) as avgMemoryUsedMB, # 平均メモリ使用量(MB)
max(@maxMemoryUsed / 1000 / 1000) as maxMemoryUsedMB, # 最大メモリ使用量(MB)
min(@duration / 1000) as minDurationS, # 最短処理時間(秒)
avg(@duration / 1000) as avgDurationS, # 平均処理時間(秒)
max(@duration / 1000) as maxDurationS, # 最長処理時間(秒)
min(@billedDuration / 1000) as minBilledDurationS, # 最短課金対象時間(秒)
avg(@billedDuration / 1000) as avgBilledDurationS, # 平均課金対象時間(秒)
max(@billedDuration / 1000) as maxBilledDurationS # 最長課金対象時間(秒)
by @log
| sort @log asc
Lambdaだと、デフォルトで関数ごとに作成されるロググループ (@log
) でグルーピング (by
) することで、関数単位に集計しています。
メモリ使用量は、Lambdaのログに表示されるMax Memory Usedと合わせるため、@maxMemoryUsed / 1000 / 1000
としています。用途に合わなければ@maxMemoryUsed / 1024 / 1024
にしてください。