2014-12-23 9 views
0

Я потратил несколько часов, пытаясь понять, почему 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 

Любое понимание оценено.

+0

Что такое файл (или каталог) '/ var/log/upload_errors' for? Если это файл журнала 'upload.sh', тогда команда должна быть' /usr/local/admintools/upload.sh >>/var/log/upload_errors 2> & 1' – Jdamian

+0

добавить 'set -x' как первый строка 'upload.sh' и проверить сообщения – Jdamian

+0

Да, это разблокировало меня. Оказалось, что мой s3cmd настроен для моего пользователя, а не для root. "ОШИБКА: /root/.s3cfg: Нет такого файла или каталога ОШИБКА: файл конфигурации недоступен. ОШИБКА: рассмотрите возможность использования параметра -configure для его создания." Решение заключалось в том, чтобы скопировать мой файл конфигурации. – worker1138

ответ

0

Оказалось, что мой s3cmd настроен для моего пользователя, а не для root.

ERROR: /root/.s3cfg: No such file or directory 
ERROR: Configuration file not available. 
ERROR: Consider using --configure parameter to create one. 

Решение должно было скопировать файл конфигурации. - worker1138