首页 > 解决方案 > 如何获得两个值

问题描述

我正在尝试在 Grafana 中创建变量并从一个长字符串中获取两个值。查询结果为:

ifHCInOctets{ifAlias="string1",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 22 on Unit 1",ifIndex="int2",ifName="0x3232"}

我需要在一个结果中得到 string1 和 int2 。我试试这个正则表达式,但在 grafana 我只得到 string1:

.*ifAlias="(.*?)",.*,ifIndex="([1-25][^"]*).*

更新:

目标是在图表标题中获取端口索引和 ifAlias。原始数据是:

ifHCOutOctets{ifAlias="UPSTREAM",ifDescr="",ifIndex="4",ifName="4"} 9.3057114067485e+13
ifHCOutOctets{ifAlias="",ifDescr="",ifIndex="5",ifName="5"} 2.274143681e+09
ifHCOutOctets{ifAlias="",ifDescr="",ifIndex="6",ifName="6"} 7.002508461736e+12
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 10 on Unit 1",ifIndex="10",ifName="10"} 2.577610903151e+12
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 15 on Unit 1",ifIndex="15",ifName="15"} 4.854219613e+10
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 16 on Unit 1",ifIndex="16",ifName="16"} 4.96070449818e+11
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 17 on Unit 1",ifIndex="17",ifName="17"} 1.9350264954065e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 18 on Unit 1",ifIndex="18",ifName="18"} 3.3384544298231e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 19 on Unit 1",ifIndex="19",ifName="19"} 3.668765293115e+12
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 20 on Unit 1",ifIndex="20",ifName="20"} 1.60948251155615e+14
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 21 on Unit 1",ifIndex="21",ifName="21"} 1.3754296283244e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 22 on Unit 1",ifIndex="22",ifName="22"} 1.7416985946384e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 23 on Unit 1",ifIndex="23",ifName="23"} 4.4569373926096e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 24 on Unit 1",ifIndex="24",ifName="24"} 1.339389886592e+12
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 26 on Unit 1",ifIndex="26",ifName="26"} 0
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 3 on Unit 1",ifIndex="3",ifName="3"} 1.3292564781714e+13
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 7 on Unit 1",ifIndex="7",ifName="7"} 3.27435396e+10
ifHCOutOctets{ifAlias="",ifDescr="D-Link DGS-3420-28TC R1.82.B00 Port 8 on Unit 1",ifIndex="8",ifName="8"} 1.9079625314e+10

标签: regexgrafana

解决方案


看看这里:

ifAlias="([^"]+)",.*ifIndex="([^"]+)

https://regex101.com/r/1120hJ/1

您的 ifIndex 正在寻找数字[1-25](应该是[0-9]),其中示例字符串还包含文本


推荐阅读