2

我想從ClouldTrail獲取日誌到ElasticSearch,以便我們可以更好地瞭解我們的AWS賬戶中發生了什麼。獲取CloudTrail日誌到Logstash

我在我的機器上安裝了Logstash和ElasticSearch(Ubuntu 14.04),並且可以將文本從stdin推送到ElasticSearch。但是,當我嘗試使用S3輸入時,沒有任何東西被添加到ElasticSearch中。

下面是即時通訊使用conf文件,我已刪除了我的亞馬遜鍵

input { 
    s3 { 
    bucket => 'ko-cloudtrail-log-bucket' 
    secret_access_key => '' 
    access_key_id => '' 
    delete => false 
    interval => '60' 
    region => 'eu-west-1' 
    type => 'CloudTrail' 
    codec => cloudtrail {} 
    } 
} 

output { 
    stdout {} 
    elasticsearch { 
      host => '127.0.0.1' 
    } 
} 

我有安裝logstash-codec-cloudtrail編解碼器,但documentation是相當稀少。

即使使用-v運行Logstash,我也不會在我的終端中發現錯誤,並且沒有任何內容被打印到stdout。有什麼我失蹤?

回答

1

這是我的雲軌輸入。它適用於一個小問題 - 它會複製記錄。如prefix所示,我將雲軌記錄放在s3:// bucketname/cloudtrail,而不是根目錄。

突變是可選的。 eventSource的突變是讓日誌更具可讀性,ruby的ingest_time給了我一個記錄在ELK中出現的日期 - 否則,它只有事件的時間。最後,我放棄了一個很常見的記錄,這隻會給我的系統增加噪音。

input { 
    s3 { 
    bucket => "bucketname" 
    delete => false 
    interval => 60 # seconds 
    prefix => "cloudtrail/" 
    type => "cloudtrail" 
    codec => "cloudtrail" 
    credentials => "/etc/logstash/s3_credentials.ini" 
    sincedb_path => "/opt/logstash_cloudtrail/sincedb" 
    } 
} 

filter { 
    if [type] == "cloudtrail" { 
    mutate { 
     gsub => [ "eventSource", "\.amazonaws\.com$", "" ] 
     add_field => { 
     "document_id" => "%{eventID}" 
     } 
    } 
    if ! [ingest_time] { 
     ruby { 
     code => "event['ingest_time'] = Time.now.utc.strftime '%FT%TZ'" 
     } 
    } 


    if [eventSource] == "elasticloadbalancing" and [eventName] == "describeInstanceHealth" and [userIdentity.userName] == "secret_username" { 
     drop {} 
    } 
    } 
} 

的credentials.ini格式上s3 input page解釋;它只是這樣的:

AWS_ACCESS_KEY_ID= 
AWS_SECRET_ACCESS_KEY= 
+0

謝謝你的答案,但這對我也不起作用。你正在使用什麼版本的logstash 1.4.2 – user1810626

+0

我正在使用1.4.2。 – tedder42