【问题标题】:Default sum operator to 0 when values dont exist当值不存在时,默认 sum 运算符为 0
【发布时间】:2018-10-29 10:26:30
【问题描述】:

我正在使用以下查询来计算 GKE 集群中节点的成本(为提高可读性而添加了新行)

sum(
  kube_node_status_capacity_cpu_cores * on(node) group_left(label_cloud_google_com_gke_nodepool) 
    kube_node_labels{
      label_cloud_google_com_gke_preemptible = "true"
    }
) * 5.10 + 
sum(
  kube_node_status_capacity_cpu_cores * on(node) group_left(label_cloud_google_com_gke_nodepool) 
    kube_node_labels{
      label_cloud_google_com_gke_preemptible = ""
    }
) * 16.95

如果集群具有可抢占节点,则它可以工作,因为至少有一个节点具有label_cloud_google_com_gke_preemptible = "true",因此第一个 sum 运算符返回一个值。

当集群没有可抢占节点时失败,因为没有具有label_cloud_google_com_gke_preemptible = "true" 的节点,因此第一个总和没有返回值

是否可以修改查询以使第一个总和返回 0 值?

【问题讨论】:

    标签: prometheus google-kubernetes-engine promql


    【解决方案1】:

    如果一个值不存在,您可以使用or 插入一个值:

      (
          sum(
              kube_node_status_capacity_cpu_cores 
            * on(node) group_left(label_cloud_google_com_gke_nodepool) 
              kube_node_labels{label_cloud_google_com_gke_preemptible = "true"}
          ) * 5.10 
        or
          vector(0)
      )
    + 
      sum(
          kube_node_status_capacity_cpu_cores 
        * on(node) group_left(label_cloud_google_com_gke_nodepool) 
          kube_node_labels{label_cloud_google_com_gke_preemptible = ""}
      ) * 16.95
    

    【讨论】:

    • 你,我的朋友,是个天才!
    猜你喜欢
    • 2017-10-05
    • 2012-02-27
    • 2013-08-09
    • 1970-01-01
    • 2015-02-25
    • 2012-11-26
    • 2019-05-18
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多