[Prometheus][Grafana] 使用标签在它们之间映射指标

Posted

技术标签:

【中文标题】[Prometheus][Grafana] 使用标签在它们之间映射指标【英文标题】:[Prometheus][Grafana] Use label to map metrics between them 【发布时间】:2020-02-10 23:01:24 【问题描述】:

我正在尝试根据 grafana 中的父标签值连接一些指标。

我正在为虚拟机管理程序导出一些指标,如下所示:


vmware_host_num_cpucluster_name="cluster1",dc_name="datacenter1",host_name="node1" 4.0

vmware_host_num_cpucluster_name="cluster1",dc_name="datacenter1",host_name="node2" 2.0

vmware_host_num_cpucluster_name="cluster2",dc_name="datacenter1",host_name="node3" 8.0

vmware_host_num_cpucluster_name="cluster3",dc_name="datacenter2",host_name="node4" 2.0

在我的示例中,node1 和 node2 在 cluster1 中,node3 在 cluster2 中,node4 在 cluster3 中。 我还有一些集群的具体指标:

vmware_cluster_currentFailoverLevelcluster_name="cluster1",dc_name="datacenter1",region="region1" 1.0

vmware_cluster_currentFailoverLevelcluster_name="cluster2",dc_name="datacenter1",region="region1" 0.0

vmware_cluster_currentFailoverLevelcluster_name="cluster3",dc_name="datacenter2",region="region2" 0.0

在我的示例中,cluster1 和 cluster2 在 region1 中,而 cluster3 在 region2 中。 每个管理程序都有一个 cluster_name 标签值。 每个集群都有一个区域标签值。

我想根据每个管理程序的 cluster_name 和集群的区域标签来获取同一区域中所有集群的 vmware_host_num_cpu 的总和值。

在我的例子中,结果应该是:

Total num_cpu for region1 = 14.0
Total num_cpu for region2 = 2.0

你知道怎么做吗? 谢谢

【问题讨论】:

【参考方案1】:
sum by (region) (
     vmware_host_num_cpu 
  + on(cluster_name) group_left(region) 
    vmware_cluster_currentFailoverLevel * 0
)

如果有一个信息指标来进行连接会更简洁。

【讨论】:

以上是关于[Prometheus][Grafana] 使用标签在它们之间映射指标的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus 安装部署出图(使用grafana)

Grafana中如何使用Prometheus数据源监控elasticsearch

如何使用 Grafana 警报显示 Prometheus 标签

部署Prometheus+Grafana监控Docker

[Prometheus][Grafana] 使用标签在它们之间映射指标

Prometheus + Grafana 监控系统搭