我正在尝试将日志从ClouldTrail放入ElasticSearch,以便我们可以更好地了解AWS账户中发生了什么。
我已经在机器上(Ubuntu 14.04)设置了Logstash和ElasticSearch,并且可以将文本从stdin
推送到ElasticSearch。但是,当我尝试使用S3输入时,没有任何东西被添加到ElasticSearch中。
这是我正在使用的配置文件,我已经删除了我的亚马逊键
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
不会打印任何内容。有什么我想念的吗? 最佳答案
这是我的cloudtrail输入。它很好地解决了一个小问题-它可以重复记录。如prefix
所示,我将cloudtrail日志放在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 {}
}
}
}
certificate.ini格式在s3 input page上进行了说明;就是这样:
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
关于amazon-web-services - 使CloudTrail日志进入Logstash,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29819970/