Logrotate不会上传到S3

时间:2014-12-23 04:45:42

标签: bash amazon-web-services amazon-s3 logrotate

我花了几个小时试图弄清楚为什么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"

以下是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

有任何见解。

1 个答案:

答案 0 :(得分:0)

事实证明我的s3cmd是为我的用户配置的,而不是root用户。

val findOneAndUpdateOptions = new FindOneAndUpdateOptions
findOneAndUpdateOptions.returnDocument(ReturnDocument.AFTER)
val filter = Document.parse("{\"idContrato\":\"12345\"}")
val update = Document.parse("{ $set: {\"descripcion\": \"New Description\" } }")
val response = collection.findOneAndUpdate(filter,update,findOneAndUpdateOptions)
println(response)

解决方法是复制我的配置文件。 - worker1138