热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PrometheusSQL统计容器cpu、内存使用率

目录1概述2方法


目录





    • 1 概述

    • 2 方法



      • 2.1 容器limits、requests值

      • 2.2 全天最高Limits值

      • 2.3 全天最高使用量

      • 2.4 全天最高使用率

      • 2.5 全天平均使用率







1 概述

通过prometheus SQL统计容器cpu、内存使用率,指导容器requests、limits值的设置,提高资源利用率,降低云上资源成本。


2 方法


2.1 容器limits、requests值



  • CPU

# limits
avg by (container) (kube_pod_container_resource_limits{resource="cpu"})
# requests
avg by (container, resource) (kube_pod_container_resource_requests{resource="cpu"})


  • 内存(单位:Mi)

# limits
avg by (container) (kube_pod_container_resource_limits{resource="memory"})/1024/1024
# requests
avg by (container) (kube_pod_container_resource_requests{resource="memory"})/1024/1024

2.2 全天最高Limits值

用于判断pod的hpa伸缩区间,需注意的是,滚动更新时实际pod数量大于hpa限制,因此总资源并不恒等于hpa*limits

# CPU
max_over_time(
sum by (container) (kube_pod_container_resource_limits{resource="cpu"}
)[1d:]
)
# 内存
max_over_time(
sum by (container)(kube_pod_container_resource_limits{resource="memory"}
)[1d:]
)/1024/1024

2.3 全天最高使用量



  1. 以下PromQL统计的资源使用量进包含业务容器,若pod含有其它容器时(如sidecar),数值将略低于kubectl top pod命令

  2. irate更准确,rate统计误差较大

  3. avg更准确,sum在pod数量变化时存在成倍差异

# CPU
round(100*max_over_time(
sum by(container) (irate(container_cpu_usage_seconds_total{}[5m])
)[1d:]
))/100
# 内存
round(100*max_over_time(
sum by(container) (container_memory_working_set_bytes{}
)[1d:])/1024/1024/1024
)/100

2.4 全天最高使用率

# CPU
round(10000*max_over_time((
avg by (container) (irate(container_cpu_usage_seconds_total {namespace="csdn",container!="consul"}[5m])) /
avg by (container) (kube_pod_container_resource_limits{resource="cpu"})
) [1d:])
)/100
# 内存
round(10000*max_over_time((
avg by (container) (container_memory_working_set_bytes{}) /
avg by (container) (kube_pod_container_resource_limits{resource="memory"})
) [1d:])
)/100

2.5 全天平均使用率

# CPU
round(10000*avg_over_time((
avg by (container) (irate(container_cpu_usage_seconds_total {namespace="csdn",container!="consul"}[5m])) /
avg by (container) (kube_pod_container_resource_limits{resource="cpu"})
) [1d:])
)/100
# 内存
round(10000*avg_over_time((
avg by (container) (container_memory_working_set_bytes{}) /
avg by (container) (kube_pod_container_resource_limits{resource="memory"})
) [1d:])
)/100


推荐阅读
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文介绍了在Linux环境下如何有效返回命令行状态、上一级目录及快速查找头文件和函数定义的方法。包括处理长时间运行命令、编辑器退出技巧、目录导航以及文件搜索策略。 ... [详细]
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • 2017年软件开发领域的七大变革
    随着技术的不断进步,2017年对软件开发人员而言将充满挑战与机遇。本文探讨了开发人员需要适应的七个关键变化,包括人工智能、聊天机器人、容器技术、应用程序版本控制、云测试环境、大众开发者崛起以及系统管理的云迁移。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
author-avatar
陈建希佳旭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有