Prometheus的四种指标类型

news2024/11/29 9:56:12

目录

一、Counter 计数器

1.1Counter 是计数器类型

1.2Counter 类型示例

二、Gauge 仪表盘

2.1Gauge是测量器类型

2.2Gauge 类型示例

三、Histogram 累积直方图

3.1Histogram 作用及特点

3.2使用 histogram 柱状图

四、Summary 摘要


一、Counter 计数器

1.1Counter 是计数器类型

  • Counter 用于保存单调递增型的数据;例如站点访问次数等。
  • 一直增加,不支持减少,不能为负值。
  • 重启进程后,会被重置回0。

1.2Counter 类型示例

http_response_total{method="GET",endpoint="/api/tracks"}  100
http_response_total{method="GET",endpoint="/api/tracks"}  160


#Counter 类型数据可以让用户方便的了解事件产生的速率的变化,在PromQL内置的相关操作函数可以提供相应的分析。

示例,以 HTTP 应用请求量来进行说明:
1)通过 rate() 函数获取 HTTP 请求量的增长率:rate(http_requests_total[5m])
2)查询当前系统中,访问量前 10 的 HTTP 地址:topk(10, http_requests_total)


二、Gauge 仪表盘

2.1Gauge是测量器类型

  • Gauge 用于存储有着起伏特征的指标数据,例如内存空闲大小等。
  • 可变大,可变小。
  • 重启进程后,会被重置

2.2Gauge 类型示例

memory_usage_bytes{host="master-01"}   100
memory_usage_bytes{host="master-01"}   30
memory_usage_bytes{host="master-01"}   50
memory_usage_bytes{host="master-01"}   80

#对于 Gauge 类型的监控指标,通过 PromQL 内置函数 delta() 可以获取样本在一段时间内的变化情况。
示例,计算 CPU 温度在两小时内的差异:
dalta(cpu_temp_celsius{host="zeus"}[2h])

#还可以通过 PromQL 内置函数 predict_linear() 基于简单线性回归的方式,对样本数据的变化趋势做出预测。
示例,基于 2 小时的样本数据,来预测主机可用磁盘空间在 4 个小时之后的剩余情况:

predict_linear(node_filesystem_free{job="node"}[2h], 4 * 3600) < 0

三、Histogram 累积直方图

3.1Histogram 作用及特点

histogram是柱状图,在Prometheus系统的查询语言中,有三种作用:

  • 在一段时间范围内对数据进行采样(通常是请求持续时间或响应大小等),并将其计入可配置的存储桶(bucket)中,后续可通过指定区间筛选样本,也可以统计样本总数,最后一般将数据展示为直方图。
  • 对每个采样点值累计和(sum)
  • 对采样点的次数累计和(count)

度量指标名称: 以 [basename] 作为上面三类的作用度量指标名称为例:

1)<basename>_bucket{le="上边界"}            #这个值为小于等于上边界的所有采样点数量
2)<basename>_sum_
3)<basename>_count

#注:如果定义一个度量类型为 Histogram,则 Prometheus 会自动生成三个对应的指标。

3.2使用 histogram 柱状图

​在大多数情况下人们一般倾向于使用某些量化指标的平均值,例如CPU的平均使用率、页面的平均响应时间。这种方式的问题很明显,以系统API调用的平均响应时间为例:如果大多数API请求都维持在100ms的响应时间范围内,而个别请求的响应时间需要5s,那么就会导致某些WEB页面的响应时间落到中位数的情况,而这种现象被称为长尾问题。

为了区分是平均的慢还是长尾的慢,最简单的方式就是按照请求延迟的范围进行分组。例如,统计延迟在0~10ms之间的请求数有多少,而 10~20ms之间的请求数又有多少。通过这种方式可以快速分析系统慢的原因。Histogram和Summary都是为了能够解决这样问题的存在,通过Histogram 和 Summary 类型的监控指标,我们可以快速了解监控样本的分布情况。

Histogram 类型的样本会提供三种指标(假设指标名称为 <basename>):

1)样本的值分布在 bucket 中的数量,命名为<basename>_bucket{le="<上边界>"}。这个值表示指标值小于等于上边界的所有样本数量。
#在总共2次请求当中。http 请求响应时间 <=0.005 秒 的请求次数为 0

io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.005",} 0.0

#在总共2次请求当中。http 请求响应时间 <=0.01 秒 的请求次数为 0

io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.01",} 0.0

#在总共2次请求当中。http 请求响应时间 <=0.025 秒 的请求次数为 0,...

io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.025",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.05",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.075",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.1",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.25",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.5",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="0.75",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="1.0",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="2.5",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="5.0",} 0.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="7.5",} 2.0

#在总共2次请求当中。http 请求响应时间 <=10 秒 的请求次数为 2

io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="10.0",} 2.0

2)所有样本值的大小总和,命名为 <basename>_sum
#发生的2次 http 请求总的响应时间为 13.107670803000001 秒

io_namespace_http_requests_latency_seconds_histogram_sum{path="/",method="GET",code="200",} 13.107670803000001

3)样本总数,命名为 <basename>_count,值和 <basename>_bucket{le="+Inf"} 相同
#当前一共发生了 2 次 http 请求

io_namespace_http_requests_latency_seconds_histogram_count{path="/",method="GET",code="200",} 2.0
io_namespace_http_requests_latency_seconds_histogram_bucket{path="/",method="GET",code="200",le="+Inf",} 2.0

注意:

1)bucket可以理解为是对数据指标值域的一个划分,划分的依据应该基于数据值的分布。注意后面的采样点是包含前面的采样点的,假设xxx_bucket{...,le="0.01"}的值为10,而xxx_bucket{...,le="0.05"}的值为30,那么意味着这30个采样点中,有10个是小于0.01s的,其余20个采样点的响应时间是介于0.01s和0.05s之间的。

2)可以通过 histogram_quantile() 函数来计算 Histogram 类型样本的分位数。
例如,假设样本的 9 分位数(quantile=0.9)的值为 x,即表示小于等于 x 的采样值的数量占总体采样值的 90%。

histogram_quantile(<basename>_bucket{path="/",method="GET",code="200",le="x",}) 0.9

四、Summary 摘要

​与Histogram类型类似,用于表示一段时间内的数据采样结果(通常是请求持续时间或响应大小等),但它是直接由被监测端自行聚合计算出分位数,并将计算结果响应给Prometheus Server的样本采集请求。它也有三种作用:

1)对于每个采样点进行统计,并形成分位图。(如:统计低于60分的同学比例,统计低于80分的同学比例,统计低于95分的同学比例)
2)统计班上所有同学的总成绩(sum)
3)统计班上同学的考试总人数(count)

度量指标名称: 以 [basename] 作为上面三类的作用度量指标名称为例:

1)<basename>{quantile="x"}            #统计样本值的分位数分布情况,分位数范围:0 ≤ x ≤ 1
2)<basename>_sum                    #统计所有观察值的总和_
3)<basename>_count                    #统计已观察到的事件计数值

示例 1:

prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.5"} 0.012352463
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.9"} 0.014458005
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.99"} 0.017316173
prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002
prometheus_tsdb_wal_fsync_duration_seconds_count 216

#从上面的样本中可以得知当前Promtheus Server进行 wal_fsync 操作的总次数为 216 次,耗时 2.888716127000002s。 其中中位数(quantile=0.5)的耗时为 0.012352463s,9分位数(quantile=0.9)的耗时为0.014458005s。

示例 2:

#这 12 次 http 请求中有 50% 的请求响应时间是 3.052404983s

io_namespace_http_requests_latency_seconds_summary{path="/",method="GET",code="200",quantile="0.5",} 3.052404983

#这 12 次 http 请求中有 90% 的请求响应时间是 8.003261666s

io_namespace_http_requests_latency_seconds_summary{path="/",method="GET",code="200",quantile="0.9",} 8.003261666

所有样本值的大小总和,命名为 <basename>_sum。

#这 12 次 http 请求的总响应时间为 51.029495508s

io_namespace_http_requests_latency_seconds_summary_sum{path="/",method="GET",code="200",} 51.029495508

样本总数,命名为 <basename>_count。

#当前一共发生了 12 次 http 请求

io_namespace_http_requests_latency_seconds_summary_count{path="/",method="GET",code="200",} 12.0

Histogram 与 Summary 的异同:

它们都包含了 <basename>_sum 和 <basename>_count 指标,Histogram 需要通过 <basename>_bucket 来计算分位数,而 Summary 则直接存储了分位数的值。
 

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

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

相关文章

Java高级特性

引言 Java不仅提供了基础的编程功能&#xff0c;还包括了一系列强大的高级特性&#xff0c;这些特性能够显著提高代码的灵活性、可扩展性和性能。本文将详细介绍Java的几个高级特性&#xff0c;包括反射机制、注解与注释、泛型编程、以及Lambda表达式与Stream API&#xff0c;并…

AntDB数据库中级认证(ACP)题库

单项选择题 共35题&#xff0c;大题得分&#xff1a;62.0&#xff0c;大题满分&#xff1a;70.0 1.函数计算外移的作用&#xff1f; A. 增加计算量 B. 减少计算量 C. 减少冗余查询 D. 改变关联顺序 2.0&#xff08;本题分数&#xff1a;2.0&#xff09; 学员答案&#…

Stable Diffusion 【AI绘画提示词】摄影效果提示词,超美摄影效果摄影特效!让平凡的照片焕发出独特的魅力!

高端的摄影作品需要的专业设备价格昂贵&#xff0c;并不是一般人能够承受的起的&#xff0c;优质摄影作品对光线等一系列要求也非常的高&#xff0c;而AI摄影就完美的解决了这些问题&#xff0c;只需要配合适当的提示词&#xff0c;这些问题都可以迎刃而解。 AI绘画没灵感&…

几款让你怦然心动的神奇工具——搜嗖工具箱

alteredqualia AlteredQualia 脑洞爆炸器网站&#xff0c;不得不说这是一个神奇的网站&#xff0c;在这个网站上你可以实现不可思议的各种操作&#xff0c;让我们对网站有了新的认知&#xff0c;因为它告诉你不是所有有趣的网站都那么花哨&#xff0c;有些网站看着外形平淡无奇…

实时交通 | 城市交通态势采集及可视化操作(定时运行)

一、前言 交通态势数据是关于交通状况的一种量化描述&#xff0c;它提供了关于道路网络运行状态的详细信息。交通态势数据指的是根据车流入量和车流出量的定义&#xff0c;衡量整个全局交通区域交通态势的数据。这些数据通常从车辆GPS轨迹数据中提取&#xff0c;包括车辆行驶速…

虚拟淘宝-Virtual-Taobao论文解读(AAAI2019)

目录 1 论文简介 2 文章的主要贡献 3 文章技术的简要说明 4 技术的详细说明 4.1 GAN-SD&#xff1a;生成客户特征 4.2 MAIL&#xff1a;生成交互过程 4.3 ANC&#xff1a;动规范约束 5 实验设定及结果 6 结论 7 参考 1 论文简介 南京大学LAMDA团队的侍竞成、俞扬等…

PDF标准详解(三)—— PDF坐标系统和坐标变换

之前我们了解了PDF文档的基本结构&#xff0c;并且展示了一个简单的hello world。这个hello world 虽然只在页面中显示一个hello world 文字&#xff0c;但是包含的内容却是不少。这次我们仍然以它为切入点&#xff0c;来了解PDF的坐标系统以及坐标变换的相关知识 图形学中二维…

网络安全从入门到精通(特别篇I):应急响应案例

蓝队应急响应实战 1. 应急响应1. 应急响应 获取当前WEB环境的组成架构(语言,数据库,中间件,系统等) 分析思路: 1、利用时间节点筛选日志行为 2、利用已知对漏洞进行特征筛选 3、利用后门查杀进行筛选日志行为 #内容点: 应急响应: 1、抗拒绝服务攻击防范应对指南 2、勒…

小分子水半幅宽检测 低氘水同位素氘检测 富氢水检测

小分子水半幅宽检测 低氘水同位素氘检测 富氢水检测 检测范围: 矿泉水等饮用水 检测概述 小分子团水活化性很强&#xff0c;具有强渗透力&#xff0c;强溶解力&#xff0c;强扩散力。水的含氧量高&#xff0c;能给人体内的组织细胞带来更多的氧。长自来水大分子团核磁共振测得…

论文阅读笔记:DepGraph: Towards Any Structural Pruning

论文阅读笔记&#xff1a;DepGraph: Towards Any Structural Pruning 1 背景2 创新点3 方法4 模块4.1 分组4.2 依赖图4.3 网络分解4.4 依赖建模4.4 组级剪枝 5 效果 论文&#xff1a;https://arxiv.org/pdf/2301.12900 代码&#xff1a;https://github.com/VainF/Torch-Prunin…

Java面试题--JVM大厂篇之掌握JVM性能优化:选择合适的垃圾回收器

掌握JVM性能优化&#xff1a;选择合适的垃圾回收器 引言: ​  在Java开发中&#xff0c;性能优化往往是提高应用稳定性和用户体验的关键所在。而垃圾回收器的选择和优化&#xff0c;是JVM性能调优的核心环节。如何在众多垃圾回收器中选出适合自己应用需求的那一个&#xff1…

6581 太阳能电池板伏安特性测试仪

6581 太阳能电池板伏安特性测试仪 产品综述 6581太阳能电池板伏安特性测试仪主要用于太阳能电池板生产的最终测试&#xff0c;也可以作为层压前测试使用&#xff0c;能大大提高一次封装成品率。该测试仪适合于单晶、多晶、薄膜等多种电池组件&#xff0c;可进行I-V曲线、P-…

进口二手RS FSH4规格3.6G罗德与施瓦茨 FSH6参数

Rohde & Schwarz FSH4 的规格包括&#xff1a; 频率范围从 9 kHz 到 3.6 GHz 高灵敏度&#xff08;<-141dBm&#xff08;1Hz&#xff09;&#xff0c;或使用可选前置放大器<-161dBm&#xff08;1Hz&#xff09;&#xff09; 低测量不确定度&#xff08; 内部跟踪发生…

算法day31

第一题 542. 01 矩阵 本题本来求解的是每一个1到0的最短距离并返回到矩阵之中&#xff1b; 我们采用正难则反的思路&#xff0c;将其化解为每一个0到每一个1的最短距离&#xff0c;并通过矩阵来返回&#xff1b; 解法&#xff1a;多源bfs正难则反 步骤一&#xff1a; 定义一个…

僵尸网络相关

个人电脑被植入木马之后&#xff0c;就会主动的连接被黑客控制的这个C&C服务器&#xff0c;然后这个服务器就会给被植入木马的这个电脑发指令&#xff0c;让他探测在他的局域网内还有没有其他的电脑了&#xff0c;如果有那么就继续感染同局域网的其他病毒&#xff0c;黑客就…

基于单片机的无人监守点滴控制系统设计

摘要 &#xff1a; 在当代社会 &#xff0c; 点滴是一种常用的诊疗方法 。 为了减轻医护人员的压力 &#xff0c; 设计了一种基于单片机的无人监守点滴控制系统&#xff0c; 该系统共由 2 个板子组成 &#xff0c; 其中一个主控板子 &#xff0c; 一个检测板子 。 检测板与…

maven编译【-Dmaven.test.skip=true和-DskipTests=true的区别】

1、背景 我在执行maven编译时&#xff0c;遇到下面情况&#xff1a; 1、当执行命令为下面&#xff1a; mvn clean compile package install -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue -Dmaven.wagon.http.ssl.ignore.validity.datestrue -Dra…

救命!挖到宝了,这本计算机书真的巨巨好看

一本适合大学生使用的计算机科学和编程学习指南&#xff0c;它通过丰富的内容和多样的学习形式&#xff0c;帮助学生建立坚实的计算机科学基础&#xff0c;并激发他们对计算机科学的兴趣。 这本书涵盖了多种类型的练习题&#xff0c;旨在帮助读者巩固理论知识并提高实际编程技能…

PostgreSQL下载地址

下载地址&#xff1a;PostgreSQL: File Browser

深入理解ReentrantLock

深入理解ReentrantLock 在Java并发编程中&#xff0c;锁&#xff08;Lock&#xff09;是控制多个线程对共享资源访问的重要工具。虽然Synchronized关键字是实现锁的常用方式&#xff0c;但它在功能上比较有限。ReentrantLock是java.util.concurrent.locks包中提供的一个更加灵…