前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于Logstash中grok插件的正则表达式例子

关于Logstash中grok插件的正则表达式例子

作者头像
石瞳禅
发布于 2018-09-18 10:11:35
发布于 2018-09-18 10:11:35
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

一、前言

近期需要对Nginx产生的日志进行采集,问了下度娘,业内最著名的解决方案非ELK(Elasticsearch, Logstash, Kibana)莫属。

Logstash负责采集日志,Elasticsearch负责存储、索引日志,Kibana则负责通过Web形式展现日志。

今天,我要说的是Logstash,它可以从多种渠道采集数据,包括控制台标准输入、日志文件、队列等等,只要你能想到,都可以通过插件的方式实现。

其中,日志源提供的日志格式可能并不是我们想要插入存储介质里的格式,所以,Logstash里提供了一系列的filter来让我们转换日志

Grok就是这些filters里最重要的一个插件,下面我就说说它。

二、Grok提供的常用Patterns说明及举例

大多数Linux使用人员都有过用正则表达式来查询机器中相关文件或文件里内容的经历,在Grok里,我们也是使用正则表达式来识别日志里的相关数据块。

有两种方式来使用正则表达式:

  1. 直接写正则来匹配
  2. 用Grok表达式映射正则来匹配

在我看来,每次重新写正则是一件很痛苦的事情,为什么不用表达式来一劳永逸呢?

特别提示:Grok表达式很像C语言里的宏定义

要学习Grok的默认表达式,我们就要找到它的具体配置路径,路径如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Windows下路径
[你的logstash安装路径]\vendor\bundle\jruby\x.x\gems\logstash-patterns-core-x.x.x\patterns\grok-patterns

现在对常用的表达式进行说明:

2.1 常用表达式

USERNAME 或 USER

用户名,由数字、大小写及特殊字符(._-)组成的字符串

比如:1234BobAlex.Wong

EMAILLOCALPART

电子邮件用户名部分,首位由大小写字母组成,其他位由数字、大小写及特殊字符(_.+-=:)组成的字符串。注意,国内的QQ纯数字邮箱账号是无法匹配的,需要修改正则

比如:stoneGary_Luabc-123

EMAILADDRESS

电子邮件

比如:stone@abc.comGary_Lu@gmail.comabc-123@163.com

HTTPDUSER

Apache服务器的用户,可以是EMAILADDRESSUSERNAME

INT

整数,包括0和正负整数

比如:0-12343987

BASE10NUM 或 NUMBER

十进制数字,包括整数和小数

比如:0185.23

BASE16NUM

十六进制数字,整数

比如:0x0045fa2d-0x3F8709

BASE16FLOAT

十六进制数字,整数和小数

WORD

字符串,包括数字和大小写字母

比如:String3529345ILoveYou

NOTSPACE

不带任何空格的字符串

SPACE

空格字符串

QUOTEDSTRING 或 QS

带引号的字符串

比如:"This is an apple"'What is your name?'

UUID

标准UUID

比如:550E8400-E29B-11D4-A716-446655440000

MAC

MAC地址,可以是Cisco设备里的MAC地址,也可以是通用或者Windows系统的MAC地址

IP

IP地址,IPv4或IPv6地址

比如:127.0.0.1FE80:0000:0000:0000:AAAA:0000:00C2:0002

HOSTNAME

主机名称

IPORHOST

IP或者主机名称

HOSTPORT

主机名(IP)+端口

比如:127.0.0.1:3306api.stozen.net:8000

PATH

路径,Unix系统或者Windows系统里的路径格式

比如:/usr/local/nginx/sbin/nginxc:\windows\system32\clr.exe

URIPROTO

URI协议

比如:httpftp

URIHOST

URI主机

比如:www.stozen.net10.0.0.1:22

URIPATH

URI路径

比如://www.stozen.net/abc//api.php

URIPARAM

URI里的GET参数

比如:?a=1&b=2&c=3

URIPATHPARAM

URI路径+GET参数

比如://www.stozen.net/abc/api.php?a=1&b=2&c=3

URI

完整的URI

比如:http://www.stozen.net/abc/api.php?a=1&b=2&c=3

2.2 日期时间表达式

MONTH

月份名称

比如:JanJanuary

MONTHNUM

月份数字

比如:03912

MONTHDAY

日期数字

比如:03931

DAY

星期几名称

比如:MonMonday

YEAR

年份数字

HOUR

小时数字

MINUTE

分钟数字

SECOND

秒数字

TIME

时间

比如:00:01:23

DATE_US

美国日期格式

比如:10-15-198210/15/1982

DATE_EU

欧洲日期格式

比如:15-10-198215/10/198215.10.1982

ISO8601_TIMEZONE

ISO8601时间格式

比如:+10:23-1023

TIMESTAMP_ISO8601

ISO8601时间戳格式

比如:2016-07-03T00:34:06+08:00

DATE

日期,美国日期%{DATE_US}或者欧洲日期%{DATE_EU}

DATESTAMP

完整日期+时间

比如:07-03-2016 00:34:06

HTTPDATE

http默认日期格式

比如:03/Jul/2016:00:36:53 +0800

2.3 Log表达式

LOGLEVEL

日志等级

比如:AlertalertALERTError

三、创建自己的Grok表达式

在业务领域中,可能会有越来越多的日志格式出现在我们眼前,而Grok的默认表达式显然已无法满足我们的需求(比如用户身份证号、手机号等信息),所以,我们需要自己动手添加些表达式。

表达式

正则表达式

说明

DATE_CHS

%{YEAR}[./-]%{MONTHNUM}[./-]%{MONTHDAY}

中国人习惯的日期格式

ZIPCODE_CHS

[1-9]d{5}

国内邮政编码

GAME_ACCOUNT

a-zA-Z{4,15}

游戏账号,首字符为字母,4-15位字母、数字、下划线组成

还有很多,需要您在业务中灵活运用!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
正则表达式的神奇世界:表达、匹配和提取
正则表达式,这个看起来像密林中的迷宫的工具,既神秘又令人着迷。它是编程世界中的一门魔法,有着神奇的能力。你是否曾经在寻找或解析文本时感到束手无策?或许你想要从海量数据中提取特定信息?这正是正则表达式可以派上用场的时候。本文将带你探索这个神奇的工具,从入门到高级,帮助你驾驭它,解密你的数据。
一只牛博
2025/05/30
1590
【Python】教你彻底了解Python中的正则表达式
正则表达式(Regular Expression,简称regex)是一种强大的字符串匹配和操作工具,用于搜索、匹配和替换字符串。在Python中,re模块提供了正则表达式的支持。本文将深入探讨Python中的正则表达式,涵盖正则表达式的基本概念、常用正则表达式模式、Python中正则表达式的使用方法、常见操作与应用场景,以及一些实际应用示例。
E绵绵
2025/05/25
1300
日志解析神器——Logstash中的Grok过滤器使用详解
Logstash 作为一个强大的日志管理工具,提供了一个名为 Grok 的过滤器插件,专门用于解析复杂的文本数据。
铭毅天下
2024/01/23
2.8K0
日志解析神器——Logstash中的Grok过滤器使用详解
Logstash6中grok插件的常用正则表达式
Logstash 内置了120种默认表达式,可以查看patterns,里面对表达式做了分组,每个文件为一组,文件内部有对应的表达式模式。下面只是部分常用的。
WindCoder
2018/09/19
5.3K0
Logstash的grok表达式与Filebeat的日志过滤
grok为Logstash 的Filter的一个插件,又因为存在表达式要配置,最开始当成过滤条件的配置了。随着深入了解,发现这个只是一个数据结构化转换工具,主要作用就是把String类型的字符串转为key-value形式。
WindCoder
2018/09/19
5.2K0
十分钟学会正则表达式
https://segmentfault.com/a/1190000038502198
@超人
2021/02/26
4150
Logstash 配置 Grok 语法
Grok 是一种采用组合多个预定义的正则表达式。用来匹配分割文本,并且映射到关键字的工具。主要用来对日志数据进行预处理。Logstash 的 filter 模块中 grok 插件就是其应用。其实主要思想就是用正则的方式匹配出字段,然后映射成某个字段。
王小明_HIT
2019/09/06
9.3K0
Logstash 配置 Grok 语法
干货 | ELK 日志实时分析实战
Elasticsearch架构选型指南——不止是搜索引擎,还有......曾强调:Elasticsearch 三大核心业务场景:
铭毅天下
2021/07/22
1.4K0
干货 | Logstash自定义正则表达式ETL实战
本文建立在干货 | Logstash Grok数据结构化ETL实战上,并专注于在Grok中使用自定义正则表达式。
铭毅天下
2019/07/23
2.7K0
干货 | Logstash自定义正则表达式ETL实战
再见,正则表达式
但是正则表达式几乎没有可读性可言,维护起来,真的会让人抓狂,别以为这段正则是你写的就可以驾驭它,过个一个月你可能就不认识它了。
Python进阶者
2021/01/25
4370
再见,正则表达式
【数据化】运维数据集中阶段性小结
- 本篇是结合行业内的一些技术方案分享、调研,以及对运维数据集中的理解,部份内容还要在实践中完善,属于阶段性学习小结
彭华盛
2020/03/06
7360
正则表达式
If you’re thinking in terms of object-oriented programming, your first impulse might be to start defining objects for the various elements in the world: a class for the robot, one for a parcel, maybe one for places. These could then hold properties that describe their current state, such as the pile of parcels at a location, which we could change when updating the world.
云台大树
2021/08/24
4600
【ES三周年】深入理解 ELK 中 Logstash 的底层原理 + 填坑指南
通过本篇内容,你可以学到如何解决 Logstash 的常见问题、理解 Logstash 的运行机制、集群环境下如何部署 ELK Stack。
悟空聊架构
2023/02/23
8.4K2
【ES三周年】深入理解 ELK 中 Logstash 的底层原理 + 填坑指南
这20个正则表达式,让你少写1000行代码
正则表达式——古老而又强大的文本处理工具。仅用一段简短的表达式语句,就能快速地实现一个复杂的业务逻辑。掌握正则表达式,让你的开发效率有一个质的飞跃。 正则表达式经常被用于字段或任意字符串的校验,比如下面这段校验基本日期格式的JavaScript代码: (注:C语言无法直接使用,有兴趣的小伙伴可以搜索C语言正则表达式相关) var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var r = fieldValue.match(reg);
老九君
2018/03/06
7290
第七章 正则表达式编程
第七章 正则表达式编程 什么叫知识,能指导我们实践的东西才叫知识。 学习一样东西,如果不能使用,最多只能算作纸上谈兵。正则表达式的学习,也不例外。 掌握了正则表达式的语法后,下一步,也是关键的一步,就是在真实世界中使用它。 那么如何使用正则表达式呢?有哪些关键的点呢?本章就解决这个问题。 内容包括: 正则表达式的四种操作 相关API注意要点 真实案例 1. 正则表达式的四种操作 正则表达式是匹配模式,不管如何使用正则表达式,万变不离其宗,都需要先“匹配”。 有了匹配这一基本操作后,才有其他的操作:验证、切分
程序猿DD
2018/02/01
1.9K0
第七章 正则表达式编程
正则表达式
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本,比如爬虫工程师可以用正则表达式来匹配网页上的文本数据,自然语言工程师可以用正则表达式匹配出含有敏感词的语句,作为气象工程师,我们可以用正则表达式来处理我们服务器内的日志文件,也可以用来匹配特定规律的模式输出文件名。
MeteoAI
2019/08/19
6330
关于常用的正则表达式的分享
  1.正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
用户7053485
2020/03/12
1.2K0
WAF防火墙数据接入腾讯云ES最佳实践(下)
本文描述问题及解决方法适用于 腾讯云 Elasticsearch Service(ES)。
岳涛
2023/08/10
1.2K1
WAF防火墙数据接入腾讯云ES最佳实践(下)
版本号的正则表达式-常见正则表达式大全
  评注:腾讯QQ号从10000开始   匹配中国邮政编码:[1-9]d{5}(?!d)   评注:中国邮政编码为6位数字   匹配身份证:d{15}|d{18}   评注:中国的身份证为15位或18
宜轩
2022/12/29
9160
【网络编程】正则表达式快速上手指南
可以通过 std::regex_constants 中的标志调整正则行为:
修修修也
2025/03/31
1090
【网络编程】正则表达式快速上手指南
相关推荐
正则表达式的神奇世界:表达、匹配和提取
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档