Prometheus Metrics指标类型 Gauge(仪表盘)

news2025/1/16 13:47:59

指标是用来衡量性能、消耗、效率和许多其他软件属性随时间的变化趋势。它们允许工程师通过警报和仪表盘来监控一系列测量值的演变(如CPU或内存或磁盘使用量请求持续时间、延迟等)。指标在IT监控领域有着悠久的历史,并被工程师广泛使用,与日志和链路追踪一起被用来检测系统是否有不符合预期的表现。

在其最基本的形式中,一个指标数据点是由以下三个部分构成:

  • 一个指标名称
  • 收集该数据点的时间戳
  • 一个由数字表示的测量值

Prometheus收集的指标有四种,作为其暴露格式的一部分

  • Counters

  • Gauges

  • Histograms

  • Summaries

指标类型


从存储上来讲所有的监控指标都是相同的,但是在不同的场景下这些指标又有一些细微的差异。

例如,在 Node Exporter 返回的样本中指标 node_load 反应的是当前系统的负载状态,随着时间的变化这个指标返回的样本数据是在不断变化的(gauge类型,反应的是当前的状态)。]

而指标 node_cpu_seconds_total 所获取到的样本数据却不同,它是一个持续增大的值(counter类型),因为其反应的是 CPU 的累计使用时间,从理论上讲只要系统不关机,这个值是会一直变大。

为了能够帮助用户理解和区分这些不同监控指标之间的差异,Prometheus 定义了 4 种不同的指标类型:Counter(计数器)Gauge(仪表盘)Histogram(直方图)Summary(摘要)

在 node-exporter(后面会详细讲解)返回的样本数据中,其注释中也包含了该样本的类型。例如:

# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="cpu0",mode="idle"} 362812.7890625

 

 Gauge  可增可减的仪表盘


与使用 Counter指标时不同,rate和delta函数对Gauge没有意义。然而计算特定时间序列的平均数、最大值、最小值或百分比的函数经常与 Gauge一起使用。 

与 Counter 不同,Gauge(可增可减的仪表盘)类型的指标侧重于反应系统的当前状态,因此这类指标的样本数据可增可减,不像counter是一直增长的。

常见指标如 node_memory_MemFree_bytes(当前主机空闲的内存大小)、node_memory_MemAvailable_bytes(可用内存大小)都是 Gauge 类型的监控指标。

由于 Gauge 指标仍然带有时间戳存储,所有我们可以看到随时间变化的值,通常可以直接把它们绘制出来,这样就可以看到值本身而不是变化率了,通过 Gauge 指标,用户可以直接查看系统的当前状态。

在绘制图行查看状态的时候,直接使用指标值就可以绘制出来,因为本身就表示当前的状态。 

这些简单的指标类型都只是为每个样本获取一个数字,但 Prometheus 的强大之处在于如何让你跟踪它们,比如我们绘制了两张图,一个是 HTTP 请求的变化率,另一个是分配的 gauge 类型的实际内存,直接从图上就可以看出这两个之间有一种关联性,当请求出现峰值的时候,内存的使用也会出现峰值,但是我们仔细观察也会发现在峰值过后,内存使用量并没有恢复到峰值前的水平,整体上它在逐渐增加,这表明很可能应用程序中存在内存泄露的问题,通过这些简单的指标就可以帮助我们找到这些可能存在的问题。

对于 Gauge 类型的监控指标,通过 PromQL 内置函数 delta() 可以获取样本在一段时间范围内的变化情况。例如,计算 CPU 温度在两个小时内的差异:

delta(cpu_temp_celsius{host="zeus"}[2h])

还可以直接使用 predict_linear() 对数据的变化趋势进行预测。例如,预测系统磁盘空间在 4 个小时之后的剩余情况:这个函数是用来做预测的,predict_linear() 这个函数对于磁盘空间来说的话是非常有用的,因为磁盘在实际使用的过程当中一下子就增长起来了,这是一个缓慢的过程,所以可以根据这个函数来判断4个小时之后磁盘剩余的情况,根据这个情况就可以提前去将磁盘空间清理或者扩容。

predict_linear(node_filesystem_free_bytes[1h], 4 * 3600)

 

 

仪表(Gauge)  补充


Gauge 指标用于可以任意增加或减少的测量。这是你可能更熟悉的指标类型,因为即使没有经过额外处理的实际值也是有意义的,它们经常被使用到。例如,测量温度、CPU和内存使用的指标,或者队列的大小都是Gauge。

例如,为了测量一台主机的内存使用情况,我们可以使用一个Gauge指标,比如:

# HELP node_memory_used_bytes Total memory used in the node in bytes # TYPE node_memory_used_bytes gauge 

node_memory_used_bytes{hostname="host1.domain.com"} 943348382

上面的指标表明,在测量时,节点 host1.domain.com 使用的内存约为 900 MB。该指标的值是有意义的,不需要任何额外的计算,因为它告诉我们该节点上消耗了多少内存。

与使用 Counter指标时不同,rate和delta函数对Gauge没有意义。然而,计算特定时间序列的平均数、最大值、最小值或百分比的函数经常与 Gauge一起使用。

avg_over_time(range-vector)     指定时间间隔内范围向量所有元素样本值的平均值 

在 Prometheus 中,这些函数的名称是avg_over_time、max_over_time、min_over_time和quantile_over_time。要计算过去10分钟内在host1.domain.com 上使用的平均内存,你可以这样做:

avg_over_time(node_memory_used_bytes{hostname="host1.domain.com"}[10m])

要使用 Prometheus 客户端库在 Python 中创建一个 Gauge 指标,你可以这样做:

from prometheus_client import Gauge memory_used = Gauge( 'node_memory_used_bytes', 'Total memory used in the node in bytes', ['hostname'] ) memory_used.labels(hostname='host1.domain.com').set(943348382) 

 avg_over_time(probe_duration_seconds{job=~"$job", instance=~"$instance"}[1m]) 

 avg_over_time(probe_dns_lookup_time_seconds{job=~"$job", instance=~"$instance"}[1m])

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

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

相关文章

Linux下的UDEV机制/守护进程

一. Udev机制 二. 守护进程 1. 概念: 2. 基本特点: a. 生存周期长,一般操作系统启动的时候就启动,关闭的时候关闭(这是由开发人员自行将守护进程添加到开机启动项的)。 b. 守护进程和终端无关联&#…

云备份项目->配置环境

升级gcc到7.3版本 sudo yum install centos-release-scl-rh centos-release-scl sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c source /opt/rh/devtoolset-7/enable echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc 安装Jsoncpp库 sud…

知识分享之cookie

http协议中的cookie,什么是cookie如何获取cookie 一、什么是Cookie Cookie(曲奇,小甜饼的译名)在互联网技术领域中,是指一种小型文本文件,它由网站服务器发送给用户的浏览器,并被浏览器存储在用…

【春 联---turtle海龟画图】

春联 又称"春贴"、"门对"、"对联",是过年时所贴的红色喜庆元素"年红"中一个种类。它以对仗工整、简洁箱巧的文字描绘美好形象,抒发美好愿 望,是中国特有的文学形式,是华人们过年 的重要习…

windows/linux 安装php的 sql server 扩展

Windowsphpstudyphp7.1 下载:ODBC、下载php 的sql server 扩展 路径:下载地址 版本:我的是7.1 对应的ODBC 是13,php 的sql server 扩展为4.3 安装:msodbcsql 直接安装、sqlsrv43 安装完把 扩展复制到php71 的扩展文…

c#学习入门2

十、运算符 1)算术运算符是用于数值类型变量计算的运算符,它返回的结果是数值 1.赋值符号 2.算数运算符 加 减- 乘* 除/ 取余% 3.算数运算符的优先级 4.算术运算符的复合运算 5.算术运算符的自增减 2)字符串拼接 1.字符串拼接方式1 注意&…

antd 日期控件RangePicker如何增加快捷键(日/周/月/年)

注意&#xff1a;快捷键是从当前日期往前推算的 效果 代码 <script><RangePickerranges{{日: [moment(new Date().setDate(new Date().getDate() - 1)), moment(new Date())],周: [moment(new Date().setDate(new Date().getDate() - 7)), moment(new Date())],月: […

淘宝API接口教程:淘宝商品详情API接口(标题|主图|SKU|价格|商品销量..)

淘宝商品详情数据接口是用于获取商品详细信息的API&#xff0c;它允许开发者检索商品的各类数据。 要使用淘宝商品详情数据接口&#xff0c;你需要遵循以下步骤&#xff1a; 注册账号和权限申请&#xff1a;在淘宝开放平台注册开发者账号&#xff0c;并申请所需API的权限。完…

【总结】CycleGAN+YOLOv8+DeepSORT

本文章仅对本人前期工作进行总结&#xff0c;文章内容供读者参考&#xff0c;代码不对外公开 文章目录 1、CycleGAN1.1 数据集配置1.2 环境配置1.3 参数配置1.4 可视化训练过程1.5 训练结果1.5 结果测试 2、YOLOv82.1 数据集配置2.2 网络结构配置2.3 训练细节2.4 测试 3、Deep…

IDEA生成JavaDoc注释

1、新建java文件时默认在主类头上生成描述、作者、时间 /*** 总体描述** author CountryStrong* date ${DATE} ${TIME}</p>*/2、对java方法进行doc注释&#xff0c;并动态生成作用描述、请求参数、返回类型、抛出异常 直接去插件商店下载JavaDoc即可&#xff0c;有时间…

Python 中方法调用的求值顺序

问题背景 在 Python 中&#xff0c;方法调用的求值顺序可能会令人困惑&#xff0c;尤其是当涉及到嵌套方法调用时。例如&#xff0c;在下面的代码中&#xff0c;我们有一个 Card 类&#xff0c;它表示一张扑克牌&#xff0c;一个 Hand 类&#xff0c;它表示一组扑克牌&#xff…

【科学研究】读博:一场精神赌博❓

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

Java | Leetcode Java题解之第52题N皇后II

题目&#xff1a; 题解&#xff1a; class Solution {public int totalNQueens(int n) {Set<Integer> columns new HashSet<Integer>();Set<Integer> diagonals1 new HashSet<Integer>();Set<Integer> diagonals2 new HashSet<Integer>…

炒股自动化:券商官方,散户可用,查询订单状态API如何用?

券商官方的接口&#xff0c;个人账户可申请&#xff0c;入金门槛低&#xff0c;接入文档完善&#xff0c;技术支持好的&#xff0c;经过我们筛选后&#xff0c;只有一家符合 会编程&#xff0c;有基础&#xff0c;只是需要API接口的朋友不用看这些&#xff0c;不会写程序的朋友…

数据结构五:线性表之带头结点的双向链表的设计

我们在单链表中&#xff0c;有了next指针,这就使得我们要查找下一结点的时间复杂度为O(1)。可是如果我们要查找的是上一结点的话&#xff0c;那最坏的时间复杂度就是0[n)了&#xff0c;因为我们每次都要从头开始遍历查找。为了克服单向性这一缺点&#xff0c; 我们的老科学家们…

springcloud按版本发布微服务达到不停机更新的效果

本文基于以下环境完成 spring-boot 2.3.2.RELEASEspring-cloud Hoxton.SR9spring-cloud-alibaba 2.2.6.RELEASEspring-cloud-starter-gateway 2.2.6.RELEASEspring-cloud-starter-loadbalancer 2.2.6.RELEASEnacos 2.0.3 一、思路 实现思路&#xff1a; 前端项目在请求后端接…

【优质书籍推荐】AIGC时代的PyTorch 深度学习与企业级项目实战

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

Facebook的未知力量:数字世界的新引擎

在数字化的时代&#xff0c;社交媒体已经成为了我们日常生活中不可或缺的一部分&#xff0c;而Facebook作为其中的巨头&#xff0c;其影响力远远超出了我们的想象。但是&#xff0c;Facebook背后隐藏的力量和影响远不止于此&#xff0c;它正逐渐成为数字世界的新引擎&#xff0…

设计模式:单例、原型和生成器

在这篇文章中&#xff0c;我们将重点介绍其余的创建模式&#xff1a;Singleton&#xff0c;Builder和Prototype。 在我看来&#xff0c;这些模式不如工厂重要。然而&#xff0c;了解它们仍然很有用。我将提供UML描述&#xff0c;简单的java示例&#xff08;这样即使你不了解jav…

stm32 hid自定义接收发送程序开发过程记录

cubleMX配置如下 修改端点描述符一次传输的数据大小 根据cubelMX标准在这里修改 编译错误 直接修改&#xff08;因为没有使用nodef &#xff09;编译通过 修改报告描述符&#xff08;默认的描述符无法传输数据&#xff09; 参考&#xff1a;USB协议详解第10讲&#xff08;USB描…