【问题标题】:Can't get logstash to handle JSON file无法让 logstash 处理 JSON 文件
【发布时间】:2015-04-21 11:01:28
【问题描述】:

我正在尝试将 logstash 解析的 JSON 文件放入 elasticsearch。我已经阅读了几个示例,但我尝试过的任何方法似乎都不起作用。我首先要做的就是读取 JSON 文件并将每个键:值对转换为弹性搜索中的相同值。但是当我使用下面的过滤器运行/opt/logstash$ bin/logstash -f ~/logstash-test.conf 时,我得到了:

Logstash 启动完成

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

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

filter {
  json {
    source => message
  }
}

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

【问题讨论】:

  • 您可能在过去的某个时间使用 Logstash 处理过该文件,因此 Logstash 正在耐心等待更多数据附加到文件中。 start_position 仅在第一次遇到文件时才重要。
  • 那么如何检查数据是否在 elasticsearch 中,为什么我在 Kibana 中看不到?
  • 如果文件已经在logstash中处理过,可以通过删除sincedb文件来重新处理。默认位置见logstash.net/docs/1.4.2/inputs/file#sincedb_path

标签: json elasticsearch logstash


【解决方案1】:

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

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

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

另外路径必须是绝对路径,如果设置正确,也要检查一下。

【讨论】:

  • documentation 还说:“单个未加引号的单词也可以作为字符串使用,但您应该使用引号。”所以你的建议不太可能有帮助。
  • 不,没有任何区别。
【解决方案2】:

主要问题是我的硬盘快满了,所以 Elasticsearch 报告它无法保存它。不幸的是,logstash 没有报告这一点,因此虽然该过程似乎正在运行,但没有任何内容被保存。

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

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多