我想在logstash中处理时将Elasticsearch索引名称添加为字段。这应该很简单,但是索引名称不会被打印出来。这是完整的logstash配置。
input {
elasticsearch {
hosts => "elasticsearch.example.com"
index => "*-logs"
}
}
filter {
mutate {
add_field => {
"log_source" => "%{[@metadata][_index]}"
}
}
}
output {
elasticsearch {
index => "logstash-%{+YYYY.MM}"
}
}
这将导致log_source
设置为%{[@metadata][_index]}
,而不是索引的实际名称。我已经使用_id和没有下划线尝试了一下,但它总是只输出参考,而不是值。
仅执行%{[@metadata]}
崩溃的logStash,并且它试图错误地访问列表的错误,因此正在设置[@metadata]
,但似乎丢失了索引或任何值。
有人是否有另一种将索引名称分配给事件的方式?
我正在使用Logstash和Elasticsearch的5.0.1。
您快到了,您只是缺少docinfo
设置,默认情况下是错误的:
input {
elasticsearch {
hosts => "elasticsearch.example.com"
index => "*-logs"
docinfo => true
}
}