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

14.2 k8s中我们都需要监控哪些组件

本节重点介绍 :

  • k8s中关注四大块指标总结
    • 容器基础资源指标
    • k8s资源指标
    • k8s服务组件指标
    • 部署在pod中业务埋点指标

k8s关注指标分析

k8s中组件复杂,我们主要专注的无外乎四大块指标:

容器基础资源指标

为何关注这些指标

  • 我们的应用从独享一台机器上迁移到k8s中
  • 我们首要关心的肯定还是这个应用占用的基础资源指标
  • 比如我这个应用使用了多少cpu、多少内存、使用多少存储等。

容器采集细节

  • 在机器上这些指标原来是由node_exporter采集到的
  • 我们知道node_exporter是通过查看/proc/stats等一些列伪文件系统计算相关指标来完成单机级别的采集的。
  • 一个pod对应多个容器运行在宿主机上,其实对应就是一个个单独的进程。那么采集到每个进程的cpu内存等信息就是对应容器的指标。
  • 具体就是拿到进程的pid,通过查看pid下面的伪文件系统/proc/<pid>/stats完成采集。

指标举例

  • 容器cpu闲置率,举例图片
  • 容器内存利用率,举例图片

k8s资源指标

为何关注这些指标

  • 同时我们的应用很少会直接以pod形式跑着k8s中
  • 更多的是以deployment、daemonset、statefulset 部署
  • 那么我们也需要关注下这些k8s资源的相关指标,比如使用了多少个deployment,运行的副本数,健康状况等。

采集细节

  • 这些指标都来自于kube-stats-metrics项目

指标举例

  • 比如查看下因为拉取镜像失败导致waiting的容器 kube_pod_container_status_waiting_reason{reason="ErrImagePull"}==1
  • 查看下发生oom的容器 kube_pod_container_status_last_terminated_reason{reason="OOMKilled"}==1
  • 最近十分钟内有重启 (kube_pod_container_status_restarts_total - kube_pod_container_status_restarts_total offset 10m >= 1)
  • 比如查看节点因为内存有压力不可用 kube_node_status_condition{condition="MemoryPressure",status="true"}==1

k8s服务组件指标

为何关注这些指标

  • 在搭建k8s集群过程中我们知道,master节点上运行着 apiserver、etcd、kube-scheduler、kube-controller-manager,由它们组成服务组件
  • 那么k8s的运维管理人员肯定要关注下它们的运行状况。
  • 站在k8s集群管理员的角度,服务组件的健康状况需要额外的关注。

采集细节

  • 这些指标都来自于kube-stats-metrics项目

指标举例

  • 在监控apiserver时,我们可以重点关注四大黄金指标:延迟、请求qps、错误数、饱和度。
    apiserver_request_total代表apiserver的请求计数器,所以我们可以使用sum(rate(apiserver_request_total{job="kubernetes-apiservers",code=~"2.."}[5m]))来计算apiserver请求成功的qps。
  • 所以响应=2xx的qps除以总的qps就是apiserver的请求成功率,表达式如下。可以设置成功率低于95%的告警。
    100 * sum(rate(apiserver_request_total{job="kubernetes-apiservers",code=~"2.."}[5m])) /sum(rate(apiserver_request_total{job="kubernetes-apiservers"}[5m]))
  • 同理也可以关注4xx和5xx的错误qps,表达式如下
    sum(rate(apiserver_request_total{job="kubernetes-apiservers",code=~"[45].."}[5m]))

部署在pod中业务埋点指标

为何关注这些指标

  • 因为各个业务先的研发会引用prometheus的sdk,将相关指标暴露在pod中,比如支付接口的请求延迟。
  • 那么各个业务线的运维人员在使用k8s时需要关注他们的指标

k8s中关注四大块指标总结

指标类型采集源应用举例发现类型grafana截图
容器基础资源指标kubelet 内置cadvisor metrics接口查看容器cpu、mem利用率等k8s_sd node级别直接访问node_ip容器基础资源
k8s对象资源指标kube-stats-metrics (简称ksm)具体可以看
看pod状态如pod waiting状态的原因
数个数如:查看node pod按namespace分布情况
通过coredns访问域名k8s对象资源指标
k8s服务组件指标服务组件 metrics接口查看apiserver 、scheduler、etc、coredns请求延迟等k8s_sd endpoint级别k8s服务组件指标
部署在pod中业务埋点指标pod 的metrics接口依据业务指标场景k8s_sd pod级别,访问pod ip的metricspath

本节重点总结 :

-k8s中关注四大块指标总结
- 容器基础资源指标
- k8s资源指标
- k8s服务组件指标
- 部署在pod中业务埋点指标

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C#/.NET/.NET Core推荐学习路线文档文章
  • Linux新建虚拟机Ubuntu详解
  • Linux:软硬连接和动静态库
  • PhotoZoom9怎么样?图片模糊怎么办?
  • navigator.mediaDevices.getUserMedia检查用户的摄像头是否可用,虚拟摄像头问题
  • 基于MinerU的PDF解析API
  • AUC真的什么情形下都适合吗
  • COD论文笔记 BiRefNet
  • Spark MLlib模型训练—聚类算法 PIC(Power Iteration Clustering)
  • Python | Leetcode Python题解之第386题字典序排数
  • 图文解析保姆级教程:Postman专业接口测试工具的安装和基本使用
  • ChatGPT 3.5/4.0使用手册:解锁人工智能的无限潜能
  • nginx配置负载均衡的几种方式
  • 快手的视频素材去哪找?快手视频素材在哪里找啊
  • 【排序算法】六、快速排序补充:三指针+随机数法
  • JavaScript设计模式系列一:工厂模式
  • Nacos系列:Nacos的Java SDK使用
  • node-glob通配符
  • unity如何实现一个固定宽度的orthagraphic相机
  • Yii源码解读-服务定位器(Service Locator)
  • 初探 Vue 生命周期和钩子函数
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 复习Javascript专题(四):js中的深浅拷贝
  • 那些被忽略的 JavaScript 数组方法细节
  • 如何设计一个比特币钱包服务
  • 实现简单的正则表达式引擎
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一、python与pycharm的安装
  • 原生js练习题---第五课
  • 最近的计划
  • kubernetes资源对象--ingress
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • Spring第一个helloWorld
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​如何防止网络攻击?
  • # C++之functional库用法整理
  • #FPGA(基础知识)
  • (C)一些题4
  • (C++20) consteval立即函数
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)原生js案例之数码时钟计时
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (十一)c52学习之旅-动态数码管
  • (转载)Linux网络编程入门
  • .NET Core WebAPI中封装Swagger配置
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .NET8使用VS2022打包Docker镜像
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .php文件都打不开,打不开php文件怎么办
  • :O)修改linux硬件时间
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400