logstash grok filter-grok parse failure

时间:2017-02-27 13:52:42

标签: logstash logstash-grok

我有多行自定义日志,我通过filebeat multiline关键字将其作为单行处理。现在这包括\ n在每行的末尾。但是这会导致我的logstsash配置文件中的grok解析失败。有人可以帮我这个。以下是它们的外观:

请帮助我使用以下行的grok过滤器:

  

2016/11/18 3:05:50:\ n抛出的错误是:\ n空   队列\ n *********************************************** ************************** \ n请求已发送   是:\ nhpi_hho_de,2015423181057,e06106f64e5c40b4b72592196a7a45cd \ n **************************************** ********************************* \ n收到的回复是:\ nQSS RMS持有Hashtable是   空\ n *********************************************** **************************

2 个答案:

答案 0 :(得分:2)

正如@Mohsen建议您可能必须使用gsub过滤器才能替换日志行中的所有新行字符。

filter {
  mutate {
    gsub => [
      # replace all forward slashes with underscore
      "fieldname", "\n", ""         
    ]
  }
}

也许您也可以在if条件下执行上述操作,以确保没有grokparse失败。

if "_grokparsefailure" in [tags] or "_dateparsefailure" in [tags] {
    drop { }
}else{
  mutate {
    gsub => [
      # replace all forward slashes with underscore
      "fieldname", "\n", ""         
    ]
  }
}

希望这有帮助!

答案 1 :(得分:1)

你可以在这里找到答案:

https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html

您应该使用Mutate块将所有"\n"替换为""(空字符串)。 或者使用这个

%{DATESTAMP} %{WORD:time} %{GREEDYDATA}