CloudWatchLogs 、雑に設置すれば awslogs 経由でブンブン投げれるので実装は楽なんだけど、エラーなど検索したい時「動かない! (期待した結果が得られない・検索エラーが赤いので自力対処できない人が怯える)」という具合なのが結構多くて、素朴な一致検索すら難しい人なんかがキレちらかす原因になっているので、Firehose などで S3 に流すようにするかな、と考えていた。
ら、このような記事を偶然みつけた。
つまり、どんなにログ1行のサイズが小さくても5KBとして計算される。 そしてCloudWatchに表示されているIncomingBytesは実際のログサイズであり、5KBへ切り上げ後の値ではない。
またまたご冗談を、と思いつつ公式ページを確認していた。
取り込みの料金は階層別であり、5 KB 単位で取り込まれた GB ごとに請求されます (3 KB のレコードは 5 KB、12 KB のレコードは 15 KB として請求されるなど)。
グエーッまじだ!
雑に 1 文字 1 byte とすると、一行あたりのログが 5120 文字を超えない限り余計な請求が発生することになる。
Rails を採用しているので (一般的なウェブフレームワークもだけど) 一行あたりリクエスト外の出力が 80 文字も出てくると「なげえ!」となりがちだし、それを考えるとだいぶ高い。
事前に気づけて良かったので、(awslogs と) CloudWatchLogs を辞める前提でログアグリゲーターに Fluentd なり Logstash のコンテナ入れて、 S3 なり AWS 外で動いている ElastichSearch へ直接挿入するようにしよう……。