在Prometheus中将两个不同的指标分组后如何划分?

时间:2019-01-14 15:14:10

标签: kubernetes prometheus

我目前正在尝试提醒可用性区域内堆叠的Kubernetes吊舱。我设法使用了两个不同的指标,以便可以看到一个应用程序在特定的可用区域上运行了多少个Pod。但是,由于缩放,我希望警报基于百分比...因此我们可以在特定百分比的Pod在一个AZ上运行时(即超过70%)发出警报。

我当前的查询:

void passPointers(int* &a){
    int p = 5;
    a = &p;
} // p dies here

以及一些选定的输出:

sum(count(kube_pod_info{namespace="somenamespace", created_by_kind="StatefulSet"}) by (created_by_name, node) * on (node) group_left(az_info) kube_node_labels) by (created_by_name, az_info)

例如,在上面的输出中,我们可以看到az2上堆叠了4个db-1 Pod,而az1上堆叠了1个pod。在这种情况下,我们要发出警报,因为80%的db-1吊舱都堆叠在单个AZ上。

由于输出包含多个AZ上的多个Pod,因此似乎很难通过单个Prometheus查询来获取百分比,但是想知道是否有更多经验的人可以提供解决方案?

谢谢!

1 个答案:

答案 0 :(得分:1)

  your_expression 
/ ignoring(created_by_name) group_left
  sum without(created_by_name)(your_expression)

将为您提供每个对象的整体比例,然后您可以对此进行> .8