gpt4 book ai didi

正则表达式:Grafana 变量将连字符分隔的 IP 转换为点分隔的 IP

转载 作者:IT王子 更新时间:2023-10-29 02:24:45 26 4
gpt4 key购买 nike

我正在尝试使用自定义查询在 Grafana 中创建一个变量来扫描 EKS 集群中的节点。目前,节点变量存储为“连字符”分隔的字符串(例如 10-109-22-102);我打算将其报告为“点”分隔的字符串(例如 10.109.22.102)。这甚至可以通过正则表达式实现吗?

格拉法纳 variables支持通过抓取给定指标然后使用正则表达式在报告的指标中提取值来创建实时变量。我目前正在抓取一个指标:

kube_node_info{container_runtime_version="docker://18.6.1",endpoint="http",instance="10.11.111.111:8080",job="kube-state-metrics",kernel_version="xxxxx",kubelet_version="xxxx",kubeproxy_version="xxxx",namespace="infra",node="ip-10-11-111-111.us-sdlls-as.compute.internal",os_image="Amazon Linux 2",pod="prometheus-operator-kube-state-metrics-sdfgsjdkgl-saldjl",service="prometheus-operator-kube-state-metrics"}

我目前正在使用正则表达式:/.*node="ip-([^"]*).us-*/ 来提取“连字符”分隔的 IP。我也尝试过使用其他匹配组,例如: ([\d]{2,3})-([\d]{2,3})-([\d]{2,3})-( [\d]{2,3}) 但是,这仅返回 grafana 中的第一个匹配组(在本例中为 10)作为唯一选项。

预期输出应该是:

10.11.111.111

最佳答案

在我看来,您设计的那个应该可以正常工作:

测试

package main

import (
"regexp"
"fmt"
)

func main() {
var re = regexp.MustCompile(`(?m)([0-9]{2,3})-([0-9]{2,3})-([0-9]{2,3})-([0-9]{2,3})`)
var str = `kube_node_info{container_runtime_version="docker://18.6.1",endpoint="http",instance="10.11.111.111:8080",job="kube-state-metrics",kernel_version="xxxxx",kubelet_version="xxxx",kubeproxy_version="xxxx",namespace="infra",node="ip-10-11-111-111.us-sdlls-as.compute.internal",os_image="Amazon Linux 2",pod="prometheus-operator-kube-state-metrics-sdfgsjdkgl-saldjl",service="prometheus-operator-kube-state-metrics"

kube_node_info{container_runtime_version="docker://18.6.1",endpoint="http",instance="10.11.111.111:8080",job="kube-state-metrics",kernel_version="xxxxx",kubelet_version="xxxx",kubeproxy_version="xxxx",namespace="infra",node="ip-10-11-111-111.us-sdlls-as.compute.internal",os_image="Amazon Linux 2",pod="prometheus-operator-kube-state-metrics-sdfgsjdkgl-saldjl",service="prometheus-operator-kube-state-metrics"

`
var substitution = "$1.$2.$3.$4"

fmt.Println(re.ReplaceAllString(str, substitution))
}

表达式在 regex101.com 的右上面板中进行了解释, 如果你想探索/简化/修改它,在this link ,如果愿意,您可以观察它如何与一些样本输入相匹配。

关于正则表达式:Grafana 变量将连字符分隔的 IP 转换为点分隔的 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com