关键词:
elk笔记4--grok正则解析
1 grok 切分方法
grok切分规则可按照如下思路进行。
1)找准切分标志,以切分标志作为中心向左或者向右逐个字段抽出,对于正则中的通配符需要进行转义处理,否则这类字符作为分割标志的时候容易解析出错
2)也可以直接从左到右逐个字段取出
2 grok 切分案例
- 案例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"
- 案例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"
- 案例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"
- 案例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": "-"
- 案例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"
- 案例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"
- 案例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-patternsfilter-grok-index
无需解析日志即可从 Java 应用程序记录到 ELK
...的服务器上设置Logstash,并让Logstash解析日志文件(使用正则表达式...!)并加载它们进入ElasticSear 查看详情
学习笔记37用正则表达式解析和提取数据
用正则表达式解析和提取数据正则表达式是一种非常好用的信息提取手段,它可以高效的从文本中提取所需信息。1、findall()函数基本语法格式:re.findall(匹配规则,原始文本)例子:提取“Hello123World!”中的3... 查看详情
elk笔记16--聚合分析
elk笔记16--聚合分析1聚合概念2聚合类型2.1Bucketing2.1.1TermsAggregation2.2Metric2.2.1AvgAggregation2.3Pipeline2.3.1AvgBucketAggregation2.3.2MaxBucketAggregation2.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--index1.index创建的几种方式1.1直接创建index1.2按照当前日期创建索引1.3创建带有rollover功能的索引2.索引的常见设置2.1基本设置2.2index为unassigned的常见处理方式... 查看详情
elk笔记10--filebeat使用
elk笔记10--filebeat使用1filebeat介绍2filebeat使用案例2.1软件安装2.2采集数据到kafka2.3采集数据到es3使用技巧3.1filebeat将日志按照类别发送到不同kafkatopic3.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-fulltextqueries1fulltext查询简介2fulltext查询类型2.1intervalsquery2.2matchquery2.3match_bool_prefixquery2.4match_phrasequery2.5match_phrase_prefixquery2.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-levelqueries1term-level查询简介2term-level查询类型2.1existsquery2.2fuzzyquery2.3idsquery2.4prefixquery2.5rangequery2.6regexpquery2.7termquery2.8term 查看详情