CloudWatchサブスクリプションフィルタのDeliveryErrorsのログイベント粒度について

2023.12.15

この記事はアノテーション株式会社 AWS Technical Support Advent Calendar 2023 | Advent Calendar 2023 - Qiita 15日目の記事です。

困っていた内容

CloudWatch メトリクスDeliveryErrorsについて「データをサブスクリプション送信先に転送するときに CloudWatch Logs がエラーを受け取ったログイベントの数。」と公式ドキュメントに記載されております。
この時のログイベント粒度についてログ1件と考えてよいのか、複数のログをまとめた1転送と考えてよいのかどちらでしょうか。

ドキュメント確認

CloudWatch メトリクスによるモニタリング - Amazon CloudWatch Logs

DeliveryErrors:
データをサブスクリプション送信先に転送するときに CloudWatch Logs がエラーを受け取ったログイベントの数。
送信先のサービスが、スロットリングの例外や再試行可能なサービス例外 (HTTP 5xx など) の再試行可能なエラーを返した場合、CloudWatch Logs は最大 24 時間配信を再試行し続けます。
AccessDeniedException や ResourceNotFoundException などの再試行不可能なエラーの場合、CloudWatch Logs は再配信を試みません。

回答

一般的には「データをサブスクリプション送信先に転送するときに CloudWatch Logs がエラーを受け取ったログイベントの数」とあるため、エラーを受け取ったログイベントの数を指していると考えられます。
この場合、ログイベントとは通常、一連のログデータの中で1つのログメッセージを指します。
そのため、複数のログをまとめた1転送ではなく、単一のログイベントがエラーとして検出された場合に、DeliveryErrorsメトリクスがインクリメントされると考えられます。

補足

DeliveryErrors メトリックの値は、エラーが発生した「ログ イベントの数」に基づいて記録されます。 サブスクリプション フィルターが複数のログ イベントを一個のバッチとして転送しようとして、その転送自体が最終的に失敗してその中に含まれる10個のログイベントが失敗した場合、メトリックに追加される値は 1 ではなく、ログイベント数の10になります。

参考資料

[1]CloudWatch Logs サブスクリプションフィルターの使用 - 例 1: Kinesis データストリームのサブスクリプションフィルター