Java web应用性能分析之【prometheus监控K8s指标说明】

常规k8s的监控指标

单独

1、集群维度

  • 集群状态
  • 集群节点数
  • 节点状态(正常、不可达、未知)
  • 节点的资源使用率(CPU、内存、IO等)

2、应用维度

  • 应用响应时间

  • 应用的错误率

  • 应用的请求量

3、系统和集群组件维度

  • API服务器状态
  • 控制器状态
  • etcd状态

常用的 Prometheus Operator 指标

        常用监控 Kubernetes 性能的 Prometheus Operator 指标 如下:

  1. Kubernetes 资源相关
  2. Kubernetes 存储相关
  3. kubernetes system 相关
  4. APIServer 相关
  5. kubelet 相关
  6. 集群组件
  7. 应用相关
  8. 节点相关
  9. Etcd 相关
  10. CoreDNS 相关

1、集群维度

        K8s集群指标可以按维度分为节点指标和容器pod指标。

  • 节点维度指标包括节点CPU使用率,节点内存使用率等

  • pod维度指标包括pod CPU 使用率等

1.1 Node监控


1、内存指标
 

node_memory_MemTotal_bytes: Node总内存大小node_memory_MemAvailable_bytes:Node剩余可用内存node_memory_MemAvailable_bytes :从应用程序的角度看到的可用内存;linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据。就是buffer和cache,对于内核来说 buffer和cache 都属于已经被使用的内存,只是应用程序需要内存时,如果没有足够的free内存可用,内核就会从buffer和cache中回收内存满足应用程序的请求。所以从应用程序角度来说avaliable = free + buffer +cache, 不过这只是一个理想的公式,实际中的数据会有较大偏差node已用的内存大小计算公式:node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes理想情况下节点内存使用率可以 这样计算:(1-(node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes)/node_memory_MemTotal_bytes)*100
或者使用以下计算方式:(1-node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes)*100



2、CPU

node_load1:CPU1分钟负载node_load5:CPU5分钟负载node_load15:CPU15分钟负载node_cpu_seconds_total (counter类型指标,用来统计CPU每种模式下所花费的时间,是CPU时间片的一个累积值)CPU使用率计算公式:1-avg(irate(node_cpu_seconds_total{mode="idle"}[30m])) by (instance)
如果需要计算node节点CPU使用率:CPU使用率是cpu除空闲(idle)状态之外的其他所有CPU状态的时间总和除以总的CPU时间得到的结果。即:(1-sum(rate(node_cpu_seconds_total{mode="idle"}[1m]))by(instance)/sum(rate(node_cpu_seconds_total[1m]))by(instance))*100

如果需要采集节点vcpu指标信息:例如4u的一个节点,监控每个u的使用率,可参考公式:(1-sum(rate(node_cpu_seconds_total{mode="idle"}[1m]))by(instance,cpu)/sum(rate(node_cpu_seconds_total[1m]))by(instance,cpu))*100



3、分区使用

nodenode_filesystem_size_bytes:各个分区总空间node_filesystem_avail_bytes:各分区剩余空间


4、磁盘I/O

node_disk_io_time_seconds_total:磁盘I/O操作耗费时间每秒磁盘读取速度:
irate(node_disk_writes_completed_total[30m])每秒磁盘写入速度:
irate(node_disk_written_bytes_total[30m])每秒磁盘I/O操作耗费时间计算公式:
irate(node_disk_io_time_seconds_total[30m])每次I/O读取耗时计算公式:
irate(node_disk_read_time_seconds_total[30m]) / irate(node_disk_reads_completed_total[30m])每次I/O写入耗时计算公式:
irate(node_disk_write_time_seconds_total[30m]) / irate(node_disk_writes_completed_total[30m])磁盘IO表示磁盘的输入和输出(向磁盘写入数据,从磁盘读取数据)node_disk_reads_completed_total:读IOnode_disk_writes_completed_total :写IOsumby(instance)(rate(node_disk_reads_completed_total[5m]))sumby(instance)(rate(node_disk_writes_completed_total[5m]))

节点磁盘监控,主要说明下磁盘空间使用率相关指标,磁盘使用率通常是指挂载在某个目录的磁盘分区的使用率。一个磁盘分区会由对应的文件系统进行管理,通过该文件系统就能获取到该分区的使用情况。node_filesystem_avail_bytes 磁盘可用空间

node_filesystem_size_bytes 磁盘总空间

K8s集群中磁盘使用率可以这样计算:1-(node_filesystem_avail_bytes{fstype="ext4"})/(node_filesystem_size_bytes{fstype="ext4"})
不同的磁盘文件分区,磁盘使用情况不一样,一般关注容器引擎空间和pod容器空间的使用率:


5、网络流量

网络流量下载统计计算公式:
irate(node_network_receive_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[30m])*8网络流量上传统计计算公式:
irate(node_network_transmit_bytes_total{device!~'tap.*|veth.*|br.*|docker.*|virbr*|lo*'}[30m])*8


1.2 pod监控


1、POD内存使用率

container_memory_rss : 是Pod实际使用内存数container_spec_memory_limit_bytes: 是分配给Pod的内存配额sum(container_memory_rss{container!="POD",container!="alermanager",image!="",pod!=""})by(pod) / sum(container_spec



2、POD的CPU使用率

        container_cpu_usage_seconds_total 是容器累计使用的CPU时间,用它除以CPU总时间,就可以得到容器的cpu使用率,首先计算容器的CPU占用时间,由于节点上的cpu有多个,所以需要将容器在每个CPU上占用的时间累加起来。pod在3m 内累积使用的CPU时间为(根据pod和namespace 进行分组查):

(sum(rate(container_cpu_usage_seconds_total{namespace="default",pod!=""}[3m]))by(pod))

        然后计算CPU的总时间,这里的CPU数量是容器分配到的CPU数量,container_spec_cpu_quota 这个指标就是容器的cpu配额。它的值是容器指定的 cpu核数100000 ,所以pod在1s内cpu总时间为: Pod 的 CPU 核数1s。

(sum(container_spec_cpu_quota{namespace="default",pod!=""})by(pod)/100000

        container_spec_cpu_quota是容器的CPU配额。所以只有配置了resource.cpu.limits CPU 的pod 才有该指标。将上面 这两个语句的结果 相除。就得到了容器的CPU利用率:

container_cpu_usage_seconds_total:container累计使用的CPU时间,除以CPU的总时间,就得到了容器的CPU使用率container_spec_cpu_quota:container的配额,为容器指定的CPU个数*100000sum(rate(container_cpu_usage_seconds_total{image!="",container!="POD",container!=""}[1m])) by (pod,namespace) / (sum(container_spec_cpu_quota{image!="",container!="POD",container!=""}/100000) by (pod,namespace)) * 100



3、POD的文件系统使用量
 

sum(container_fs_usage_bytes{image!="",container!="POD",container!=""}) by(pod, namespace) / 1024 / 1024 / 1024

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot try...catch 影响事务回滚

示例 事务不会回滚 OverrideTransactional(rollbackFor Exception.class)public CommonResponse modifyTeaFormula(GemiTeaFormulaReq gemiTeaFormulaReq) {try {省略部分代码teaFormulaDao.deleteById(id);teaFormulaDetailDao.deleteById(id);} catch (Exception e) {logger…

Calendar类在Java中的高级应用与使用技巧

Calendar类在Java中的高级应用与使用技巧 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! **1. **引言 在Java中,处理日期和时间是开发中经常遇到…

2024 vue3入门教程:01vscode终端命令创建第一个vue项目

参考vue官网手册:https://cn.vuejs.org/guide/quick-start.html 一、找个盘符,新建文件夹存储以后得vue项目 我的是e盘下创建了vueproject 二、使用vscode打开存储vue项目的文件夹 因为我生成过项目,所以有文件,你们初次是没有…

IT专业入门,高考假期预习指南

文章目录 一、了解IT专业的基本概念二、选择适合的编程语言入门三、掌握基本的编程工具和环境四、学习基础的数据结构和算法五、实践项目和动手实验六、利用在线资源进行学习七、参加编程竞赛和社区活动总结 高考结束后,许多同学将迎来大学生活,而对于选…

C++将模板类用作参数

#include <iostream> // 包含头文件。 using namespace std; // 指定缺省的命名空间。template <class T, int len> class LinkList // 链表类模板。 { public:T* m_head; // 链表头结点。int m_len len; // 表长。void…

mysql的前缀索引

什么是前缀索引 所谓的前缀索引&#xff0c;说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定)&#xff0c;比如以产品名称的前10位来建索引&#xff0c;这样建立起来的索引更小&#xff0c;查询效率更快有点类似oracle中对字段使用left函数来建立函数索…

Java与机器学习模型的集成与部署

Java与机器学习模型的集成与部署 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨如何使用Java集成和部署机器学习模型。 随着人工智能和机器学习…

【SQL】使用索引的好处

使用索引可以显著加快查询速度&#xff0c;主要原因有以下几个方面&#xff1a; 1. 减少数据扫描量 索引类似于一本书的目录&#xff0c;可以让数据库快速找到特定的数据行&#xff0c;而不是从头到尾扫描整个表。例如&#xff0c;没有索引的情况下&#xff0c;查询 SELECT *…

简洁版人工智能训练流程

人工智能&#xff08;AI&#xff09;训练流程是指使用数据来训练机器学习模型&#xff0c;使其能够执行特定任务的过程。以下是人工智能训练的一般流程&#xff1a; #mermaid-svg-qZ5c5PU9yms7cVOB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:…

Java中如何优雅地处理NamingException异常?

Java中如何优雅地处理NamingException异常&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java开发中&#xff0c;NamingException异常是JNDI&…

鸿蒙arkts api9 图片验证码 canvas

/*** 图片验证码***/ Component export default struct RandomTxtCanvas {Link imgRandomTxt:string//图片验证private settings: RenderingContextSettings new RenderingContextSettings(true)private context: CanvasRenderingContext2D new CanvasRenderingContext2D(th…

DataWhaleAI Tsak1 运行Baseline

题目背景 在当今数字化时代&#xff0c;企业积累了丰富的对话数据&#xff0c;这些数据不仅是客户与企业之间交流的记录&#xff0c;更是隐藏着宝贵信息的宝库。在这个背景下&#xff0c;群聊对话分角色要素提取成为了企业营销和服务的一项重要策略。 群聊对话分角色要素提取…

nlp--最大匹配分词(计算召回率)

最大匹配算法是一种常见的中文分词算法&#xff0c;其核心思想是从左向右取词&#xff0c;以词典中最长的词为优先匹配。这里我将为你展示一个简单的最大匹配分词算法的实现&#xff0c;并结合输入任意句子、显示分词结果以及计算分词召回率。 代码 : # happy coding…

Tektronix泰克 AWG70001A 任意波形发生器

Tektronix泰克 AWG70001A 任意波形发生器 AWG70000A 系列任意波形发生器 (AWG) 在采样率、信号保真度和波形内存方面代表着尖端水平&#xff0c;特别适合复杂器件、系统和实验的设计、测试和操作。由于高达 50 GS/s 采样率和 10 位垂直分辨率&#xff0c;它提供了优秀的信号激…

【Python】入门Python,你必须了解这些事

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言一、认识Python什么是Python&#xff1f;!Python的起源Python的特点简洁易读跨平台&#xff0c;可移植拥有强大的库和框架面向对象 Python的优缺点优点缺点 Python的应用环境扩…

linux ls文件排序

linux可以使用ls命令结合一些选项来按照文件大小对文件和目录进行排序。以下是一些常用的方法&#xff1a; 1、这里&#xff0c;-l 选项表示长格式输出&#xff08;包括文件权限、所有者、大小等&#xff09;&#xff0c;-S 选项表示按照文件大小排序&#xff0c;-h 选项表示以…

PHP留守儿童关爱之家网站-计算机毕业设计源码11079

目录 1 绪论 1.1 研究背景 1.2研究意义 1.3 论文结构与章节安排 2 留守儿童关爱之家网站系统分析 2.1 可行性分析 2.2 系统功能分析 2.3 系统用例分析 2.4 系统流程和逻辑 2.5本章小结 3 留守儿童关爱之家网站总体设计 3.1系统结构设计 3.2系统功能模块设计 3.2 数…

【算法训练记录——Day38】

Day38——动态规划Ⅰ 1.理论#2.leetcode_509斐波那契数3.leetcode_70爬楼梯4.kamacoder_57爬楼梯5.leetcode_746使用最小花费爬楼梯 1.理论 一般解题步骤&#xff1a; 确定dp数组及下标含义确定递推公式数组如何初始化确定递归顺序举例推导dp数组 #2.leetcode_509斐波那契数…

阿里云物联网应用层开发:第一部分,项目简介

文章目录 1、物联网应用层简介2、阿里云物联网应用层开发例程主要内容3、需要掌握基础知识 1、物联网应用层简介 应用层是物联网系统的用户界面&#xff0c;它提供了用户与系统交互的接口&#xff0c;这一层是将网络传输层的数据结果以易于理解和使用的方式呈现给用户&#xf…

vue3 Hooks 函数封装思想 useTable

1.什么是Hooks 1.一系列已use作为开头的方法&#xff0c;它们提供了可以完全避开class写法&#xff0c;在函数组件中完成生命周期 状态管理 逻辑复用等几乎全部的组件开发工作能力 2.Hooks最核心的价值来着内部的状态管理 3. 在vue3中&#xff0c;hooks的概念结合了vue的响应系…