我目前在带有默认linux AMI的ec2实例中运行logstash,并尝试将日志发送到AWS ES实例。如果我使用标准' elasticsearch'输出,我可以将未签名的数据发送到AWS ES实例,但我尝试设置一个prod-ready框架,我读过的所有内容都建议使用AWS labs logstash输出插件({{3 })。
我可以确认插件已安装,但是当我使用下面的conf文件运行logstash时,我收到一条消息“发送Logstash的日志到/ var / log / logstash,现在通过log4j2.properties',但我的弹性搜索终端中没有数据出现' / _ search?pretty = true'在进行stdin输入后刷新时标记。
input {
stdin {
}
}
output {
amazon_es {
hosts => ["https://search-secretstuff.es.amazonaws.com"]
region => "xxxxx"
aws_access_key_id => 'xxxxxx'
aws_secret_access_key => 'xxxxxx'
index => "prod-logs-%{+YYYY.MM.dd}"
template => "/etc/logstash/mappings/es6-template.json"
}
}

除了使用stdin之外,我还尝试使用文件输入,ex
input {
file {
path => "/var/log/amazon/ssm/errors.log"
}
}

我使用的模板如下所示,根据此帖子的接受答案(https://github.com/awslabs/logstash-output-amazon_es)
{
"template" : "logstash-*",
"version" : 60001,
"settings" : {
"index.refresh_interval" : "5s"
},
"mappings" : {
"_default_" : {
"dynamic_templates" : [ {
"message_field" : {
"path_match" : "message",
"match_mapping_type" : "string",
"mapping" : {
"type" : "text",
"norms" : false
}
}
}, {
"string_fields" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "text", "norms" : false,
"fields" : {
"keyword" : { "type": "keyword", "ignore_above": 256 }
}
}
}
} ],
"properties" : {
"@timestamp": { "type": "date"},
"@version": { "type": "keyword"},
"geoip" : {
"dynamic": true,
"properties" : {
"ip": { "type": "ip" },
"location" : { "type" : "geo_point" },
"latitude" : { "type" : "half_float" },
"longitude" : { "type" : "half_float" }
}
}
}
}
}
}

配置中的任何内容都会成为潜在的痛点吗?我已经尝试了模板文件和logstash.conf文件的多次迭代,现在我觉得我的头撞墙无济于事。