如何在查询中使用两个不同的项目

问题描述 投票:0回答:1

我已经开始使用 Prometheus / Grafana。我有一些来自 Kubernetes 集群的数据想要通过仪表板进行显示。特别是对于持久卷声明,我想显示表或类似表中的当前可用空间。

这个指标本身并不存在。但是,我可以使用此查询获取总容量:

px_volume_fs_capacity_bytes{}

这将返回具有以下结构的值列表:

px_volume_fs_capacity_bytes{app_kubernetes_io_instance="redis",app_kubernetes_io_name="redis",cluster="px-cluster-6b616c47-4d56-414c-9638-c95dcde99d4c",clusterUUID="52eff814-17e0-485e-b312-4be39d4e386f",endpoint="px-api",exported_namespace="database",instance="192.168.2.9:9001",job="portworx-service",namespace="portworx",node="kubenode02",nodeID="dfd4576e-185c-48c3-9542-8724319de0ac",pod="px-cluster-6b616c47-4d56-414c-9638-c95dcde99d4c-m988d",priority_io="high",pvc="redis-data-redis-master-0",repl="1",service="portworx-service",volumeid="777692050373571690",volumename="pvc-6de4deb8-19ac-4340-be43-2769b733dc89",app_kubernetes_io_component="master"}

每个持久卷都有一个这样的条目。我也可以对使用的字节执行相同的操作。我想要做的是这样的:

for each $persistent_volume_name (px_volume_fs_used_bytes/px_volume_fs_capacity_bytes)

请注意,标签值 pvc 存在于两个数据集中,因此我希望将其用作它们之间的查找。

然后我会得到这样的桌子:

体积标签 可用空间 (MB)
persist_vol_label01 500MB
persist_vol_label02 100MB
persist_vol_label03 200MB

我当然可以为每个项目制作一个盒子,但我希望制作一个动态视图。

prometheus grafana dashboard
1个回答
0
投票

Prometheus 会自动执行“foreach”。

因此,如果您保证在两个指标中标签

volumename
是唯一的,并且同时出现在两个指标中,则可以简单地使用查询

px_volume_fs_used_bytes
/ on(volumename)
px_volume_fs_capacity_bytes

它将把所有

px_volume_fs_used_bytes
匹配适当的
px_volume_fs_capacity_bytes
(与标签
volumename
的值相同)并返回除法结果。

© www.soinside.com 2019 - 2024. All rights reserved.