LoginSignup
8

More than 5 years have passed since last update.

AWS apacheのログを毎日自動的にS3に保存

Posted at

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に保存されていて、サーバーには一週間過ぎたログは自動的に削除してくれました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8