3 回答

TA贡献1810条经验 获得超5个赞
在我看来,你设计的应该可以正常工作:
测试
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的右上角面板上进行了解释,如果您想探索/简化/修改它,并且在此链接中,如果您愿意,您可以观看它如何与某些示例输入匹配。

TA贡献1794条经验 获得超8个赞
实际目的是捕获实例的 IP,并通过查询将所有这些 IP 列为动态变量,然后通过 IP 启用所有节点指标。这是一个糟糕的方法,因为许多普罗米修斯节点指标都是用标签导出的node=ip-XX-XX-XXX-XXX-<region>-.compute.internal
(其中 XX 是数字)。此外,grafana 变量仅报告第一个子组的匹配 - 理想情况下它应该是所有子组。
但是,即使我要捕获 XX.XX.XXX.XXX 子组,这也意味着对于我需要捕获和绘制图表的每个指标,我需要解决 EKS 节点中所有 IP 的匹配问题 - 这不是特别是如果我们想要启用“全部”变量,其中 grafana 用所有变量匹配的正则表达式替换变量调用,这是可能的。前任。如果我的 k8s 节点有以下 IP: * 10.10.0.1 * 10.10.0.2 * 10.10.0.3 并且我将此变量称为 Node Grafana 将列出以下变量: * All * 10.10.0.1 * 10.10.0.2 * 10.10.0.3 在选择 grafanaAll
时会将 $Node 替换为./*(10.10.0.1|10.10.0.2|10.10.0.3)*/
但是,如果我有一个获取节点信息的查询:kube_pod_info{node=~"$Node"}
-> 这会失败,因为节点名称采用不同的格式,我们可以尝试通过使用来解决它,label_replace
但我们再次无法解决使用$Node
如果All
使用变量。
结论:使用变量$Node
(即* ip-10-10-0-1.us-sdlls-as.compute.internal * ip-10-10-0-2.us-sdlls-as.compute.internal * ip- 10-10-0-3.us-sdlls-as.compute.internal ) -按原样,这将使所有其他面板更加方便且易于配置。
- 3 回答
- 0 关注
- 597 浏览
添加回答
举报