logstash笔记(二)——grok之match
官方文档:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html
基本语法:
%{SYNTAX:SEMANTIC}
SYNTAX:定义的正则表达式名字(系统插件自带的默认位置:$HOME/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.2/patterns)
SEMANTIC:匹配结果的标识
grok{ match=>{ "message"=>"%{IP:clientip}" } }
输入结果
{ "message" => "192.168.1.1 abc", "@version" => "1", "@timestamp" => "2016-03-30T02:15:31.242Z", "host" => "master", "clientip" => "192.168.1.1" }
clientip就是semantic
每个%{IP:clientip}表达式只能匹配到message中第一次出现的结果,可用如下方式匹配多个相同类型结果
%{IP:clientip}s+%{IP:clientip1}…,如果SEMANTIC定义的相同名字,结果为数组形式,如:
{ "message" => "12.12.12.12 32.32.32.32", "@version" => "1", "@timestamp" => "2016-03-30T02:26:31.077Z", "host" => "master", "clientip" => [ [0] "12.12.12.12", [1] "32.32.32.32" ] }
自定义grok表达式
语法:(?the pattern here)
eg:
grok{ match=>{ "message"=>"%{IP:clientip}s+(?<mypattern>[A-Z]+)" } }
rs:
{ "message" => "12.12.12.12 ABC", "@version" => "1", "@timestamp" => "2016-03-30T03:22:04.466Z", "host" => "master", "clientip" => "12.12.12.12", "mypattern" => "ABC" }
创建自定义grok文件
在/home/hadoop/mylogstash/mypatterns_dir创建文件mypatterns_file,内容如下:
MY_PATTERN [A-Z]+
保存!
修改filter
grok{ patterns_dir=>["/home/hadoop/mylogstash/mypatterns_dir"] match=>{ "message"=>"%{IP:clientip}s+%{MY_PATTERN:mypattern}" } }
结果同上。
原文出处:cnblogs -> http://www.cnblogs.com/liuxinan/p/5336971.html
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。