【问题标题】:logstash not mapping to values in indiceslogstash 未映射到索引中的值
【发布时间】:2016-12-30 12:25:11
【问题描述】:

我有一个示例日志

2016-12-28 16:40:53.290 [debug] <0.545.0> <<"{\"user_id\”:\”79\”,\”timestamp\":\"2016-12-28T11:10:26Z\",\"operation\":\"ver3 - Requested for recommended,verified handle information\",\"data\":\"\",\"content_id\":\"\",\"channel_id\":\"\"}">>

我为此编写了一个 logstash grok 过滤器

filter{
    grok {
       match => { "message" => "%{URIHOST} %{TIME} %{SYSLOG5424SD} <%{BASE16FLOAT}.0> <<%{QS}>>"}
    }
}

http://grokdebug.herokuapp.com/ 中一切正常,值正在使用过滤器进行映射。

当我使用此过滤器将值推送到弹性搜索时,它没有被映射,并且仅在消息中我得到了整个日志。

如果我做错了什么,请告诉我。

【问题讨论】:

  • 能否向我们展示整个配置?您的grok 匹配似乎没问题。
  • 不要使用URIHOST来匹配日期;你只会迷惑下一个必须维护你的配置的人。

标签: elasticsearch logstash kibana logstash-grok grok


【解决方案1】:

您的 kibana 屏幕截图未加载,但我猜一下:您正在捕获模式,但没有将数据命名到字段中。区别如下:

%{TIME}

将在您的数据中查找该模式。调试器将显示“TIME”已被解析,但 logstash 不会在不被询问的情况下创建字段。

%{TIME:myTime}

将创建该字段(您可以在调试器中看到它正在运行)。

您需要为要保存的任何匹配模式执行此操作。

【讨论】:

  • 仍然没有创建任何字段我已经改变了一切,但它仍然是一样的。 :(
  • 它基本上是一样的..就像我正在删除过滤器,所以它是一样的..需要注意的一件事是在调试器中它在匹配值时工作正常,但在解析数据时它给出的标签为:“beats_input_codec_plain_applied , _grokparsefailure”,当我删除过滤器时没有给出 _grokparsefailure 标记。现在我知道有解析错误但调试器正确显示映射值但在logstash中它抛出错误。
  • 输入 { beats { port => "5043" } } filter{ grok { match => { "messege" => "%{TIMESTAMP_ISO8601:timestamp_match} %{SYSLOG5424SD:logtype} >"} } } 输出 { elasticsearch { hosts => [ "localhost:9200" ] } }
  • 即使我的示例输入是 > 和配置是输入 { beats { port => "5043" } } filter{ grok { match => { "messege" => ">"} } } 输出 { elasticsearch { hosts => [ "localhost:9200" ] } } 仍然标记为 grokparsefailure
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 2014-01-05
  • 2011-08-07
相关资源
最近更新 更多