ペパボのサービスで利用しているサーバにおいて、ログの保存期間を長期化するに当たり、超長期の保管場所を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
作成されるファイル名はこんな感じ。
昨今セキュリティの観点から保全範囲が広がってきていると思うので、ぜひ活用してみてください。