创建自定义 grok 过滤器

Creating custom grok filters

我需要为行格式为 :

的文件查找 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 配置以指向模式文件目录。

grok {
    patterns_dir => ["/path/to/patterns/dir"]
    match => { "message" => "%{PATTERN_NAME:fieldName}" } 
}

但在您的特定情况下,如果您将 %{USERNAME:name} 更改为 %{DATA:name},它应该可以工作。

有关自定义模式的更好解释,您应该阅读 this part of the documentation

您还可以在这个 github repository, the most used are in the grok-patterns 文件中找到 logstash 附带的所有核心 grok 模式。