Grok正则简介
日志源提供的日志格式可能并不是我们想要插入存储介质里的格式,Logstash里提供了一系列的filter来让我们转换日志。Grok就是这些filters里最重要的一个插件,(简单来说就是过滤日志数据)。而且后期你还会使用Grok正则里定义的field来进行相关指标的分析。
语法解释
语法 | 说明 |
---|---|
%{TIMESTAMP_ISO8601:time} | 代表时间戳 |
%{LOGLEVEL} | 代表日志级别 |
%{DATA} | 代表任意数据 |
(?([\S+]*)) | 自定义正则 |
\s* 或者 \s+ | 代表多个空格 |
\S+ 或者 \S* | 代表多个字符 |
大括号里面:xxx | 相当于起别名 |
调试工具
https://grokdebug.herokuapp.com/
Grok内置了120多种的正则表达式库
https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
示例1
日志:
2018-04-17 23:42:10.335 INFO [main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
匹配模式:
%{DATA:day} %{DATA:time} %{DATA:level} \[%{DATA:thread}\] %{DATA:className} \: %{GREEDYDATA:msg}
输出:
{
"day": [
[
"2018-04-17"
]
],
"time": [