regex - 正则表达式从日志中分离 IP:端口
问题描述
我有以下简单的正则表达式,可以很好地拆分给定的示例日志。这将提供单独的对象组,我可以使用 $1 $2 $3 ... 等访问这些对象组。我在 Splunk 中使用它。
例如。
$1 = https
$2 = 2020-08-20T12:40:00.274478Z
$3 = app/my-aws-alb/e7538073dd1a6fd8
(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+?)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)(.*?\s+)
https 2020-08-20T12:40:00.274478Z app/my-aws-alb/e7538073dd1a6fd8 162.158.26.188:21098 172.0.51.37:80 0.000 0.004 0.000 405 405 974 424 "POST https://my-aws-alb-domain:443/api/ps/fpx/callback HTTP/1.1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.2840.91 Safari/537.36" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:ap-southeast-1:111111111111:targetgroup/my-aws-target-group/41dbd234b301e3d84 "Root=1-5f3e6f20-3fdasdsfffdsf" "api.mydomain.com" "arn:aws:acm:ap-southeast-1:11111111111:certificate/be4344424-a40f-416e-8434c-88a8a3b072f5" 0 2020-08-20T12:40:00.270000Z "forward" "-" "-" "172.0.51.37:80" "405" "-" "-"
这里的问题是,我想将 IP:Port 分成单独的组。有多个地方有 IP:Port。我需要的那些像其他对象一样作为一个单独的组。
例如。
$4 = 162.158.26.188
$5 = 21098
$6 = 172.0.51.37
$7 = 80
有人可以帮忙吗?谢谢!
解决方案
这是一个正则表达式,它将从字段中提取所有 ip:port 值:
| rex field=_raw max_match=0 "(?<ip_port>\d+\.\d+\.\d+\.\d+\:\d+)"
现在扩展ip_port
字段:
| mvexpand ip_port
然后从&ip_port
中提取:ip
port
| rex field=ip_port "(?<ip>\d+\.\d+\.\d+\.\d+\)\:(?<port>\d+)"
推荐阅读
- javascript - 如何正确设置 Material-ui 中某些元素的颜色?
- mongodb - MongoDB 自定义 Power BI DirectQuery 连接器问题 - 无法将 Bigint 转换为整数
- python - 如何按特定列对空格分隔的文件进行排序
- node.js - 在单独的文件中制作 typedef 以导入
- ruby-on-rails - 凭证管理器 ruby on rails 访问
- scala - 从具有通配符键类型的 Scala 映射中获取值
- go - 使用 Jenkins Blue Ocean 找不到命令
- java - 在字符串中的某个模式之后仅对几个数字进行 Grep
- c# - 如何将 JSON 属性值转换为键和值数组
- python - 为自定义 QWidget 设置背景颜色