无法在Logstash过滤器

时间:2016-11-26 18:10:23

标签: elasticsearch logstash logstash-configuration

我希望在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。

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,你只是错过了docinfo setting,默认是假的:

input {
    elasticsearch {
        hosts => "elasticsearch.example.com"
        index => "*-logs"
        docinfo => true
    }
}