Я пытался использовать утилиту logrotate и переместить сжатые журналы на s3, однако, он вращается только когда сделано принудительно - PullRequest
0 голосов
/ 22 марта 2019

Я настроил его запускать ежечасно, он ежечасно вращает логи, но не отправляет его на s3, в чем может быть причина?

/ вар / Журнал / newlog {

rotate 5
hourly
missingok
notifempty
compress
dateext
    dateformat -%Y-%m-%d-%H%M%S
postrotate
    /usr/lib/newlog/new
endscript

/ usr / lib / newlog / new - это скрипт, использующий s3cmd для синхронизации файлов .gz с s3

1 Ответ

0 голосов
/ 22 марта 2019

Из приведенного выше кода видно, что нет никакого упоминания о корзине S3, в которую должны быть сжаты файлы журнала. Ваш скрипт должен добавить следующие строки:


/ var / log / newlog {

   postrotate
    /usr/lib/newlog/new > /dev/null 2>&1 || true

    BUCKET=logging-bucket
    INSTANCE_ID=`curl --silent http://169.254.169.254/latest/meta-data/instance-id | sed -e "s/i-//"`
    /usr/bin/s3cmd -m text/plain sync /var/log/messages-* s3://${BUCKET}/${INSTANCE_ID}/var/log/

endscript

}


где logging-bucket - это имя контейнера, в котором будут храниться сжатые файлы. Также убедитесь, что у пользователя есть права на S3.

Спасибо

...