我已經編寫了一個腳本來持續將我的S3存儲桶日誌文件全部下拉到我的Logstash服務器,因此可以使用this pull request中的模式解析它。唉,考慮到腳本從頭開始重新創建日誌文件而不是追加它,Logstash的file
輸入沒有看到任何新的更改。有任何想法嗎?創建一個可由Logstash解析的組合S3日誌文件
腳本如下:
#!/usr/bin/ruby
require 'rubygems'
require 'aws/s3'
# for non-us buckets, we need to change the endpoint
AWS.config(:s3_endpoint => "s3-eu-west-1.amazonaws.com")
# connect to S3
s3 = AWS::S3.new(:access_key_id => S3_ACCESS_KEY, :secret_access_key => S3_SECRET_KEY)
# grab the bucket where the logs are stored
bucket = s3.buckets[BUCKET_NAME]
File.open("/var/log/s3_bucket.log", 'w') do |file|
# grab all the objects in the bucket, can also use a prefix here and limit what S3 returns
bucket.objects.with_prefix('staticassets-logs/').each do |log|
log.read do |line|
file.write(line)
end
end
end
任何幫助嗎?謝謝!
我有另一個抓取CloudTrail日誌的腳本,它工作的很好 - 因爲它附加到文件的末尾,而不是在每個cron運行中重新創建它。這往往會更好地工作,因爲如果文件被重新創建而不是被修改(如果我錯過了某些東西),似乎sincedb會感到困惑。唉,由於日誌文件的前綴結構不同,這對於S3並不適用... – aendrew 2014-10-30 15:43:49
我們還沒有遇到這個問題,但也許這只是時間問題。我們也可能不會用雲軌記錄來解決這個問題,因爲它只是每15分鐘一個新文件。 雖然看起來你只是從staticassets-logs /前綴(這可能只是一個例子)拉下所有東西,但我會說多個s3輸入可以讓你做到這一點,並增加吞吐量(儘管它可能是痛苦)。 – clly 2014-10-30 16:47:40