ELK logstash的grok 自带的正则匹配、自定义正则 使用

作者:神秘网友 发布时间:2020-09-30 22:43:56

ELK logstash的grok 自带的正则匹配、自定义正则 使用

ELK logstash的grok 自带的正则匹配、自定义正则 使用

  • 一、使用
    • 1、查看 grok 自带的正则
    • 2、语法
    • 3、使用
      • 1)、Sample Data
      • 2)、Grok Pattern
      • 3)、Custom Patterns
      • 4)、结果
      • 5)、正则讲解
  • 二、在线测试
    • 1、在线Grok Debug工具,Grok校验|调试
    • 2、Kibana中调试
  • 三、logstash配置文件
    • 1、配置文件输入
    • 2、自定义正则生效

一、使用

  • ELK logstash的grok 自带的正则匹配

需要提取出字段名

  • %{官方定义的正则名或者自定义的正则名:从日志中提取出来的字段名}

不需要提取出字段名

  • %{官方定义的正则名或者自定义的正则名}

1)、Sample Data

Sample Data (原数据)

[2020-09-26 13:07:54] GET http://www.test.com/index/index/test 0.118220

2)、Grok Pattern

Grok Pattern(grok 正则)

\[%{TIMESTAMP_ISO8601:timestamp}\] %{USERNAME:method}[T ]%{URL:url} %{NUMBER:exec_time}

3)、Custom Patterns

Custom Patterns(自定义正则)

  • 由于grok自带的网址匹配每页匹配http://https://。所以我们自定义一个名为URL的正则,如下所示
URL (http(s)?:\/\/)?%{URIHOST:domain_name}%{URIPATH}

4)、结果

Kibana -> Console -> Grok Debugger 中执行的结果

{
  "domain_name": "www.test.com",
  "method": "GET",
  "exec_time": "0.118220",
  "url": "http://www.test.com/index/index/test",
  "timestamp": "2020-09-26 13:07:54"
}

5)、正则讲解

  • \[ :匹配字符 [
  • %{TIMESTAMP_ISO8601:timestamp} :把符合TIMESTAMP_ISO8601正则的内容匹配出来,作为timestamp字段存入es
  • :匹配空格
  • %{USERNAME:method}:把符合USERNAME(USERNAME其实就是个字符串匹配)正则的内容匹配出来,作为method字段存入es
  • [T ]:匹配空格
  • %{URL:url}:把符合自定义的 URL正则的内容匹配出来,作为url字段存入es
    • 自定义的 URL中有自己写的正则,也用到了grok的正则
    • %{URIHOST:domain_name}提取了字段名domain_name到es;
    • %{URIPATH}没有提取出字段名
  • :匹配空格
  • %{NUMBER:exec_time} :把符合NUMBER正则的内容匹配出来,作为exec_time字段存入es

二、在线测试

  • 在线Grok Debug工具,Grok校验|调试
    效果图如下所示:
    ELK logstash的grok 自带的正则匹配、自定义正则 使用
  • Kibana -> Console -> Grok Debugger 中执行的结果

效果图如下所示:
ELK logstash的grok 自带的正则匹配、自定义正则 使用

三、logstash配置文件

input {
 file {
    ...
  }
}
filter {  
    grok {  
		match => {
			"message"=>"\[%{TIMESTAMP_ISO8601:timestamp}\] %{USERNAME:method}[T ]%{URL:url} %{NUMBER:exec_time}"
		}
   }  
} 
output {
    ...
}

如何使我们自定义的正则生效呢,找到 logstash 中的文件 grok-patterns,在文件末尾追加自定义的内容(名字不能与已有的名字重复),重启服务生效。
正则配置文件路径:logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns

...

# Log formats
SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:

# Log Levels
LOGLEVEL ([Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(?:or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)

# 用户自定义正则
URL (http(s)?:\/\/)?%{URIHOST:domain_name}%{URIPATH}

ELK logstash的grok 自带的正则匹配、自定义正则 使用相关教程

  1. ELK安装及使用(一)

    ELK安装及使用(一) 今天开始分享ELK分布式日志管理系统: 1、下载elasticsearch-7.9.0 解压: 到bin目录下双击elasticsearch.bat 启动成功,访问 :http://127.0.0.1:9200/ 2、下载解压安装kibana-7.9.0-windows-x86_64 到kibana-7.9.0-windows-x86_64\conf

  2. ELK+Spring Cloud搭建分布式日志中心

    ELK+Spring Cloud搭建分布式日志中心 ELK+Spring Cloud搭建分布式日志中心 1.ELK简介 2.资源包下载 3.Elasticsearch安装 4.ElasticSearch-head插件安装 5.Logstash安装 6.Kibana安装 1.ELK简介 ELK 是 Elasticsearch、Logstash、Kibana 的简称。 Elasticsearc

  3. ELK分布式日志解决方案

    ELK分布式日志解决方案 一、简介 ELK,包含三款产品,Elasticsearch、Logstash、Kibana,可在项目中作为日志框架使用。 项目中框架整合所需技术: 在整个方案中,各组件的作用如下: 应用服务 生产日志,通过Logger产生日志并输出。 Logstash 收集日志,通过h

  4. ELK搭建

    ELK搭建 前言 在前篇文章简单介绍ELK和相关的组件ELK架构介绍,在写这篇文章之后本来是不打算搭建ELK的,过了几天吧,公司测试小哥说要看项目日志,而我们后端开发是按模块开发的,所以日志不集中,也没有统一部署到测试服务器上,那么正好找个借口帮公司搭

  5. 渗透测试-Ngrok内网映射与穿透

    渗透测试-Ngrok内网映射与穿透 文章目录 前言 Python建站 Ngrok内网映射 总结 前言 有的时候希望把本地内网系统映射到公网方便跨局域网访问,Sunny-Ngrok提供国内免费的内网映射服务器,可以满足我们这个需求。 为什么使用Sunny-Ngrok? 提供免费内网穿透服务

  6. logstash的基本使用

    logstash的基本使用 文章目录 logstash概述 logstash安装运行 logstash配置详解 输入 过滤 输出 案例 举例1:使用Logstash展示标准输入、输出 举例2:使用Logstash收集日志文件并输出到控制台 举例3:使用Logstash收集日志文件并输出到es 举例4:使用logstash

  7. SpringBoot2 默认的Logback日志整合ELK

    SpringBoot2 默认的Logback日志整合ELK 前提:当前SpringBoot版本2.2.2 关闭ELK节点centos7防火墙 systemctl stop firewalld 一、首先安装ELK,具体步骤参考博文:ELK单节点安装 二、SpringBoot集成Logstash !--集成logstash--dependency groupIdnet.logstash

  8. ELK原理与介绍。

    ELK原理与介绍。 一:ELK的原理与使用 。 一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的