Grok正则

Grok正则简介

  • 日志源提供的日志格式可能并不是我们想要插入存储介质里的格式,Logstash里提供了一系列的filter来让我们转换日志。Grok就是这些filters里最重要的一个插件,(==简单来说就是过滤日志数据==)。而且后期你还会使用Grok正则里定义的field来进行相关指标的分析。

语法解释:

  • %{TIMESTAMP_ISO8601:time},代表时间戳
  • %{LOGLEVEL},代表日志级别
  • %{DATA},代表任意数据
  • (?([\S+]*)),自定义正则
  • \s*或者\s+,代表多个空格
  • \S+或者\S*,代表多个字符
  • 大括号里面:xxx,相当于起别名

Grok正则调试地址:https://grokdebug.herokuapp.com/

demo

日志数据:

2018-03-12 10:18:09,797 DEBUG [http-bio-8083-exec-10] DEBUG c.b.e.c.repository.PmtcrMapper.selectByPrimaryKey

Grok正则:

\s*%{TIMESTAMP_ISO8601:time}\s*%{LOGLEVEL:level}\s*\[%{DATA:current_thread}\]\s*%{LOGLEVEL:level1}\s*(?([\S+]*))

结果:

{
  "time": [
    [
      "2018-03-12 10:18:09,797"
    ]
  ],
  "YEAR": [
    [
      "2018"
    ]
  ],
  "MONTHNUM": [
    [
      "03"
    ]
  ],
  "MONTHDAY": [
    [
      "12"
    ]
  ],
  "HOUR": [
    [
      "10",
      null
    ]
  ],
  "MINUTE": [
    [
      "18",
      null
    ]
  ],
  "SECOND": [
    [
      "09,797"
    ]
  ],
  "ISO8601_TIMEZONE": [
    [
      null
    ]
  ],
  "level": [
    [
      "DEBUG"
    ]
  ],
  "current_thread": [
    [
      "http-bio-8083-exec-10"
    ]
  ],
  "level1": [
    [
      "DEBUG"
    ]
  ],
  "class_info": [
    [
      "c.b.e.c.repository.PmtcrMapper.selectByPrimaryKey"
    ]
  ]
}

你可能感兴趣的:(日志,ELK,grok,ELK)