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

Ali*_*ter 5 kubernetes prometheus

我目前正在尝试对可用区内的 Kubernetes Pod 堆叠发出警报。我成功地使用了两种不同的指标,可以看到应用程序有多少个 pod 正在特定的可用区域上运行。但是,由于扩展,我希望警报基于百分比...因此我们可以在一个 AZ 上运行特定百分比的 pod 时发出警报(即超过 70%)。

我当前的查询:

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)
Run Code Online (Sandbox Code Playgroud)

以及一些选定的输出:

{created_by_name="some-db-1",az_info="az1"} 1
{created_by_name="some-db-1",az_info="az2"} 4
{created_by_name="some-db-2",az_info="az1"} 2
{created_by_name="some-db-2",az_info="az2"} 3
Run Code Online (Sandbox Code Playgroud)

例如,在上面的输出中,我们可以看到 4 个 db-1 pod 堆叠在 az2 上,而不是 1 个 pod 堆叠在 az1 上。在这种情况下,我们希望发出警报,因为 80% 的 db-1 Pod 堆叠在单个可用区上。

由于输出包含多个可用区上的多个 Pod,感觉使用单个 Prometheus 查询可能很难获得百分比,但想知道是否有经验丰富的人可以提供解决方案?

谢谢!

bri*_*zil 8

  your_expression 
/ ignoring(created_by_name) group_left
  sum without(created_by_name)(your_expression)
Run Code Online (Sandbox Code Playgroud)

会给你每个整体的比例,然后你就可以> .8这样做了。