将Grafana指标与不匹配的标签结合起来

时间:2018-11-26 09:56:45

标签: kubernetes grafana prometheus

我有两个指标(与Kubernetes容器中的内存使用有关)定义如下:

  1. kube_pod_container_resource_limits_memory_bytes {app =“ kube-state-metrics”, container =“ foo” ,instance =“ 10.244.0.7:8080”,job =“ kubernetes-endpoints”,kubernetes_name =“ kube -state-metrics“,kubernetes_namespace =” monitoring“,namespace =” test“,node =” aks-nodepool1-25518080-0“, pod =” foo-cb9bc5fb5-2bghz“ }
  2. container_memory_working_set_bytes {agentpool =“ nodepool1”,beta_kubernetes_io_arch =“ amd64”,beta_kubernetes_io_instance_type =“ Standard_A2”,beta_kubernetes_io_os =“ linux”, container_name =“ foo” “1”,ID = “/ kubepods /爆裂/ pod5b0099a9-连翘醇提物-11e8-884b-ca2011a99774 / eeb183b21e2b3226a32de41dd85d7a2e9fc8715cf31ea7109bfbb2cae7c00c44”,图像= “@ SHA256:6d6003ba86a0b7f74f512b08768093b4c098e825bd7850db66d11f66bc384870”,例如= “AKS-nodepool1-25518080-0”,作业=“kubernetes -cadvisor“,kubernetes_azure_com_cluster =” MC_test.planned.bthbygg.se_bthbygg-test_westeurope“,kubernetes_io_hostname =” aks-nodepool1-25518080-0“,kubernetes_io_role =” agent“,name =” k8s_foo_foo_foo-eff-cbb9b9c -ca2011a99774_0“,namespace =” test“, pod_name =” foo-cb9bc5fb5-2bghz“ ,storageprofile =” managed“,storagetier =” Standard_LRS“}

我想通过类似的操作将这两个比例合并为一个百分比

container_memory_working_set_bytes{namespace="test"}
  / kube_pod_container_resource_limits_memory_bytes{namespace="test"}

但是没有返回任何数据,大概是因为没有匹配的标签可以连接数据集。如您所见,我确实有匹配的标签 values ,但是标签 names 不匹配。

是否可以通过某种方式制定我的查询以将其加入例如pod == pod_name,而不必更改另一指标(导出指标的位置)?

1 个答案:

答案 0 :(得分:0)

您可以使用PromQL label_replace函数从原始标签创建新的匹配标签。

例如,您可以使用以下表达式将container_name="foo"标签添加到可用于进行联接的第一个度量标准:

label_replace(
 kube_pod_container_resource_limits_memory_bytes,
 "container_name", "$1", "container", "(.*)")

您可以使用上述模式来创建可用于匹配的新标签。