2014-12-23 86 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的过程中取得成功。日志仍然由我的正面脚本压缩,所以我知道它正在运行。这里是我的设置:

/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" 

这里是输出一个干转的logrotate:

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

什么是文件(或dir)'/ var/log/upload_errors'?如果它是'upload.sh'的日志文件,那么该命令应该是'/usr/local/admintools/upload.sh >>/var/log/upload_errors 2>&1' – Jdamian

+0

add'set -x' as first '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