以下解决方案可以帮助使用 Prometheus 的每个人:
Formula: sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name)
如果我们查询过去 3 小时,计算 avg_over_time 的 topk(公式[$__range: 4h ])。
topk(5,avg_over_time(sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name)[$__range:4h]))
然后将该值添加到现有公式中:
Final Formula: sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name) + topk(5,avg_over_time(sum(irate(container_cpu_usage_seconds_total{kubernetes_container_name=~".+", kubernetes_namespace=~".+"}[20s])) by (kubernetes_namespace,kubernetes_container_name)[$__range:4h]))*0
为我工作。不要忘记将 topk 结果乘以0。