【Prometheus】Metric类型的理解及运用
Metric类型
1.Counter
作用: 累加的计数器
样本样例:
#HELP node_cpu Seconds the cpus spent in each mode.
#TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625
eg1: 计算5分钟内http请求量增长率
rate(http_requests_total[5m])
eg2: 查询请求量前10的http地址
topk(10, http_requests_total)
2.Gauge
作用: 实时反应当前状态的仪表盘
eg1: 计算php容器内存消耗在2小时内差异
delta(container_memory_usage_bytes{container='php'}[2h])
eg2: 计算上述样本的线性回归模型
deriv(container_memory_usage_bytes{container='php'}[2h])
经典样本计算:
样本样例:
container_memory_working_set_bytes{container="POD",container_name="POD",image="k8s.gcr.io/pause:3.1",instance="k8s-node2",job="kubernetes-cadvisor",kubernetes_io_hostname="k8s-node2",name="k8s_POD_kube-proxy-6ppd2_kube-system_9f12d89b-2ae6-11ea-b5dc-fa163eb7be75_14",namespace="kube-system",pod="kube-proxy-6ppd2",pod_name="kube-proxy-6ppd2"}
eg1:查询实时Pod内存使用量
sum(container_memory_working_set_bytes{image!=''}) by (pod_name)
sum的意思把某一时刻下所符合的列表值累加,by的意思是通过pod_name分组
整体的意思是:实时绘制各个pod的内存使用状况
那为什么要用sum呢?
其实k8s中部署Pod后,不管你的pod内有多少容器,都会给你额外匹配pause容器,这个容器的作用相当于Pod内的基础环境,构建Pod内容器的公共设施(命名空间,网络,IPC等),可类比虚拟机。
所以统计Pod内存使用量就需要把所有pod下所有容器值相加
反之,不用sum的话就会查询到所有容器的内存使用量了
举一反三:
eg1.那么如何计算各节点下的容器使用量总值?
首先是通过节点分组:by (instance)
然后就是组下的各容器内存值累加
sum(container_memory_working_set_bytes{image!=''}) by (instance)
eg2.根据1小时前的情况,预测接下来2小时的各节点内存使用量状况
sum(predict_linear(container_memory_working_set_bytes{image!=''}[1h],2*3600)) by (instance)
3.Histogram & Summary
作用: 统计、分析数据分布情况
例如了解请求耗时分布情况
3.1 Histogram样例
# HELP coredns_forward_request_duration_seconds Histogram of the time each request took.
# TYPE coredns_forward_request_duration_seconds histogram
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.00025"} 0.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.0005"} 0.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.001"} 0.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.002"} 0.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.004"} 0.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.008"} 0.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.016"} 0.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.032"} 259.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.064"} 327.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.128"} 344.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.256"} 351.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="0.512"} 355.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="1.024"} 356.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="2.048"} 357.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="4.096"} 357.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="8.192"} 357.0
coredns_forward_request_duration_seconds_bucket{to="114.114.114.114:53",le="+Inf"} 357.0
coredns_forward_request_duration_seconds_sum{to="114.114.114.114:53"} 15.852329659999997
coredns_forward_request_duration_seconds_count{to="114.114.114.114:53"} 357.0
该指标表示K8s内dns转发请求消耗时间
总操作数为357次
总持续时间为15s
其中耗时在0.128内(le=0.128)的操作次数为344次
在耗时(128,256] 区间的操作次数为351-344=11次
3.2 Summary样例
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0.0"} 3.2722e-05
go_gc_duration_seconds{quantile="0.25"} 8.0476e-05
go_gc_duration_seconds{quantile="0.5"} 9.6085e-05
go_gc_duration_seconds{quantile="0.75"} 0.00012454
go_gc_duration_seconds{quantile="1.0"} 0.003750961
go_gc_duration_seconds_sum 1.228575062
go_gc_duration_seconds_count 6437.0
该指标表示go的gc垃圾回收持续时间
总操作数为6437次
总持续时间为1.228575062s
其中中位数(quantile=0.5)的持续时间为9.6085e-05s
3.3 差异
3.3.1 Histogram直接反应了在不同区间内样本的个数,区间通过标签len进行定义;
3.3.2 Histogram可以通过histogram_quantile()函数计算出其值的分位数。但是在服务器端进行计算,而summary则是在客户端计算完成。
【Prometheus】Metric类型的理解及运用相关推荐
- 【IPC】关于码流类型的理解
[IPC]关于码流类型的理解 1.背景 2.疑虑 3.总结 3.资源 1.背景 对于IPC网络摄像机,可以设置的码流类型有主码流.子码流,可能还会有第三码流. 这些码流类型又有多种分辨率. 那么设置这 ...
- Python中timedelta类型的理解
Python中timedelta类型的理解 逻辑: timedelta = datetime1-datetime2 理解:一个时间等于两个时刻做差 代码 import datetimeif __nam ...
- Linux 终端概念和类型的理解
目录 Linux 终端概念和类型的理解 查询正在使用的终端命令 可以使用 `tty` 查看当前所在的终端 查看当前连接计算机的终端设备 查看当前正在连接的终端设备和正在使用的程序 终端的概念 Linu ...
- Prometheus guage类型rate(变化率)计算
目录 引言 问题场景 尝试解决 deriv函数解析 最终解决 总结与思考 引言 Promethues是k8s以及云原生下的标准监控告警系统,提供了很多内置的函数,功能已经十分强大,但是,依然有一些需求 ...
- 【Solidity】3.类型 - 深入理解Solidity
索引 [Solidity]1.一个Solidity源文件的布局 [Solidity]2.合约的结构体 [Solidity]3.类型 [Solidity]4.单位和全局可变量 [Solidity]5.表 ...
- Python 鸭子类型的理解
鸭子类型最简洁的解释与理解 用一句概括 进一步解释 用一句概括 是"鸭子"自己就会鸭子那样的"叫声". 进一步解释 python不关注类型本身,而是关注行为:你 ...
- 枚举类型的理解和应用
相信学习java的人,在平时开发时是很少用到枚举.说实在的,本人对枚举类型一向都是云里雾里,直到最近在看android源码时,才微探到其中的妙处. 接下来就以一个例子结合枚举和手势知识点的应用开发来讲 ...
- IEEE-754单精度浮点类型有效数字理解(画图不易,望点赞支持)
32位浮点类型有效数字 单精度浮点类型有效数字为7位,是指数字存储过大导致尾数位存储溢出而失去精度,成功保留下来的真实数字.例如:存储16777217(2^24+1)时,程序中实际存储的是其实是167 ...
- mysql 索引类型 bitmap_理解数据库中的常见索引类型
在数据库中,索引能加快数据库的查询速度.下面就来理解一些常见的索引类型: B-Tree Bitmap Clustered Non-unique unique 索引有很多种类型,可以为不同的场景提供更好 ...
最新文章
- PIL 学习笔记(3)
- iptables 转发oracle端口
- Android Studio 3.4增可视化资源管理工具 可管理和预览项目资源
- 爱情二十九课,驾驭爱情
- csp真题 202109-2非零段划分C++代码(100分)
- linux中按行读取文件,Linux按行读取文件内容
- gcc预处理、编译、汇编、链接详解
- vector 详解(C++)
- c语言程序流程图怎么写,C语言课程设计————写下流程图! 谢谢
- Java毕设项目航空订票系统火车票订购系统(2021最新)
- 图片随意命名可能被广告拦截插件拦截
- 黑苹果0004——制作u盘并开始安装
- 新广告法违规词、敏感词在线检测工具
- median函数的使用方法_如何使用逆分布函数模拟MEDIAN()聚合函数
- Spring Boot项目出现 Invalid bound statement (not found):错误
- leetcode 812. Largest Triangle Area(python)
- gateway跨域问题解决方法
- Android选择颜色,尺码联动
- 2021-2027全球与中国厨房工作台安装服务市场深度研究分析报告
- 安装算量软件免费吗?鹏业安装算量(在线版):更简单、更高效
热门文章
- AAA云主机免费推荐码
- OpenCV VideoWriter打开失败
- LINUX系统修复 ---- mbr主引导记录的恢复
- 【网络】路由器和无线路由器就这么配置
- keepass自动输入密码_如何使用Keepass密码管理器更好地组织机密
- 密码管理工具KeePass 2.52 正式发布!
- 影响AFE采样精度的因素有哪些?
- 明星热图|迪丽热巴、倪妮、佟丽娅、米卡与品牌达成新合作;张雨绮、胡杏儿、杨丞琳、郑希怡参加品牌活动...
- difference()、differenceBy()、differenceWith()
- tp飞蛾打印机PHP,易连云打印机PHP接口