将CloudTrail日志记录到Logstash中

时间:2015-04-23 09:57:00

标签: amazon-web-services elasticsearch logstash amazon-cloudtrail

我正在尝试从ClouldTrail获取日志到ElasticSearch,以便我们可以更好地了解我们的AWS账户中发生的事情。

我在我的机器上设置了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 个答案:

答案 0 :(得分:2)

这是我的cloudtrail输入。它适用于一个小问题 - 它重复记录。正如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 {} } } } 所示,我将cloudtrail日志放在s3:// bucketname / cloudtrail,而不是root。

突变是可选的。 eventSource变异是为了使日志更具可读性,而ruby ingest_time给出了记录在ELK中显示的日期 - 否则,它只有事件的时间。最后,我删除了一个非常常见的记录,只会给我的系统增加噪音。

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

s3 input page上解释了credentials.ini格式;就是这样:

SELECT * FROM `users` WHERE username LIKE '% 6 %'