当前位置: 首页 > news >正文

监控Kubernetes Node组件的关键指标

所有的 Kubernetes 组件,都提供了 /metrics 接口用来暴露监控数据,Kube-Proxy 也不例外。通过  ss  或者  netstat  命令可以看到 Kube-Proxy 监听的端口,一个是 10249,用来暴露监控指标,一个是 10256 ,作为健康检查的端口,一般我们只关注前一个端口。

1、Kube-Proxy 关键指标

1、通用的 Go 程序相关的指标

 

以上指标,只要是通过 Prometheus Go SDK 埋点的程序都会有,包括Kube-Proxy, Kubelet、APIServer、Scheduler 等。

2、请求 APIServer 的指标

Kubernetes 中多个组件都要调用 APIServer 的接口,每秒调用多少次、有多少成功多少失败、耗时情况如何,这些指标也比较关键。比如:

  • rest_client_request_duration_seconds:请求 APIServer 的耗时统计
  • rest_client_requests_total:请求 APIServer 的调用量统计

3、规则同步类指标

Kube-Proxy 的核心职能,就是去 APIServer 获取转发规则,修改本地的 iptables 或者 ipvs 的规则,所以这些规则同步相关的指标,就至关重要了。

 2、Kubelet 关键指标

Kubelet 也会吐出 Go 进程相关的通用指标以及和 APIServer 通信相关的度量指标,和 Kube-Proxy 类似。Kubelet 核心职能是管理 Pod,操作各种 CNI、CSI 相关的接口,和容器引擎打交道,度量这类操作的指标就显得尤为关键。

 

3、容器负载指标

CPU 指标

sum(
irate(container_cpu_usage_seconds_total[3m])
) by (pod,id,namespace,container,ident,image)
/
sum(
container_spec_cpu_quota/container_spec_cpu_period
) by (pod,id,namespace,container,ident,image)

这是计算 CPU 使用率,整体是一个除法运算,分子部分是容器每秒耗费的 CPU 时间,分母部分是每秒分配给容器的 CPU 时间。

increase(container_cpu_cfs_throttled_periods_total[1m])
/
increase(container_cpu_cfs_periods_total[1m]) * 100

这是在计算 CPU 被限制的时间比例,如果这个值很高,说明容器在使用 CPU 资源的时候经常被限制,需要提高这个容器的 CPU Quota。延迟敏感型的应用,需要特别关注这个指标。

内存指标

container_memory_working_set_bytes
/
container_spec_memory_limit_bytes
and
container_spec_memory_limit_bytes != 0

计算内存使用率的时候,核心也是一个除法运算,分子是容器的内存占用,分母是内存 Limit 大小。当然,有些容器没有指定内存 Limit,所以还需要有个 and 语句来做限制,只有 limit_bytes 不等于 0,这个除法运算才有意义。

Pod 网络流量

irate(container_network_transmit_bytes_total[1m]) * 8
irate(container_network_receive_bytes_total[1m]) * 8

这个指标名字非常清晰,transmit 是出向,receive 是入向,这两个指标都是 Counter 类型的值,单调递增,所以使用 irate 计算每秒速率。因为网络流量一般都是用 bit 作为单位,所以最后乘以 8,把 byte 换算成 bit。

Pod 硬盘 IO 读写流量

irate(container_fs_reads_bytes_total[1m])
irate(container_fs_writes_bytes_total[1m])

这个指标名字一看就知道是 Counter 类型,我们不关心当前值是多少,而是关心最近一段时间每秒的速率是多少,所以使用 irate 做了二次计算。

此文章为8月Day10学习笔记,内容来源于极客时间《运维监控系统实战笔记》,推荐该课程。

http://www.lryc.cn/news/123667.html

相关文章:

  • Mysql之优化-主从复制
  • 编程之道:构建优雅可维护代码的基石
  • 十大经典排序算法
  • Linux6.37 Kubernetes 集群调度
  • 记录一次前端input中的值为什么在后端取不到值
  • Apipost接口自动化控制器使用详解
  • Leaflet入门,Leaflet如何自定义版权信息,以vue2-leaflet修改自定义版权为例
  • 【AI】p54-p58导航网络、蓝图和AI树实现AI随机移动和跟随移动、靠近玩家挥拳、AI跟随样条线移动思路
  • mysql事务隔离级别详细讲解
  • 如何利用 EMC 模型解决能源服务提供商的瓶颈
  • C#--StringComparison枚举值解析
  • adb对安卓app进行抓包(ip连接设备)
  • 【EI复现】考虑区域多能源系统集群协同优化的联合需求侧响应模型(Matlab代码实现)
  • 日常BUG —— Java判空注解
  • 【基础类】—前端算法类
  • 中国信通院腾讯安全发布《2023数据安全治理与实践白皮书》
  • linux下用脚本将目录内的文件分类到各自的创建年份(如2023)或年月份(如2023/202308)目录内
  • 新手如何快速学习单片机?
  • 【容器化】Oceanbase镜像构建及使用
  • 软考第二章 信息技术发展
  • 【Unity每日一记】向量操作摄像机的移动(向量加减)
  • C++初阶之一篇文章教会你queue和priority_queue(理解使用和模拟实现)
  • 性能场景和性能需求指标
  • Python学习 -- 常用函数与实例详解
  • MySQL 账号权限
  • [Mongodb 5.0]单机启动
  • [HDLBits] Exams/m2014 q4b
  • 数据结构入门:队列
  • 面试热题(合并K个升序链表)
  • 优化过多if else判断代码