AWS CloudWatchログ容量の推移を確認するワンライナー

この記事を書いたメンバー:

Ken'ichi Suzuki

AWS CloudWatchログ容量の推移を確認するワンライナー

目次

鈴木です。最近、AWS CloudWatchだけで多額の費用を発生させてしまいました。AWS CloudWatchのログは、保存されているログの容量に対してだけではなく収集した量に対しても費用がかかります。費用は東京リージョンで以下の通りです。
保存 0.033 USD / GB / 月
収集 0.76 USD / GB


料金 - Amazon CloudWatch | AWS

aws.amazon.com

og_img

収集の費用は23か月保存の費用に相当します。大量のログをCloudWatchに集約したいけど費用を抑えたいから保存期間を短くしよう、などと考えても、意外と費用を抑えられないかもしれないので、この料金体系には要注意です。

収集したログ容量の推移

CloudWatchが取り込んだログの量の日次推移をawscliで調べる方法です。保存している容量ではなく、収集したトラフィック量です。

$ aws cloudwatch get-metric-statistics --namespace AWS/Logs --metric-name IncomingBytes --start-time 2020-04-01T00:00:00 --end-time 2020-05-01T00:00:00 --period 86400 --statistics Sum | jq -r ".Datapoints[] | [.Timestamp, .Sum] | @csv" | sort

こんなイメージでCSV形式で出力されます。数字はバイト単位です。このサンプルはあまり使っていないAWSアカウントなのでとても少ないです。

"2020-04-01T00:00:00Z",8946
"2020-04-02T00:00:00Z",10503
"2020-04-03T00:00:00Z",9134
"2020-04-04T00:00:00Z",8982
"2020-04-05T00:00:00Z",8944
"2020-04-06T00:00:00Z",8904
"2020-04-07T00:00:00Z",9082
"2020-04-08T00:00:00Z",9009

–period 86400 は1日ごとの取り込んだ量という指定です。
–start-time、–end-time は推移を調べる期間の指定です。
jqで日付と取り込んだ容量の2列のCSVファイルに変換しています。@csvを@tsvにするとタブ区切りでの出力になります。
awscliからはなぜか時間順序がばらばらで出力されるので、日付順に並べるためにsortコマンドを最後に使っています。
jqコマンドは環境によっては別途インストールが必要です。awscliから出力されるJSONを見やすくするために便利なのでjqはインストールしておいて損はないです。以下のとおり簡単にインストールできます。

CentOS

$ sudo yum install jq

Ubuntu

$ sudo apt install jq

保存しているログ容量

すでに保存されているログ容量を確認するワンライナーも書いておきます。ロググループごとの容量です。

$ aws logs describe-log-groups | jq -r ".logGroups[] | [.logGroupName, .storedBytes] | @csv" | sort -t, -k2,2nr

jqでロググループ名と保存している容量の2列のCSVファイルに変換しています。sortコマンドで容量の多い順に並べています。
以上、参考になれば幸いです。

カテゴリー
タグ

SAPシステムや基幹システムのクラウド移行・構築・保守、
DXに関して
お気軽にご相談ください

03-6260-6240 (受付時間 平日9:30〜18:00)