我有多行自定义日志,我通过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 *********************************************** **************************
答案 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}