_grokparsefailure在应用grok过滤器时



我的日志

2021-08-19 15:43:55,122 INFO c.t.i.c.ClassA - log message Service Name=Service-OCR Content ID=ABC.xml Category=SUCCESS Timestamp=2021-08-19T15:43:55.122292244 Message=The response has been received. Unit Name=N/A
2021-08-19 15:43:55,122 ERROR c.t.i.c.ClassB - log message Service Name=Service-OCR Engine Content ID=ABC.xml Category=ERROR Timestamp=2021-08-19T15:43:55.122292244 Message=The response has been received. Unit Name=TM

我的logstash.conf

input {
tcp {
port => 12201
codec => json_lines
}
}

filter {
grok {
patterns_dir => ["./patterns"]
match => {
'message' => '%{TIMESTAMP_ISO8601} %{LOGLEVEL:level} %{STRING} - "log message "Service Name="%{STRING} "Content ID="%{STRING} "Category="%{STRING} "Timestamp="%{TIMESTAMP_ISO8601} "Message="%{STRING} "Unit Name="%{STRING}'
}
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "logstash"
}
}

我知道STRING不在grok-filters中,这就是为什么我定义了一个客户过滤器。

STRING ^[a-zA-Z0-9 !@#$%^&*()_+-=[]{};':"\|,.<>/?]{1,}$

我假设无论我在哪里使用字符串,可以包括特殊字符,空格,数字。就像Java中的字符串。

但是我仍然无法通过这个过滤我的日志。有什么帮助吗?

您已经使用^和$将STRING锚定到行首和行尾。它永远不会匹配你使用它的方式。删除^和$

您可以简单地使用%{GREEDYDATA}代替自定义模式STRING。这将解决你的问题。

相关内容

  • 没有找到相关文章

最新更新