Amazon S3のアクセスログを手早く集計する
Amazon S3のアクセスログを集計する必要が有ったので、方法を調べてみた。(Amazon S3側のアクセスログ出力は設定済みという前提)
ログは意外にややこしいフォーマットで下記の解析をすれば良いとは分かるのだけど、今回はそこまでの時間がなかったので、ツールの導入をメインに調べてみた。
AmazonS3のサーバーアクセスログをパースして変換するために使った方法をご紹介します。
[AWS][Java] AmazonS3のサーバーアクセスログを解析する [正規表現] | DevelopersIO
必要な要件は下記の通り。
- 簡単に道入出来ること
- サーバの運用管理者が使うような高機能なものでは無くて良く、機能は限られていても良いので簡単に導入出来て直ぐに使えるツールが望ましい。
- 必要な情報は限定的
いろいろ試したところ、下記の"request-log-analyzer"が最も使い勝手が良く、出力結果も期待に沿ったものだった。(出力例はこちら)
A command line tool that parses your log files to create reports.
request-log-analyzer
導入方法は下記の通り。
$ gem install request-log-analyzer
あとはAmazon S3からダウンロードしたログフォルダを指定すれば、結果がHTMLに出力された。
$ request-log-analyzer -f amazon_s3 --output html --file report.html ./logs/
使い勝手が良好だったので、s3cmdを使ってAmazon S3からのログのダウンロード(同期)も自動化させたスクリプトを用意した。これなら、「ローカルに無い差分のログファイルのみをダウンロードしてから、全てのログファイルを対象にアクセスログを集計する」ことが可能になる。
#!/bin/sh s3cmd sync --skip-existing --delete-removed s3://foo/bar/logs/ ./logs/ request-log-analyzer -f amazon_s3 --output html --file report.html ./logs/
スクリプトはJenkinsのジョブに放り込んで、定期的に実行させるように設定しておいた。優れたツールを使って公開してくれている方に感謝!
関連