我正在尝试将日志从 CloudTrail 获取到 ElasticSearch 中,以便我们可以更好地了解 AWS 账户中发生的情况。
我已经在我的机器(Ubuntu 14.04)上设置了 Logstash 和 ElasticSearch,并且可以从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 编解码器 cloudtrail https://rubygems.org/gems/logstash-codec-cloudtrail/versions/0.1.4编解码器但是文档 http://www.rubydoc.info/gems/logstash-codec-cloudtrail/0.1.4#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 {}
}
}
}
credential.ini 格式的解释位于s3输入页面 http://logstash.net/docs/1.4.2/inputs/s3;就是这样:
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)