Prometheus 动态场之和

Prometheus 动态场之和,prometheus,promql,Prometheus,Promql,我需要按VM名称前缀总结我的VM。我所有的虚拟机都有前缀,如“customername\u IIS01”、“customername\u IIS02”、“customername\u SQL”。我需要编写一个promQL查询,以按customername对所有客户的度量求和。但当然,当新客户到来时,它需要通过查询获得其名称 例如: 这是我需要收集的指标。我可以通过“vmware\u vm\u cpu\u usagemhz\u average{vm\u name=~”customer01.+“}”

我需要按VM名称前缀总结我的VM。我所有的虚拟机都有前缀,如“customername\u IIS01”、“customername\u IIS02”、“customername\u SQL”。我需要编写一个promQL查询,以按customername对所有客户的度量求和。但当然,当新客户到来时,它需要通过查询获得其名称

例如:
这是我需要收集的指标。我可以通过“vmware\u vm\u cpu\u usagemhz\u average{vm\u name=~”customer01.+“}”获得它。客户可以达到100个或更多,并且它正在动态变化。通过ProMQ获取此信息的正确方法是什么?

您可以解析标签以创建一个附加标签
customer
,其中包含从前缀推断出的客户名称

这可以在Prometheus配置中使用:

如果您无权访问promteheus配置,或者出于任何原因希望在查询时执行此操作,则可以使用在查询中创建标签。如果您的查询变得更复杂,那么它很快就会变得笨拙和不可读

 label_replace({__name__=~"vmware_vm_.*"}, "customer", "$1", "vm_name", "^([^.]+)\..*$")

我尝试在相关作业定义下添加度量值标签配置。您的正则表达式无法返回所需的数据,但我用^([^\u\t]+).*对其进行了更改,然后在相关指标(vmware\u vm\u cpu\u usagemhz\u average)上得到了“customer”。但并不是所有的值都有“customer”字段,这正常吗?谢谢@Michael Doubez,不幸的是,普罗米修斯没有接受它的正则表达式并给出了错误。您缺少“.我将修复表达式。我无法验证表达式,这是一个示例:)。如果值没有标签
vm\u name
,或者模式错误,您将得到一个空值。您必须调整模式。
 label_replace({__name__=~"vmware_vm_.*"}, "customer", "$1", "vm_name", "^([^.]+)\..*$")