无法让 logstash 处理 JSON 文件

Can't get logstash to handle JSON file

我正在尝试将 logstash 解析的 JSON 文件导入到 elasticsearch 中。我读过几个例子,但我尝试过的似乎都不起作用。一开始我想做的就是读取 JSON 文件并将每个 key:value 对转换为 elasticsearch 中的相同值。但是当我 运行 /opt/logstash$ bin/logstash -f ~/logstash-test.conf 使用下面的过滤器时,我只得到:

Logstash startup completed

elasticsearch 中什么也没有出现。我错过了什么?

input {
  file {
    type => "json"
    path => ["/home/demo/data.json"]
    start_position => beginning
  }
}

filter {
  json {
    source => message
  }
}

output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}

我不确定这是否能解决您的问题,但是 json 过滤器的 logstash 文档说:

filter {
  json {
    source => "message"
  }
}

在消息周围加上引号也许可以解决您的问题。还要在开头加上引号。

此外,路径必须始终是绝对路径,如果设置正确,也请检查此项。

主要问题原来是我的硬盘快满了,所以 Elasticsearch 报告它无法保存它。不幸的是,这不是从 logstash 报告的,所以虽然这个过程似乎在工作,但没有任何东西被保存。

Magnus Bäck 关于 start_position 没有重置文件的评论也对我有所帮助,非常感谢。