0

我想为普罗米修斯写一个警报查询。如果任何节点消耗的内存超过特定的内存百分比,这将引发警报。

我想动态获取节点并检查它的内存状态。

  1. 读取所有节点

  2. 使用查询循环遍历每个节点

    sum(container_memory_usage_bytes{job="kubernetes-nodes", id="/", instance="$node"}) / sum(machine_memory_bytes{job="kubernetes-nodes", instance="$node"}) * 100

如果我提供节点的静态名称,此警报有效

 ALERT HighMemoryAlert
  IF 100 * sum(container_memory_usage_bytes{job="kubernetes-nodes", id="/",instance="ip-170-10-10-17.eu-west-1.compute.internal"}) / sum(machine_memory_bytes{job="kubernetes-nodes",instance="ip-170-10-10-17.eu-west-1.compute.internal"}) > 90
  FOR 15m
  LABELS {
    service = "k8s",
    severity = "warning"
  }
  ANNOTATIONS {
    summary = "HighMemoryAlert"
  }

我不想静态添加 ip,因为如果任何节点崩溃并使用不同的 ip 创建,k8s 节点 ip 可以在一段时间内更改

4

1 回答 1

2

你想要做的是在保持实例标签的同时聚合起来,所以

  sum by (instance)(container_memory_usage_bytes{job="kubernetes-nodes", id="/"}) 
/ 
  sum by (instance)(machine_memory_bytes{job="kubernetes-nodes"}) * 100
于 2016-11-24T18:01:08.187 回答