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

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

相关文章:

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

常规k8s的监控指标 单独 1、集群维度 集群状态集群节点数节点状态(正常、不可达、未知)节点的资源使用率(CPU、内存、IO等) 2、应用维度 应用响应时间 应用的错误率 应用的请求量 3、系统和集群组件维度 API服务器状态控…...

Spring Boot中的应用配置文件管理

Spring Boot中的应用配置文件管理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Spring Boot中的应用配置文件管理。在现代的软件开发中&am…...

SCCB协议介绍,以及与IIC协议对比

在之前的文章里已经介绍了IIC协议:iic通信协议 这篇内容主要介绍一下SCCB协议。 文章目录 SCCB协议:SCCB时序图iic时序图SCCB时序 VS IIC时序 总:SCCB协议常用在摄像头配置上面,例如OV5640摄像头,和IIC协议很相似&…...

K8S基础简介

用于自动部署,扩展和管理容器化应用程序的开源系统。 功能: 服务发现和负载均衡; 存储编排; 自动部署和回滚; 自动二进制打包; 自我修复; 密钥与配置管理; 1. K8S组件 主从方式架…...

Studying-代码随想录训练营day24| 93.复原IP地址、78.子集、90.子集II

第24天,回溯算法part03,牢记回溯三部曲,掌握树形结构结题方法💪 目录 93.复原IP地址 78.子集 90.子集II 总结 93.复原IP地址 文档讲解:代码随想录复原IP地址 视频讲解:手撕复原IP地址 题目&#xff1…...

2024《汽车出海全产业数据安全合规发展白皮书》下载

随着中国制造向中国智造目标的迈进,中国汽车正以前所未有的速度和质量,在全球市场上开疆拓土。不过,在中国汽车加快出海步伐的过程中,数据安全合规风险管理成为车企不容忽视的课题。 6月25日,在中国(上海&…...

nvm安装以及idea下vue启动项目过程和注意事项

注意1:nvm版本不要太低,1.1.7会出现下面这个问题,建议1.1.10及其以上版本 然后安装这个教程安装nvm和node.js 链接: nvm安装教程(一篇文章所有问题全搞定,非常详细) 注意2:上面的教程有一步骤…...

Java SPI服务发现与扩展的利器

Java中,为了实现模块之间的解耦和可扩展性,我们常常需要一种机制来动态加载和替换实现。Java SPI就是这样一种机制,它允许我们在不修改原有代码的情况下,为接口添加新的实现,并在运行时动态加载它们。 SPI&#xff0c…...

Ansible的Playbook

Playbook 特点 playbook 剧本是由一个或多个"play"组成的列表play的主要功能在于将预定义的一组主机,装扮成事先通过ansible中的task定义好的任务角色。Task实际是调用ansible的一个module,将多个play组织在一个playbook中,即可以让…...

多平台自动养号【开心版】偷偷使用就行了!

大家好,今天我无意间发现了一款【多平台自动养号工具】,看了一下里面的功能还是挺全面的,包含了【抖音,快手,小红薯】还有一些截流功能 虽然这款工具功能强大,但美中不足的是需要付费的。但别担心&#xf…...

Android与JavaScript的交互,以实现从WebView中打开原生页面并传递参数

在Android应用中,实现Android与JavaScript的交互,以实现从WebView中打开原生页面并传递参数,可以通过以下详细步骤完成: 1. 准备工作 添加WebView至布局:在你的Activity或Fragment的XML布局文件中加入WebView控件。 …...

信息(文字、图像、音频、视频等)在计算机中是如何存储及显示的

信息(文字、图像、音频、视频等)在计算机中是如何存储及显示的 图片的存储图片的文件格式像素数据的二进制表示存储和处理显示总结 图片的显示4. 像素点控制具体的像素控制过程示例总结 如题,这里以图片为例。 图片的存储 计算机桌面上的一…...

【考研408计算机组成原理】微程序设计重要考点指令流水线考研真题+考点分析

苏泽 “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家 目录 微指令的形成方式 微指令的地址形成方式 对应考题 题目:微指令的地址形成方式 - 断定方式 解题思路: 答题: 分析考点&…...

查看哪个docker环境在占用gpu

前言 有时候发现某些docker占用gpu资源却没有训练,需要查清楚是哪个并且把它stop掉。 方法 在docker里面用nvidia-smi命令,没有pid显示,需要在外面使用。得到pid信息后,使用命令 docker top 15766f6eeaf7(容器ID) | grep 551…...

JVM相关总结

JVM的些许问题 1.JVM内存区域划分 2.JVM类加载过程 3.JVM的垃圾回收机制 1.JVM的内存区域划分 一个运行起来的Java进程就是一个JVM虚拟机,需要从操作系统申请一大片内存,就会把内存划分成几个区域,每个区域都有不同的作用 常见的面试题 2.JVM类加载过程 熟练背诵 ! ! !…...

Python 面试【初级】

欢迎莅临我的博客 💝💝💝,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…...

机器学习SVR 随机森林 RBF神经网络做回归预测的MATLAB代码

SVR 参考这篇文章 Libsvm使用笔记【matlab】 close all; clc clear %% 下载数据 load(p_train.mat); load(p_test.mat); load(t_train.mat); load(t_test.mat); %% 数据归一化 %输入样本归一化 [pn_train,ps1] mapminmax(p_train); pn_train pn_train; pn_test mapminma…...

Spring Boot中配置Swagger用于API文档

Spring Boot中配置Swagger用于API文档 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot应用中配置Swagger,以便于快…...

学习java第一百一十六天

Spring Framework有哪些不同的功能? 答: 轻量级-Spring 在代码量和透明度方面都很轻便。 IOC-控制反转AOP-面向切面编程可以将应用业务逻辑和系统服务分离,以实现高内聚。容器-Spring 负责创建和管理对象(Bean)的生命周…...

SQL Server的隐私盾牌:动态数据屏蔽(DMS)全面解析

🛡️ SQL Server的隐私盾牌:动态数据屏蔽(DMS)全面解析 在数据驱动的商业世界中,保护敏感信息至关重要。SQL Server提供了一种强大的安全特性——动态数据屏蔽(Dynamic Data Masking,简称DMS),…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...