ペパボのサービスで利用しているサーバにおいて、ログの保存期間を長期化するに当たり、超長期の保管場所をS3に選定した。世の中ではSHELLスクリプト書いてアップロード処理が実装されている例が多そうなのだが、awscliに依存したくない気持ちがあったのでGolangで実装した。
gzipに自動で圧縮したりdateextを自動で付与したり、いい感じにアップロードされるようになっている。使用方法はAWSのIDなどを環境変数かオプションで渡してあげて、logrotateの設定のpostrotateに定義するだけで動く。
$ cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
★これだけでOK
/bin/bash -c -l "source /root/.aws && /usr/local/bin/gothree $1"
endscript
}
$ cat /root/.aws
export AWS_ACCESS_KEY_ID=***********
export AWS_SECRET_ACCESS_KEY=***********
export AWS_REGION=your region
export AWS_BUCKET=your buket name
作成されるファイル名はこんな感じ。
昨今セキュリティの観点から保全範囲が広がってきていると思うので、ぜひ活用してみてください。
