Logstash 创建自定义grok过滤器

Logstash 创建自定义grok过滤器,logstash,elastic-stack,logstash-grok,Logstash,Elastic Stack,Logstash Grok,我需要为以下格式的行找到grok模式: 3 dbm.kfa 0 340220 7766754 93.9 3 swapper/3 0 340220 7766754 93.9 这就是我到目前为止所做的grok模式 \s*%{INT:no1}\s*%{USERNAME:name}\s*%{INT:no2}\s*%{INT:no3}\s*%{INT:no4}\s*%{

我需要为以下格式的行找到grok模式:

 3 dbm.kfa            0        340220       7766754          93.9
 3 swapper/3            0        340220       7766754          93.9
这就是我到目前为止所做的grok模式

\s*%{INT:no1}\s*%{USERNAME:name}\s*%{INT:no2}\s*%{INT:no3}\s*%{INT:no4}\s*%{GREEDYDATA:ans}
USERNAME
字段适用于
dbm.kfa
,但不适用于
swapper/3
,因为
USERNAME
不包含
\
字符。我想为此创建一些自定义过滤器,但不知道如何创建一个


任何帮助都将不胜感激。非常感谢

要创建自定义模式,您需要使用以下格式的外部文件,并将该文件放在仅用于模式文件的目录中

PATTERN_NAME [regex for your pattern]
然后,您需要更改grok配置以指向pattern files目录

grok {
    patterns_dir => ["/path/to/patterns/dir"]
    match => { "message" => "%{PATTERN_NAME:fieldName}" } 
}
但是在您的特定情况下,如果您将
%{USERNAME:name}
更改为
%{DATA:name}
,它应该可以工作

有关自定义模式的更好解释,请阅读

您还可以在这个文件中找到与logstash一起提供的所有core
grok
模式,使用最多的是该文件