无法访问 Logstash 过滤器中的 Elasticsearch 索引名称元数据
Can't access Elasticsearch index name metadata in Logstash filter
我想在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
setting,默认情况下它是错误的:
input {
elasticsearch {
hosts => "elasticsearch.example.com"
index => "*-logs"
docinfo => true
}
}
我想在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
setting,默认情况下它是错误的:
input {
elasticsearch {
hosts => "elasticsearch.example.com"
index => "*-logs"
docinfo => true
}
}