Logstash 配置(三)filter配置
Grok插件
logstash拥有丰富的filter插件,它们扩展了进入过滤器的原始数据,进行复杂的逻辑处理,甚至可以无中生有的添加新的 logstash 事件到后续的流程中去!
Grok 是 Logstash 最重要的插件之一。也是迄今为止使蹩脚的、无结构的日志结构化和可查询的最好方式。
Grok在解析 syslog logs、apache and other webserver logs、mysql logs等任意格式的文件上表现完美。
这个工具非常适用于系统日志,Apache和其他网络服务器日志,MySQL日志等。
[root@bigdata111 confs_test]# vi filter_grok.conf
配置:
input {
stdin {
type => "std"
}
}
filter {
grok {
match=>{"message"=> "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
}
}
output{stdout{codec=>rubydebug}}
------------------------------------
启动LS:
[root@bigdata111 confs_test]# ../bin/logstash -f ./filter_grok.conf
输入:55.3.244.1 GET /index.html 15824 0.043
输出:

grok模式的语法如下:
%{SYNTAX:SEMANTIC}
解释:
SYNTAX:代表匹配值的类型,例如3.44可以用NUMBER类型所匹配,127.0.0.1可以使用IP类型匹配。
SEMANTIC:代表存储该值的一个变量名称,例如 3.44 可能是一个事件的持续时间,127.0.0.1可能是请求的client地址。所以这两个值可以用 %{NUMBER:duration} %{IP:client} 来匹配。
你也可以选择将数据类型转换添加到Grok模式。
默认情况下,所有语义都保存为字符串。
如果您希望转换语义的数据类型,例如将字符串更改为整数,则将其后缀为目标数据类型。
例如%{NUMBER:num:int}将num语义从一个字符串转换为一个整数。目前唯一支持的转换是int和float。
Logstash附带约120个模式。你可以在这里找到它们 https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
浙公网安备 33010602011771号