Ryota Kondo

Ryota Kondo

2024/02/12

CloudWatch Logs InsightsでLambda関数ごとにメモリ使用量や実行時間を集計するクエリ

Lambda関数ごとにメモリ使用量、処理時間、課金対象時間を集計し、それぞれの最大、平均、最小値をまとめて取得するクエリを作成しました。

CloudWatch Logs Insightsのコンソールで、時間範囲とロググループを選択し、クエリを実行してください。

filter @type = "REPORT"
| stats count(*as executions,  # 実行数
  min(@maxMemoryUsed / 1000 / 1000as minMemoryUsedMB,  # 最小メモリ使用量(MB)
  avg(@maxMemoryUsed / 1000 / 1000as avgMemoryUsedMB,  # 平均メモリ使用量(MB)
  max(@maxMemoryUsed / 1000 / 1000as maxMemoryUsedMB,  # 最大メモリ使用量(MB)
  min(@duration / 1000as minDurationS,  # 最短処理時間(秒)
  avg(@duration / 1000as avgDurationS,  # 平均処理時間(秒)
  max(@duration / 1000as maxDurationS,  # 最長処理時間(秒)
  min(@billedDuration / 1000as minBilledDurationS,  # 最短課金対象時間(秒)
  avg(@billedDuration / 1000as avgBilledDurationS,  # 平均課金対象時間(秒)
  max(@billedDuration / 1000as maxBilledDurationS  # 最長課金対象時間(秒)
  by @log
| sort @log asc

Lambdaだと、デフォルトで関数ごとに作成されるロググループ (@log) でグルーピング (by) することで、関数単位に集計しています。

メモリ使用量は、Lambdaのログに表示されるMax Memory Usedと合わせるため、@maxMemoryUsed / 1000 / 1000としています。用途に合わなければ@maxMemoryUsed / 1024 / 1024にしてください。

関連タグの記事

Ryota Kondo
Ryota Kondo

システムエンジニア・プログラマー|このブログサイトの運営もしており、思いついたことをまとめて記事を書いています💡