18.1 k8s服务组件之4大黄金指标讲解

本节重点介绍 :

  • 监控4大黄金指标
    • Latency:延时
    • Utilization:使用率
    • Saturation:饱和度
    • Errors:错误数或错误率
  • apiserver指标
    • 400、500错误qps
    • 访问延迟
    • 队列深度
  • etcd指标
  • kube-scheduler和kube-controller-manager

监控4大黄金指标

Google的Google SRE Books一书中提出了系统监控的四个黄金指标

  • Latency:延时
  • Utilization:使用率
  • Saturation:饱和度
  • Errors:错误数或错误率

为什么是这4个

  • 这个四个黄金指标在在任何系统中都是很好的性能状态指标
  • 他们之所以被称为”黄金“指标,很大一个因素是因为他们反映了终端用户的感知
  • 因此任何监控系统都会提供被监控对象的这些指标或其变形,并在此基础上辅助

两种系统分类

  • 资源提供系统 : 对外提供简单的资源,比如CPU(计算资源),存储,网络带宽
  • 服务提供系统 : 对外提供更高层次与业务相关的任务处理能力,比如订票,购物等等

站在资源角度分析

  • Utilization :往往体现为资源使用的百分比
  • Saturation : 资源使用的饱和度或过载程度,过载的系统往往意味着系统需要辅助的排队系统完成相关任务
    • 以CPU为例,Utilization往往是CPU的使用百分比
    • Saturation则是当前等待调度CPU的线程或进程队列长度
  • Errors : 这个可能是使用资源的出错率或出错数量,比如网络的丢包率或误码率等等

站在服务角度分析

  • Rate : 单位时间内完成服务请求的能力
  • Errors : 错误率或错误数量:单位时间内服务出错的比列或数量
  • Duration : 平均单次服务的持续时长(或用户得到服务响应的时延)

k8s服务组件服务组件指标

站在k8s集群管理员的角度,服务组件的健康状况需要额外的关注。

apiserver指标

apiserver作为k8s中消息总线

成功率和qps

  • 请求成功率 :apiserver_request_total代表apiserver的请求计数器,所以我们可以使用下面promql来计算apiserver请求成功的qps。
sum(rate(apiserver_request_total{job="kubernetes-apiservers",code=~"2.."}[5m]))
  • 成功率低于95%的告警 : 响应=2xx的qps除以总的qps就是apiserver的请求成功率
  • image.png
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]))
  • 错误的qps过高,可能是服务组件有问题,需要尽快排查。

延迟

image.png

  • 对于延迟,可以使用下面的表达式计算。
histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{job="kubernetes-apiservers"}[5m])) by (verb, le))
  • 可以得到各个http的请求方法的99分位延迟值。
{verb="WATCH"}	60
{verb="DELETE"}	NaN
{verb="PATCH"}	0.0495
{verb="PUT"}	0.08797499999999975
{verb="GET"}	0.06524999999999985
{verb="LIST"}	0.09421428571428572
{verb="POST"}	0.0495
  • 如果99分位延迟值很高,可能是apiserver处理能力达到上限,可以考虑扩容一下。

饱和度

  • 对于饱和度可以查看apiserver请求队列的情况,如apiserver_current_inqueue_requests很大的话,说明排队严重。
  • image.png

etcd指标

etcd作为k8s中元信息存储的数据库也需要额外关注下

  • etcd存储文件大小相关指标,比如etcd_db_total_size_in_bytes表征db物理文件大小。
  • 使用下面表达式可以得到etcd存储空间使用率: 当前使用量/配额。如果使用率大于80%需要扩容
(etcd_mvcc_db_total_size_in_bytes / etcd_server_quota_backend_bytes)*100
  • 关于etcd的网络流量可以使用下面两个指标表示。
# 代表client调etcd的流量。
etcd_network_client_grpc_received_bytes_total
# 代表etcd发送的流量。
etcd_network_client_grpc_sent_bytes_total
  • etcd中存储key和相关key操作的qps指标,如etcd_debugging_mvcc_keys_total代表etcd中存储的key总数,数量太多也会影响性能。
  • 同时关于etcd key的操作的qps,rate(etcd_debugging_mvcc_put_total[1m])代表put的qps,同理rate(etcd_debugging_mvcc_delete_total[1m])代表删除的qps。
  • 存储的fsync刷盘99分位延迟可以使用下面的分位值计算得到
  • image.png
histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket[5m])) by (instance, le))

kube-scheduler和kube-controller-manager

kube-scheduler是调度器,所以有关调度成功统计的指标都应被关注。

  • scheduler_pod_scheduling_attempts_sum/scheduler_pod_scheduling_attempts_count代表成功调度一个pod 的平均尝试次数。如果尝试次数过高,可能当前node剩余量不多,或者集群出错,建议排查下。
  • histogram_quantile(0.99, sum(rate(scheduler_pod_scheduling_duration_seconds_bucket[5m])) by ( le)) 代码pod调度的99分位延迟,如果过高,考虑schduler压力大或者其他原因。

在kube-controller-manager负责集群内的 Node、Pod 等所有资源的管理。

  • rate(workqueue_adds_total[2m])表征工作队列新增的qps,其实就是请求的qps,太高考虑压力大。
  • histogram_quantile(0.99, sum(rate(rest_client_request_latency_seconds_bucket{job="kube-controller-manager"}[5m])) by (verb, url, le))",可以查看和apiserver通信的延迟99分位值,太高考虑扩容下apiserver。

本节重点总结 :

  • 监控4大黄金指标
    • Latency:延时
    • Utilization:使用率
    • Saturation:饱和度
    • Errors:错误数或错误率
  • apiserver指标
    • 400、500错误qps
    • 访问延迟
    • 队列深度
  • etcd指标
  • kube-scheduler和kube-controller-manager

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149215.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

PHPMailer在PHP5.3.3以下版本的使用详解

《PHPMailer在PHP5.3.3以下版本的使用详解》 PHPMailer是一款广泛使用的PHP邮件发送类库,它提供了一套完整的邮件发送解决方案,包括SMTP验证、HTML邮件支持等功能。在PHP5.3.3及以下版本的环境中,由于语言特性和库的限制,选择适合…

【学习笔记】TLS/SSL握手

前言:本篇将介绍TLS握手的实际握手过程,TLS握手创建了Client和Server之间“被保护的通道”,2个单向通道用来保护批量数据的传输(通过Confidentiality、Integrity和Authentication),一个通道是从Client到Ser…

辞职后你说你想去外面玩玩,我看你寸步未行,原来你是去了JDK以外的方面玩玩

按需阅读 兄弟们!我被面试官吊打了Java面试Question A:如果距离世界末日只剩一天你能干什么?面试官:世界末日前我想看视频面试官:给点创意好不好?面试官:如果有一天我想换个姿势看图片 Java面试…

C++基础:第一个C++程序

初学C #include<iostream> int main() {std::cout << "Enter two numbers:" << std::endl;int v1 0, v2 0;std::cin >> v1 >> v2;std::cout << "The sum of "<< v1 << " and " << v2&…

string和oj题以及vector的接口介绍

前言 上篇博客学习了一些string类的模拟实现erase、find、substr、比较大小、流输入、流输出&#xff0c;这篇博客将介绍剩下的一些string的知识以及vector的一些使用方式。 string 传统深拷贝的写法 //拷贝构造 string(const string& s) {_str new char[s._capacity …

1.4 边界值分析法

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 定义2 选取3 具体步骤4 案例分析 本篇文章参考黑马程序员 前言 边界值分析法是一种广泛应用于软件测试中的技术&#xff0c;旨在识别输入值范围内的潜在缺陷。本文将详细探讨…

【Linux】深度解析与实战应用:GCC/G++编译器入门指南

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…

Mysql—主从复制的slave添加及延迟回放

MySQL 主从复制是什么&#xff1f; ​ MySQL 主从复制是指数据可以从一个 MySQL 数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式&#xff0c;这样从节点不用一直访问主服务器来更新自己的数据&#xff0c;数据的更新可以在远程连接上进行&#xff0c;…

滑动窗口专题

通过以下几道题来熟悉滑动窗口 滑动窗口3大问题&#xff1a;如何移入窗口&#xff0c;如何移出窗口&#xff0c;如何更新答案 209. 长度最小的子数组 我们考虑通过窗口来计算和&#xff0c;快慢指针从左开始遍历。 移入窗口&#xff1a;直接把当前元素加进来。 移出窗口&am…

重大喜讯!科研界之大变革——“5分钟提交+24小时反馈”,投稿效率直线上升!

盘点允许“一稿多投”的SCI “一稿多投”一直被认为是学术不端的行为&#xff0c;但“禁止一稿多投”是纸质时代遗留下的产物&#xff0c;已不符合当今社会的发展。 一篇文章一审就是好几个月甚至是一两年&#xff0c;在科研圈子里都是平常事&#xff0c;每个科研人都曾深陷于…

乐道L60、MONA M03、理想L6,蔚小理围剿「特斯拉」

作者 |老缅 编辑 |德新 9月19日&#xff0c;蔚来全新品牌乐道首款车型——乐道L60正式上市&#xff0c;定位家庭智能电动SUV。 60kWh标准续航版&#xff0c;售价20.69万元85kWh长续航版&#xff0c;售价23.59万元&#xff1b;如果采用BaaS电池租用服务&#xff0c;则低至14.9…

如何在云端使用 Browserless 进行网页抓取?

云浏览器是什么&#xff1f; 云浏览器是一种基于云的组合&#xff0c;它将网页浏览器应用程序与一个虚拟化的容器相结合&#xff0c;实现了远程浏览器隔离的概念。开发人员可以使用流行的工具&#xff08;如 Playwright 和​ Puppeteer​&#xff09;来自动化网页浏览器&#…

cmake--list

教程 list--链接 list关键字的作用 list的操作 list追加字符串--APPEND set(str1 "aaaaaaaa") message(STATUS "str1${str1}") list(APPEND str1 "bbbb") message(STATUS "str1${str1}") list字符串拼接并不是直接拼接&#xff0c…

C# 用Timer控件简单写一个倒计时60s功能

先放界面上一个Label和一个Timer控件&#xff0c;Label用来展示倒计时秒数 添加事件 设置属性&#xff0c;设置每隔一秒执行一次 放代码&#xff1a; //设置时间控件开始运行&#xff0c;具体放在哪里看具体需求 this.timer1.Start();//定义一个全局变量表示秒数 int time…

在线版宣传册是如何制作的

​亲爱的创作者们&#xff0c;你是否想过将传统的纸质宣传册升级为更具吸引力的在线版&#xff1f;在这个数字化时代&#xff0c;在线版宣传册不仅能够节省印刷成本&#xff0c;还能让信息传递更加迅速、精准。今天&#xff0c;就让我们一起探索在线版宣传册的制作奥秘吧&#…

利用Mongoose库实现MQTT通信

Mongoose官方Github地址 官方对于Mongoose的简介&#xff1a; Mongoose - Embedded Web Server / Embedded Network Library Mongoose is a network library for C/C. It provides event-driven non-blocking APIs for TCP, UDP, HTTP, WebSocket, MQTT, and other protocol…

【吉林一号卫星简介】

吉林一号卫星 吉林一号卫星是中国长光卫星技术有限公司研制的遥感卫星&#xff0c;也是该公司在建的核心工程&#xff0c;是中国重要的光学遥感卫星星座。以下是对吉林一号卫星的详细介绍&#xff1a; 一、卫星概况 中文名&#xff1a;吉林一号外文名&#xff1a;Jilin 1 Bus…

视频汇聚EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?

视频汇聚EasyCVR视频监控平台&#xff0c;作为一款智能视频监控综合管理平台&#xff0c;凭借其强大的视频融合汇聚能力和灵活的视频能力&#xff0c;在各行各业的应用中发挥着越来越重要的作用。EasyCVR平台具备强大的拓展性和灵活性&#xff0c;支持多种视频流的外部分发&…

丝杆支撑座许用条件的解析

丝杆支撑座连接滚珠丝杆使用能够支撑滚珠丝杆&#xff0c;使之更加平稳的运动&#xff0c;显著提高传动效率、降低噪音、提高精度、延长使用寿命等优势&#xff0c;是自动化设备中重要的传动元件。影响丝杆支撑座的因素主要包括轴承类型、润滑脂的使用、密封圈的保护、使用环境…

实现边框渐变效果

实现思路&#xff1a;定义一个具有相对定位、白色背景和透明边框的元素。边框宽度为3像素&#xff0c;并且有20像素的圆角。通过background-clip: padding-box;确保背景不会延伸到边框之外。 使用一个伪元素&::before来创建一个渐变边框。这个伪元素被放置在主元素的外部&…