こんにちは、屋根裏エンジニアこと 技術1課の折戸です。
屋根裏は南側に併設する広めのバルコニーのおかげで、昼間はエアコン無しでもまだまだポッカポカです。
今回はS3のログの集計方法を調べる機会があったので、用途別に3回に分けてご紹介します。
まずは その① 簡単な条件で集計したい
場合の方法を当記事でご紹介します。
集計対象
S3のログと言っても各種AWSソリューションから配信されるログや、独自に転送したシステムのログなどさまざまです。
今回はApacheのアクセスログを対象とします。
集計条件
HTTPレスポンスのステータスコードの件数を集計 とします。
事前準備
ApacheアクセスログファイルをS3へアップロード
まず、集計に必要なApacheのアクセスログを準備します。
今回は動作確認しやすいようにシンプルな以下のログデータとします。
ローカルファイルなどへ書き込み、適宜S3の任意のバケットへアップロードしてください。
198.51.100.7 - Li [10/Oct/2019:13:55:36 -0700] "GET /logo.gif HTTP/1.0" 200 232 198.51.100.14 - Jorge [24/Nov/2019:10:49:52 -0700] "GET /index.html HTTP/1.1" 200 2165 198.51.100.22 - Mateo [27/Dec/2019:11:38:12 -0700] "GET /about.html HTTP/1.1" 200 1287 198.51.100.9 - Nikki [11/Jan/2020:11:40:11 -0700] "GET /image.png HTTP/1.1" 404 230 198.51.100.2 - Ana [15/Feb/2019:10:12:22 -0700] "GET /favicon.ico HTTP/1.1" 404 30 198.51.100.13 - Saanvi [14/Mar/2019:11:40:33 -0700] "GET /intro.html HTTP/1.1" 200 1608 198.51.100.11 - Xiulan [22/Apr/2019:10:51:34 -0700] "GET /group/index.html HTTP/1.1" 200 1344
参考:Amazon S3 に保存されている Apache ログのクエリ - Amazon Athena
200
や 404
の項目が集計条件の HTTPレスポンスのステータスコード にあたります。
その① S3のログを簡単な条件で集計
AWSマネジメントコンソールからS3のログを簡単な条件で集計する、一番シンプルな方法です。
手順は以下の通りです。
1. S3 Selectを使用したクエリ
アップロードしたS3オブジェクトを選択し、
オブジェクトアクション > S3Selectを使用したクエリ
クリック
2. 入力設定
項目に応じて以下を設定します。
- 形式
CSV
- CSV 区切り記号
カスタム
- カスタム CSV 区切り記号
(半角空白を入力)
- 圧縮
なし
3. 出力設定
デフォルト設定で問題ありません。
4. SQL クエリの実行
以下のクエリを貼り付け、 SQL クエリの実行
をクリック
SELECT COUNT(*) FROM s3object s WHERE s._7='200'
5. 集計結果表示
クエリ結果
の箇所にステータスコード200の件数が集計され、 5
が表示されます。
ちなみに、結果のダウンロード
をクリックすると、
CSV形式のファイルをダウンロードすることも可能です。
制約について
今回の方法はS3 Selectで使用できる関数に限定されます。
SQL 関数 - Amazon Simple Storage Service
例えば、 HTTPレスポンスのステータスコードが200と404の件数を同時に集計する
といった集計条件には対応できません。
その様なケースに応えるために、少し複雑な条件の集計方法について、次回の記事でご紹介します。
それでは。