share facebook facebook twitter menu hatena pocket slack

2011.10.11 TUE

S3のログをデイリーにまとめる

鈴木 宏康

WRITTEN BY 鈴木 宏康

S3のログファイルは、下記のように1日の中でも細分化されます。

access_log-2011-10-11-00-15-33-7E85B60CC1846A80
access_log-2011-10-11-00-16-02-74E3E7E940850885
access_log-2011-10-11-01-15-16-4F73FF952D5D961D
access_log-2011-10-11-01-15-38-3290ED7965705AC2
access_log-2011-10-11-01-15-51-8C02CBA57C279DE8

上記のままでは利用しづらいので、日ごとにまとめる(デイリー化)下記のようなシェルスクリプトを作成してみました。

#!/bin/sh
export LANG=C

LOGDIR="/opt/cloudpack/s3/suzuki_suz-lab.com/www.suz-lab.com_s3-log-original"
ARCHIVEDIR="/opt/cloudpack/s3/suzuki_suz-lab.com/www.suz-lab.com_s3-log-daily"
WORKDIR="/opt/cloudpack/tmp/`mkpasswd -l 8 -s 0 -C 8 -c 0 -d 0`"

TARGETDATE=`date -d "$1" "+%Y-%m-%d"`
NEXTDATE=`date -d "$1 1 day" "+%Y-%m-%d"`
PATTERN="[`date -d "$1" "+%d/%b/%Y"`"

mkdir -p $WORKDIR
cp $LOGDIR/access_log-$TARGETDATE* $WORKDIR/
cp $LOGDIR/access_log-$NEXTDATE* $WORKDIR/
logresolvemerge.pl $WORKDIR/* | grep "$PATTERN" > $WORKDIR/access_log-$TARGETDATE
gzip $WORKDIR/access_log-$TARGETDATE
cp $WORKDIR/access_log-$TARGETDATE.gz $ARCHIVEDIR/access_log-$TARGETDATE.gz
cp $WORKDIR/access_log-$TARGETDATE.gz $ARCHIVEDIR/access_log.gz
rm -rf $WORKDIR

上記のシェルスクリプトは下記のような形で作成しています。

(1) S3のログはs3fsでファイルシステムとしてマウントして取得

(2) 作業ディレクトリは/opt/cloudpack/tmp/XXXXXXXX

(3) デイリー化したいログの日付は引数に20111010のように指定

(4) 指定した日付の元ログ(次の日のログも)を作業ディレクトリにコピー
次の日付けののログ(0:00付近)にも前日のログが残っていることがあります。

(5) 一つのログにマージして該当日付のものだけファイル化
logresolvemerge.plでマージして、該当日付にマッチするものだけgrepしています。

(6) 圧縮して指定ディレクトリに配置
ログ解析用に最新ものがaccess_log.gzになるようにもしています。

(7) 作業ディレクトリを削除

尚、mkpasswdとlogresolvemerge.plは下記のように本ブログで紹介済みです。

▼mkpasswd

Linuxでランダム文字列の生成

▼logresolvemerge.pl

CloudFrontのログとAWStatsを使ったログのマージ&ソート(日付)

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。