elk笔记4--grok正则解析

昕光xg 昕光xg     2022-12-02     310

关键词:


elk笔记4--grok正则解析

1 grok 切分方法

grok切分规则可按照如下思路进行。
1)找准切分标志,以切分标志作为中心向左或者向右逐个字段抽出,对于正则中的通配符需要进行转义处理,否则这类字符作为分割标志的时候容易解析出错
2)也可以直接从左到右逐个字段取出

2 grok 切分案例

  1. 案例1内容:
2016/04/27 12:22:50 OSPF: AdjChg: Nbr 220.220.220.220 on g-or2-a0bjt:10.61.61.61: Init -> Deleted (InactivityTimer)

正则:

%DATA:timestamp OSPF: %DATA:type: Nbr %DATA:neighborip on %DATA:interface:%DATA:ip: %DATA:srcstat -> %GREEDYDATA:data

注意: OSPF前面需要有空格,否则会导致空格到timestamp中;on前面需要空格,否则会导致解析失败
结果:


"data": "Deleted (InactivityTimer)",
"neighborip": "220.220.220.220",
"srcstat": "Init",
"ip": "10.61.61.61",
"type": "AdjChg",
"interface": "g-or2-a0bjt",
"timestamp": "2016/04/27 12:22:50"
  1. 案例2
    内容:
[Jul 11 10:22:59][123.123.123.123]<14>[2016-07-11 10:22:59,591][client.log][INFO]bak found in

正则1:

\\[%DATA:head]\\[%DATA:clientip]<%NUMBER:pid>\\[%GREEDYDATA:ts]\\[%DATA:logtype]\\[%LOGLEVEL:level]%GREEDYDATA:data

注意:[需要进行转义
结果:


"head": "Jul 11 10:22:59",
"logtype": "client.log",
"data": "bak found in cache, skip it, test_data_2035_20160711_0500",
"level": "INFO",
"clientip": "123.123.123.123",
"pid": "14",
"ts": "2016-07-11 10:22:59,591"

正则2:去掉多余一个时间

\\[%DATA:head]\\[%DATA:clientip]<%NUMBER:pid>\\[2016-07-11 10:22:59,591]\\[%DATA:logtype]\\[%LOGLEVEL:level]%GREEDYDATA:data
或者
\\[%DATA:head]\\[%DATA:clientip]<%NUMBER:pid>\\[.*]\\[%DATA:logtype]\\[%LOGLEVEL:level]%GREEDYDATA:data

结果:


"head": "Jul 11 10:22:59",
"logtype": "client.log",
"data": "bak found in cache, skip it, test_data_2035_20160711_0500",
"level": "INFO",
"clientip": "123.123.123.123",
"pid": "14"
  1. 案例3 解析syslog 日志
    内容:
Apr 19 12:56:07 xg dbus-daemon[1537]: [session uid=1000 pid=1537] Successfully activated service org.freedesktop.Tracker1

正则:

%GREEDYDATA:timestamp %DATA:user %DATA:app\\[%NUMBER:pid]: %GREEDYDATA:content

注意: 此处可以根[ 或者 ] 确定字段的相关关系,然后逐渐向前取,最前面时间直接使用GREEDYDATA匹配即可
结果:


"app": "dbus-daemon",
"pid": "1537",
"user": "xg",
"content": "[session uid=1000 pid=1537] Successfully activated service org.freedesktop.Tracker1",
"timestamp": "Apr 19 12:56:07"
  1. 案例4 解析nginx 日志
    内容:
120.123.123.123 - - [19/Apr/2020:10:40:59 +0800] "GET /hello HTTP/1.1" 404 200 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36"

正则:

%IP:server_name %DATA:holder1 %DATA:remote_user \\[%DATA:localtime] "%DATA:request" %NUMBER:req_status %NUMBER:upstream_status "%DATA:holder2" %GREEDYDATA:agent

结果:


"localtime": "19/Apr/2020:10:40:59 +0800",
"server_name": "120.123.123.123",
"request": "GET /hello HTTP/1.1",
"agent": "\\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36\\"",
"req_status": "404",
"remote_user": "-",
"upstream_status": "200",
"holder2": "-",
"holder1": "-"
  1. 案例5
    内容:
\\[%DATA:ts]\\[%DATA:ns]\\[%DATA:env]\\[%DATA:logstash_level]\\[%DATA:service]\\[%DATA:filename:%NUMBER:lineno]%GREEDYDATA:msg

正则:

\\[%DATA:ts]\\[%DATA:ns]\\[%DATA:env]\\[%DATA:logstash_level]\\[%DATA:service]\\[%DATA:filename:%NUMBER:lineno]%GREEDYDATA:msg

结果:


"msg": "keyword: , pageNo: 1",
"filename": "search.py",
"lineno": "29",
"ns": "audio-mgr",
"service": "apiserver",
"env": "production",
"ts": "2020-04-29 21:37:54",
"logstash_level": " INFO"
  1. 案例6
    内容:
2021-01-12T17:38:53.800474Z stdout F 2021-01-12 17:38:53,800 INFO: [Log.py:50] [MainProcess:20 MainThread]

正则:

%DATA:timestamp %DATA:stdtype F %DATA:dt2 %DATA:time2 %DATA:loglevel\\: \\[%DATA:file] \\[%DATA:function] - %GREEDYDATA:msg

结果:


"msg": "init logger",
"time2": "17:38:53,800",
"dt2": "2021-01-12",
"file": "Log.py:50",
"loglevel": "INFO",
"function": "MainProcess:20 MainThread",
"stdtype": "stdout",
"timestamp": "2021-01-12T17:38:53.800474Z"
  1. 案例7-解析ingress 日志
    本案例解析ingress 的日志,案例中字段参考案例晕 sls 中日志解析字段
    内容:
192.168.2.12 - - [18/May/2022:12:44:01 +0000] "GET /public/fonts/roboto/vPcynSL0qHq_6dX7lKVByfesZW2xOQ-xsNqO47m55DA.woff2 HTTP/1.1" 304 0 "http://grafana.xg.com:30080/public/build/grafana.dark.b208037f6b1954dc031d.css" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36" 569 0.000 [lens-metrics-grafana-svc-80] [] 10.224.25.187:3000 0 0.000 304

正则:

%IP:upstream_addr %DATA:http_referer %DATA:remote_user \\[%DATA:time] "%DATA:method %DATA:url %DATA:version" %NUMBER:status %NUMBER:request_length "http://%DATA:host/%DATA:path" %GREEDYDATA:agent %NUMBER:request_length %NUMBER:request_time \\[%DATA:proxy_upstream_name] \\[] %DATA:upstream_addr %NUMBER:upstream_response_length %NUMBER:upstream_response_time %NUMBER:upstream_status %GREEDYDATA:req_id

结果:


"agent": "\\"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36\\"",
"method": "GET",
"upstream_addr": "10.224.25.187:3000",
"upstream_response_length": "0",
"version": "HTTP/1.1",
"url": "/public/fonts/roboto/vPcynSL0qHq_6dX7lKVByfesZW2xOQ-xsNqO47m55DA.woff2",
"remote_user": "-",
"req_id": "7f2d304f864b63c6cd969cdde507b899",
"path": "public/build/grafana.dark.b208037f6b1954dc031d.css",
"upstream_status": "304",
"request_time": "0.000",
"request_length": "0",
"http_referer": "-",
"host": "grafana.xg.com:30080",
"proxy_upstream_name": "lens-metrics-grafana-svc-80",
"upstream_response_time": "0.000",
"time": "18/May/2022:12:44:01 +0000",
"status": "304"

3 说明

参考文档:
​​​grok-patterns​​​​filter-grok-index​


无需解析日志即可从 Java 应用程序记录到 ELK

...的服务器上设置Logstash,并让Logstash解析日志文件(使用正则表达式...!)并加载它们进入ElasticSear 查看详情

学习笔记37用正则表达式解析和提取数据

用正则表达式解析和提取数据正则表达式是一种非常好用的信息提取手段,它可以高效的从文本中提取所需信息。1、findall()函数基本语法格式:re.findall(匹配规则,原始文本)例子:提取“Hello123World!”中的3... 查看详情

elk笔记16--聚合分析

elk笔记16--聚合分析​​1聚合概念​​​​2聚合类型​​​​2.1Bucketing​​​​2.1.1TermsAggregation​​​​2.2Metric​​​​2.2.1AvgAggregation​​​​2.3Pipeline​​​​2.3.1AvgBucketAggregation​​​​2.3.2MaxBucketAggregation​​​​2.3.3MinBucke... 查看详情

如何使用正则表达式从 PySpark databricks 笔记本中的文件中解析表名

】如何使用正则表达式从PySparkdatabricks笔记本中的文件中解析表名【英文标题】:HowtouseregextoparsetheTablenamefromafileinPySparkdatabricksnotebook【发布时间】:2021-10-2806:24:03【问题描述】:我正在尝试使用正则表达式从镶木地板文件中获... 查看详情

logstash笔记-----grok插件的正则表达式来解析日志

(一)简介:   丰富的过滤器插件的存在是logstash威力如此强大的重要因素。名为过滤器,其实提供的不单单是过滤的功能,它们扩展了进入过滤器的原始数据,进行复杂的逻辑处理,甚至可以无中生有的添加新的logs... 查看详情

elk学习笔记---安装elk5.x版

ELK日志平台是一个完整的日志分析系统,有三个开源工具构建组成,分别是:Elasticsearch、Logstash和Kibana。Elasticsearch用于数据分析和深度搜索;Logstash作用是从其他服务器上传输和转发日志,对其集中管理,进行分析;Kibana则是提... 查看详情

elk安装笔记

1、安装JDKrpm -ivh jdk-8u101-linux-x64.rpm Preparing...                ##################################### 查看详情

elk笔记8--index

elk笔记8--index​​1.index创建的几种方式​​​​1.1直接创建index​​​​1.2按照当前日期创建索引​​​​1.3创建带有rollover功能的索引​​​​2.索引的常见设置​​​​2.1基本设置​​​​2.2index为unassigned的常见处理方式​​... 查看详情

elk笔记10--filebeat使用

elk笔记10--filebeat使用​​1filebeat介绍​​​​2filebeat使用案例​​​​2.1软件安装​​​​2.2采集数据到kafka​​​​2.3采集数据到es​​​​3使用技巧​​​​3.1filebeat将日志按照类别发送到不同kafkatopic​​​​3.2filebeat将日... 查看详情

elk配置笔记

filebeat安装配置1下载,安装wgethttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.4.3-linux-x86_64.tar.gzmvfilebeat-8.4.3-linux-x86_64.tar.gz/optcd/opttar-zxvffilebeat-8.4.3-linux-x86_64.tar.gzcd 查看详情

elk深度解析

上面的两张图是elk的一个架构下面是对logstash分析:如下图可以看出 logstash的一个角色shipper,(是通过配置文件来决定logstash是shipper还是indexer)注意:logstash共有两个角色一个是shipper,另一个是indexershipper:是日志收集者。负责监控... 查看详情

elk笔记13--queries-fulltextqueries

elk笔记13--Queries-fulltextqueries​​1fulltext查询简介​​​​2fulltext查询类型​​​​2.1intervalsquery​​​​2.2matchquery​​​​2.3match_bool_prefixquery​​​​2.4match_phrasequery​​​​2.5match_phrase_prefixquery​​​​2.6multi_m 查看详情

elk笔记9--跨集群搜索

elk笔记9--跨集群搜索​​1.跨集群搜索简介​​​​2.跨集群搜索配置​​​​3跨集群使用案例​​​​4说明​​1.跨集群搜索简介跨集群允许我们在一个或者多个远程集群上执行搜索任务,通常我们可以用跨集群搜索来过滤或... 查看详情

elk笔记22.2--通过api快速创建索引

elk笔记22.2--通过api快速创建索引​​1简介​​​​2功能实现​​​​2.1源码​​​​2.2测试​​​​3注意事项​​​​说明​​1简介本文基于​​elk笔记22–通过api快速创建索引​​继续通过api快速创建索引。本节将追加一个... 查看详情

elk笔记11--快照的使用

elk笔记11--快照的使用​​1快照介绍​​​​2快照使用​​​​2.1nfs作为存储仓库​​​​2.2hdfs作为存储仓库​​​​3使用技巧​​​​4说明​​1快照介绍快照是运行中es集群的一个备份,进行快照时候既可以全集群所有索引... 查看详情

elk学习笔记a

一、基本操作1、命令行运行 bin/logstash-e ‘input{stdin{}}output{stdout{codec=>rubydebug}}‘#bin/logstash -e ‘input{stdin{}}output{stdout{codec=>rubydebug}}‘Logstash startup compl 查看详情

elk学习笔记b

一、输入a、标准输入:input {    stdin {        add_field => {"key" =>"value"}        查看详情

elk笔记13--queries-term-levelqueries

elk笔记13--Queries-term-levelqueries​​1term-level查询简介​​​​2term-level查询类型​​​​2.1existsquery​​​​2.2fuzzyquery​​​​2.3idsquery​​​​2.4prefixquery​​​​2.5rangequery​​​​2.6regexpquery​​​​2.7termquery​​​​2.8term 查看详情