CloudWatch Logs InsightsでLambda関数の実行時間を取得してみる
はじめに
かつまたです。
今回はCloudWatch Logs Insightsを利用してLambda実行ログをクエリすることで各実行時間を取得する方法をご紹介します。
一般的に、Lambda関数の実行時間はCloudWatchメトリクスのDurationメトリクスによって確認が可能です。平均値または最大値での取得が可能となっています。最小間隔は1分間です。
一方で、1分以内に複数回実行が考えられる構成では、それぞれの実行時間を取得したい場合、取得間隔内での最大値(Max統計の場合)しか取得することができません。
そのため、CloudWatch Logs Insightsを用いてLambda実行ログの@durationフィールドをクエリして、各リクエストの実行時間を取得してみました。
やってみる
前提として任意のLambda実行ログがCloudWatch Logs上で確認できる状態です。
-
任意のCloudWatch Logsの詳細画面に移動します。「Logs Insightsで表示」を選択し、CloudWatch Logs Insightsに移動します。
-
Logs Insights QLでログをクエリします。以下のクエリ文を挿入して「クエリの実行」を押下します。各リクエストでの実行時間を取得できました。範囲指定は画像右上から指定可能です。
fields @timestamp, @requestId, @duration
| filter @type = "REPORT"
| sort @timestamp desc
このクエリはLambda実行ログのREPORT行より、実行日時での降順に以下を取得します。
- @timestamp: 実行日時
- @requestId: 各リクエストID
- @duration: 実行時間
@billedDurationフィールドをクエリすることで、課金対象となる実行時間を取得することも可能です。
それぞれのリクエストごとの実行時間を取得することができました。
おわりに
ご覧いただきありがとうございました。Lambda関数の各実行時間の統計が必要な際などに参考になれば幸いです。
参考資料
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。