Я потратил несколько часов, пытаясь понять, почему logrotate не будет успешно загружать мои журналы на S3, поэтому я отправляю свою настройку здесь. Вот вещь - Logrotate загружает файл журнала правильно s3, когда я заставляю его как это:Logrotate не загружается на S3
sudo logrotate -f /etc/logrotate.d/haproxy
Starting S3 Log Upload...
WARNING: Module python-magic is not available. Guessing MIME types based on file extensions.
/var/log/haproxy-2014-12-23-044414.gz -> s3://my-haproxy-access-logs/haproxy-2014-12-23-044414.gz [1 of 1]
315840 of 315840 100% in 0s 2.23 MB/s done
Но это не удается, как часть нормального процесса LogRotate. Журналы все еще сжаты моим скриптом postrotate, поэтому я знаю, что он запущен. Вот мои настройки:
/etc/logrotate.d/haproxy =>
/var/log/haproxy.log {
size 1k
rotate 1
missingok
copytruncate
sharedscripts
su root root
create 777 syslog adm
postrotate
/usr/local/admintools/upload.sh 2>&1 /var/log/upload_errors
endscript
}
/usr/local/admintools/upload.sh =>
echo "Starting S3 Log Upload..."
BUCKET_NAME="my-haproxy-access-logs"
# Perform Rotated Log File Compression
filename=/var/log/haproxy-$(date +%F-%H%M%S).gz \
tar -czPf "$filename" /var/log/haproxy.log.1
# Upload log file to Amazon S3 bucket
/usr/bin/s3cmd put "$filename" s3://"$BUCKET_NAME"
А вот выход от сухого хода лотротата:
sudo logrotate -fd /etc/logrotate.d/haproxy
reading config file /etc/logrotate.d/haproxy
Handling 1 logs
rotating pattern: /var/log/haproxy.log forced from command line (1 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/haproxy.log
log needs rotating
rotating log /var/log/haproxy.log, log->rotateCount is 1
dateext suffix '-20141223'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/haproxy.log.1 to /var/log/haproxy.log.2 (rotatecount 1, logstart 1, i 1),
renaming /var/log/haproxy.log.0 to /var/log/haproxy.log.1 (rotatecount 1, logstart 1, i 0),
copying /var/log/haproxy.log to /var/log/haproxy.log.1
truncating /var/log/haproxy.log
running postrotate script
running script with arg /var/log/haproxy.log : "
/usr/local/admintools/upload.sh 2>&1 /var/log/upload_errors
"
removing old log /var/log/haproxy.log.2
Любое понимание оценено.
Что такое файл (или каталог) '/ var/log/upload_errors' for? Если это файл журнала 'upload.sh', тогда команда должна быть' /usr/local/admintools/upload.sh >>/var/log/upload_errors 2> & 1' – Jdamian
добавить 'set -x' как первый строка 'upload.sh' и проверить сообщения – Jdamian
Да, это разблокировало меня. Оказалось, что мой s3cmd настроен для моего пользователя, а не для root. "ОШИБКА: /root/.s3cfg: Нет такого файла или каталога ОШИБКА: файл конфигурации недоступен. ОШИБКА: рассмотрите возможность использования параметра -configure для его создания." Решение заключалось в том, чтобы скопировать мой файл конфигурации. – worker1138