amazon linuxでapacheのログを圧縮してs3に送ったのでメモ
インスタンスに残っているログで一週間すぎたものは自動的に削除される
goofysでS3をマウントする
マウントの仕方は過去の記事から
(自分はrootのホームディレクトリにlogs_s3
という名前でマウントした。)
シェルスクリプトを作る
$sudo su
#cd ~
#vi logs_s3_apache.sh
logs_s3_apache.sh
#!/bin/bash
TODAY=`date +"%Y%m%d"`
HOST_NAME=hostname
DIR=`date +"%Y"`/`date +"%m"`/`date +"%d"`
mkdir -p /root/logs_s3/logs/apache_log/$DIR/$HOST_NAME 2>/dev/null
cp /var/log/httpd/access_log-$TODAY /root/logs_s3/logs/apache_log/$DIR/$HOST_NAME/access_log 2>/dev/null
cp /var/log/httpd/error_log-$TODAY /root/logs_s3/logs/apache_log/$DIR/$HOST_NAME/error_log 2>/dev/null
gzip /root/logs_s3/logs/apache_log/$DIR/$HOST_NAME/*
マウントしたS3にディレクトリを作って、アクセスログとエラーログをS3にコピーし、圧縮している処理です。
実行権限を与える
#chmod u+x logs_s3_apache.sh
自動で実行させるためlogrotateを使用
#vi /etc/logrotate.d/httpd
httpd
/var/log/httpd/*log {
daily
missingok
rotate 7
notifempty
delaycompress
compress
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
/root/logs_s3_apache.sh
endscript
}
きちんとS3に保存されていて、サーバーには一週間過ぎたログは自動的に削除してくれました。