logstash 的 grok与dissect 测试应用
Logstash 的过滤表达式 grok & dissect
grok 工具
grok 是 一个非常优秀的过滤工具,其包含了丰富的内置正则表达式模板,以及可进行自定义的模板编写功能。可以处理复杂结构的log内容。
grok 的内置表达式查看位置
/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns
grok 添加自定义正则表达式
方法1:可以直接在 grok-patterns 中添加自定义正则
方法2:修改 filter 在grok中加入自定义路径 patterns_dir=>["/home/mylogstash/mypatterns_dir"]
例:
1、先在/home/mylogstash/mypatterns_dir 中创建一个 mypatterns的文件,里面写入自己的需要的正规,如:MY_PATTERN [A-Z]+
2、
filter {
grok{
patterns_dir=>["/home/mylogstash/mypatterns_dir"]
match=>{
"message"=>"%{IP:clientip}\s+%{MY_PATTERN:mypattern}"}
}
}
其中 {IP:clientip} 中IP的字段用的是内置grok-patterns的表达式,而{MY_PATTERN:mypattern} 中 MY_PATTERN 字段用的是自定义文件:/home/mylogstash/mypatterns_dir/mypatterns 的表达式
方法3:如果自定义字段数量不多且相对简单,可以直接在grok中直接编写
语法:(?<field_name>the pattern here)
例:
filter {
grok{
match=>{
"message"=>"%{IP:clientip}\s+(