[小ネタ] Lambda のメトリクスは 1 分間隔という話

2024.05.08

こんにちは。アノテーションの中村 (誠) です。
今回はタイトルの件についての小ネタを紹介します。

背景

伝えたいことはタイトル通りなので、小ネタの背景を紹介します。

とある事象の調査で Lambda 関数のメトリクスを確認していました。
ドキュメントにも記載されている通り Lambda から CloudWatch には呼び出し回数やエラー数などを示すメトリクスが発行されます。

例えば、「Invocations」は関数の呼び出し回数、「Errors」はエラー数、「Duration」は関数実行時間を示します。

ここで少し脱線して EC2 の話になりますが、EC2 には以下の 2 つのモニタリングタイプが存在します。

  • 基本モニタリング
  • 詳細モニタリング

基本モニタリングでは、ステータスチェックメトリクスを除くメトリクスが 5 分間隔で利用できます。
詳細モニタリングでは、ステータスチェックメトリクスを含むすべてのメトリクスが 1 分間隔で利用できます。

今回は Lambda の話なので EC2 のモニタリングの詳細についてはドキュメントをご覧ください。

ここで話が戻りますが、私は EC2 の基本モニタリングの思考に引っ張られて、Lambda のメトリクスも 5 分間隔だと思っていました。
しかし、実際には Lambda のメトリクスは 1 分間隔で発行されます。

Lambda は、メトリクスデータを 1 分間隔で CloudWatch に送信します。

AWS 公式ドキュメントより

1 分間隔でメトリクスを確認できることで、より詳細な呼び出しタイミングやエラータイミングを把握できるため、 被疑箇所の絞り込みにおいては 1 分か 5 分かの違いが重要になることもあります。

Lambda に限らず、メトリクスが発行される間隔はサービスや機能によって異なると思われますので、 調査時にはメトリクスの粒度を知っておくことも大切だと感じた経験でした。

CloudWatch コンソールで確認してみる

せっかくなので視覚的な違いを紹介しておきます。

まずは 5 分間隔で Invocations の合計値を表示した場合ですが、16:15 に 2 という記録が確認できます。

次に 1 分間隔の場合ですが、こちらは 16:19 に 2 という記録が確認できます。

5 分間隔の場合は 16:15 の呼び出しなのか 16:19 の呼び出しなのかはわかりませんが、1 分間隔の場合は 16:19 であることがわかります。

この違いを生かす調査の一例ですが、Lambda からコールした AWS の API でエラーが発生した場合に CloudTrail での調査範囲を絞ることができます。
API コール数が多い場合には 5 分間であってもエラーログを探すのが大変な場合があるため、1 分単位で日時が絞れることは調査時間短縮につながります。

皆さんもメトリクスの確認時には粒度を意識して調査してみてください。

まとめ

今回は Lambda のメトリクスは 1 分間隔という話を紹介しました。
小ネタでしたがどなたかの参考になれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。