logstash grok解析
2016-01-24 11:51
423 查看
在《本地搭建ELK系统》中,在本地搭建了一个非常简单的ELK系统。其中logstash从本地日志文件中读取信息并交给elasticsearch。
然而直接把原始未加工的日志交给elasticsearch没有什么意义。
logstash还有一个重要的工作就是解析日志。把解析出来的关键字与日志本身共同交给elasticsearch,elasticsearch才能很好地建立日志索引。
logstash支持多种解析器,grok是其中一种。
使用grok filter需要在logstash的配置文件中加上这样的内容:
这段代码中除了
对于下面这条日志:
55.3.244.1 GET /index.html 15824 0.043
可以这样解析:
将会得到这样的结果
grok提供了哪些SYNTAX?可以查看文件grok-patterns,它默认放在路径/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-0.3.0/patterns下。
假设现在要匹配一个正则表达式为regexp的字符串,而grok预定义的SYNTAX都不满足,也可以自己定义一个SYNTAX
自定义SYNTAX 方式有两种:
(1)匿名SYNTAX
将
(2)命名SYNTAX
在dir下创建一个文件,文件名随意
将dir加入grok路径:
将想要增加的SYNTAX写入:
使用方法和使用默认SYNTAX相同:
然而直接把原始未加工的日志交给elasticsearch没有什么意义。
logstash还有一个重要的工作就是解析日志。把解析出来的关键字与日志本身共同交给elasticsearch,elasticsearch才能很好地建立日志索引。
logstash支持多种解析器,grok是其中一种。
使用grok filter需要在logstash的配置文件中加上这样的内容:
[code]filter { grok { match => { "message" => "grok_pattern" } } }
这段代码中除了
grok_pattern以外都是logstash的关键字。
grok_pattern部分需要使用者填充自己的解析方式。
grok_pattern由零个或多个
%{SYNTAX:SEMANTIC}组成,其中SYNTAX是表达式的名字,是由grok提供的,例如数字表达式的名字是NUMBER,IP地址表达式的名字是IP。SEMANTIC表示解析出来的这个字符的名字,由自己定义,例如IP字段的名字可以是client。
对于下面这条日志:
55.3.244.1 GET /index.html 15824 0.043
可以这样解析:
[code]filter { grok { match=>{ "message"=>"%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" } } }
将会得到这样的结果
[code]* client: 55.3.244.1 * method: GET * request: /index.html * bytes: 15824 * duration: 0.043
grok提供了哪些SYNTAX?可以查看文件grok-patterns,它默认放在路径/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-0.3.0/patterns下。
假设现在要匹配一个正则表达式为regexp的字符串,而grok预定义的SYNTAX都不满足,也可以自己定义一个SYNTAX
自定义SYNTAX 方式有两种:
(1)匿名SYNTAX
将
%{SYNTAX:SEMANTIC}写为
(?<SEMANTIC>regexp)
(2)命名SYNTAX
在dir下创建一个文件,文件名随意
将dir加入grok路径:
patterns_dir => "./dir"
将想要增加的SYNTAX写入:
SYNTAX_NAME regexp
使用方法和使用默认SYNTAX相同:
%{SYNTAX_NAME:SEMANTIC}
相关文章推荐
- Java基础4
- USACO-Section 3.1-PROB Score Inflation
- Codeforces Round #340 (Div. 2)——C
- Codeforces Round #340 (Div. 2)题解
- gitlab和Django实现push自动更新
- gitlab和Django实现push自动更新
- gitlab和Django实现push自动更新
- Java基础3
- wfuzz info2
- hdu1536 S-Nim
- android之碎片(fragment)二(动态添加)
- User SCOTT executes the following command on the EMP table but has not issued COMMIT, ROLLBACK, or a
- LuaTest
- java基础2
- 通过打印学习Linux内核之sysfs(0)
- 按花生酱,赞不绝口——敏捷12准则的敏捷解释
- kafka
- 基于JavaScript短信验证码如何实现
- Uable to run mksdcard sdk tool in Ubuntu 15.10
- Android 支付宝支付