K8S体系监控-cadvisor监控
K8S体系监控
背景
由于业务容器化的推进,对K8S上运行的业务,也必须做到向之前物理机/虚拟机上一样,要有完备的监控保障。但是,毕竟K8S不是物理机/虚拟机,由于技术实现方式不同,监控方面也是有一定差别的。
Pod是K8S上调度的最小单元,本文就K8S Pod Docker容器该如何监控进行说明。
promethes容器内存监控
round(sum by(name, id, job, node) (container_memory_rss{image!=""}) / sum by(name, id, job, node) (container_spec_memory_limit_bytes{image!=""}) * 100 != +Inf) > 99
说明:
- != +Inf:
过滤正无穷的数据,如果容器没有定义限制内存,测container_spec_memory_limit_bytes值是0; - container_memory_rss:
RSS内存,即常驻内存集(Resident Set Size),是分配给进程使用实际物理内存,而不是磁盘上缓存的虚拟内存。RSS内存包括所有分配的栈内存和堆内存,以及加载到物理内存中的共享库占用的内存空间,但不包括进入交换分区的内存。 - container_memory_working_set_bytes 容器使用内存 更能体现出mem usage,也是oom killer指标(建议使用)
- container_spec_memory_limit_bytes:
容器的内存使用量限制,当k8s中的确认
promethes容器CPU监控
sum by(name, namespace, job) (rate(container_cpu_usage_seconds_total{image!=""}[10m])) >= (sum by(name, namespace, job) (container_spec_cpu_quota{image!=""} / 100000))
说明:
公式 平均1s容器使用CPU的时间/配额CPU个数*1s
- container_cpu_usage_seconds_total 该容器服务针对每个CPU累计消耗的CPU时间。如果有多个CPU,则总的CPU时间需要把各个CPU耗费的时间相加,可以求出平均1s容器使用的时间
- container_spec_cpu_quota 是容器的CPU配额,它的值是:为容器指定的CPU个数*100000。故Pod在1s内CPU的总时间为:Pod的CPU核数 * 1s:
注意:
CPU配额可以通过container_spec_cpu_quota除以container_spec_cpu_period来得到,
或用CPU Limit值kube_pod_container_resource_limits_cpu_cores也可以
说明:
CPU资源的限制与内存不同。当容器使用的内存超过限制配额后,会被系统加到OOM-Killing候选中。当容器使用CPU资源到达申请配额时,容器不会被系统驱逐或怎么样,只是限制CPU使用。
容器入带宽大于2M
round(sum by (namespace,job,name) (irate(container_network_receive_bytes_total{image!=""}[5m])) / 1024 /1024*1000)/1000 > 2
说明:k8s对网络的记录级别是pod级别的
容器出带宽大于2M
round(sum by (namespace,job,name) (irate(container_network_transmit_bytes_total{image!=""}[5m])) / 1024 /1024*1000)/1000 > 2
K8S集群内存使用率
表达式 PromQL语句:
sum (container_memory_working_set_bytes{id="/",kubernetes_io_hostname=~"^$Node$"}) / sum (machine_memory_bytes{kubernetes_io_hostname=~"^$Node$"}) * 100
相关指标:
- container_memory_working_set_bytes 容器使用内存 更能体现出mem usage,也是oom killer指标
- machine_memory_bytes 当前主机内存大小
说明:监控K8S集群总内存使用率,可以使用大屏展示
K8S集群CPU使用率
表达式 PromQL语句:
sum (rate (container_cpu_usage_seconds_total{}[5m])) / sum (machine_cpu_cores{}) * 100
相关指标:
- container_cpu_usage_seconds_total 该容器服务针对每个CPU累计消耗的CPU时间。如果有多个CPU,则总的CPU时间需要把各个CPU耗费的时间相加,可以求出平均1s容器使用的时间
- machine_cpu_cores cadvisor的当前节点CPU数目
说明:监控K8S集群总CPU使用率,可以使用大屏展示
K8S体系监控-cadvisor监控相关推荐
- Prometheus 基于k8s服务发现通过Cadvisor监控Kubernetes
Prometheus服务发现 Prometheus添加被监控端支持两种方式: • 静态配置:手动配置 • 服务发现:动态发现需要监控的Target实例 支持服务发现的来源 • azure_sd_con ...
- k8s1.11.0安装、一个master、一个node、查看node名称是ip、node是扩容进来的、带cadvisor监控服务...
一个master.一个node.查看node节点是ip# 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集群, ...
- 数据展示_使用Cadvisor监控容器并展示数据
Cadvisor使用Go语言开发,利用Linux的cgroups获取容器的资源使用信息,cadvisor不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和http接口,方便其他组件如Pro ...
- 【Flink on k8s】JConsole 远程监控 TaskManager
1.概述 转载:[Flink on k8s]JConsole 远程监控 TaskManager 问题:如何定位 Flink 作业卡在哪里? 首先,配置文件 flink-conf.yaml 添加 Jav ...
- K8S Pod该如何监控
背景 由于业务容器化的推进,对K8S上运行的业务,也必须做到向之前物理机/虚拟机上一样,要有完备的监控保障.但是,毕竟K8S不是物理机/虚拟机,由于技术实现方式不同,监控方面也是有一定差别的. Pod ...
- 直播的用户体验体系与质量监控方案
6月24日,又拍云OpenTalk |2018音视频技术沙龙·上海站顺利落幕,这是又拍云OpenTalk | 2018音视频技术沙龙系列活动的第二站.作为又拍云技术分享的看家活动,本次OpenTalk ...
- Prometheus使用cAdvisor监控Docker容器指标
完整译文请访问:使用cAdvisor监控Docker容器指标. 点击这里获取云原生干货https://www.coderdocument.com/resource_credential.html?co ...
- 云计算监控—Prometheus监控系统(文末赠书)
陈金窗 刘政委 张其栋 郑少斌 读完需要 20 分钟 速读仅需 7 分钟 本文摘自于<Prometheus 监控技术与实战>一书,从云计算时代的业务特点出发,探讨了云计算监控的目标和挑战, ...
- 【第7期】云计算监控——Prometheus监控系统
本文摘自于<Prometheus监控技术与实战>一书,从云计算时代的业务特点出发,探讨了云计算监控的目标和挑战,梳理了云资源监控的范围及监控系统实现的一般方式.接着从开源监控软件的演进出发 ...
最新文章
- 前端开发之JavaScript基础篇一
- 面试官问:线程池除了常见的4种拒绝策略,你还知道哪些?
- 联结你与万物的8种元素
- GC DevKit 快速入门 -- 游戏概览(三)
- backbone.js全栈开发
- Java中的异常 Exception
- 第九课:循环链表与双向链表
- 虚拟机配置网络eth1
- 5年 Python 功力,总结了 10 个开发技巧
- 在业务层实现校验请求参数
- 程序员过关斩将--重复的请求并不好过滤
- AOP和Spring AOP介绍
- Maven入门详解与安装配置
- php form表单属性,HTML5 表单属性
- 【BZOJ4016】最短路径树问题,最短路+点分治
- 从天地图下载瓦片构建本地瓦片地图
- main run方法没用_多线程:解决Runnable接口无start()方法的问题
- paip.jdbc 连接自动释放的测试
- 2019西北工业大学程序设计创新实践基地春季选拔赛(重现赛) CEGHI 题解
- 本地词库翻译php,有道词典词库(您也可以轻松翻译离线的有道词典词库)