首页 > 其他分享 >Prometheus之数据类型和函数

Prometheus之数据类型和函数

时间:2024-07-25 22:54:24浏览次数:16  
标签:函数 示例 数据类型 Prometheus 时间 计算 序列 使用率

前言:

在了解Prometheus数据类型前,我们先了解下面几个统计学名词概念:

平均数(Mean):

平均数是所有数据加起来除以数据个数得到的结果。它表示数据的中心趋势。

最大值(Maximum):

最大值是数据集中最大的数值。它表示数据的上限。

最小值(Minimum):

最小值是数据集中最小的数值。它表示数据的最小极限。

中位数(Median):

中位数是将数据从小到大排序后,位于中间位置的数值。如果数据个数是奇数,则中位数是中间的数值;如果数据个数是偶数,则中位数是中间两个数值的平均值。

百分位数(Quantile)

概念

百分位数(Percentile)是一种统计学上的概念,用来描述一组数据中某个数值相对于整个数据集的位置。具体来说,一个百分位数表示的是有百分之几的数据值小于或等于这个数值,

计算方法:

  1. 排序:将数据集从小到大排序
  2. 定位:计算百分位数的位置,通常使用以下公式:
    在这里插入图片描述
  3. 插值:如果计算的位置是整数,则直接取该位置的数据值;如果位置是小数,则进行线性插值。
  4. 示例:
    在这里插入图片描述

Prometheus数据类型:

Prometheus 是一个强大的开源监控和警报工具,其核心是时间序列数据模型。在 Prometheus 中,数据类型主要分为以下四种基本类型,每种类型都适用于不同的监控场景:

Counter(计数器)

定义:

Counter 是一个单调递增的指标,通常用于追踪某个事件的总数,如请求次数、任务完成次数等。

特点:

Counter 的值只能增加或者重置为0,不能减少。当监控重启或者重置时,Counter 可以被重置。

使用场景:

适用于统计总量,如HTTP请求的总次数、数据库查询的总次数等。

Gauge(仪表盘)

定义:

Gauge 是一个可以任意变化的指标,它反映了某个时刻的实时值,如系统的负载、内存使用率、当前活跃用户数等。

特点:

Gauge 的值可以增加、减少或者重置,能够反映资源的实时状态。

使用场景:

适用于表示资源的实时状态或者变化,如CPU使用率、磁盘空间占用、队列长度等。

Histogram(直方图)

定义:

Histogram 用于追踪一段时间内的数据分布情况,它将数据分桶(bucket)存储,每个桶记录了特定范围内数据的数量。

特点:

Histogram 可以提供数据的分布情况,包括最小值、最大值、平均值、中位数等统计信息。

使用场景:

适用于分析数据的分布,如请求的响应时间、数据库查询延迟等。

Summary(摘要)

定义:

Summary 类似于 Histogram,但它提供了一个滑动时间窗口内的数据摘要,包括总数和样本的定量统计信息。

特点:

Summary 提供了样本的总数和分位数统计,如平均数、中位数、90百分位数等。

使用场景:

适用于需要实时计算分位数和统计信息的场景,如HTTP请求的响应时间分布。

Prometheus 函数

Prometheus 提供了丰富的函数库,可以用于对时间序列数据进行各种操作和计算。以下是一些常用的 Prometheus 函数和它们的简要说明:

聚合操作

  1. sum()
  • 作用:
    计算一组时间序列的和。
  • 示例:
sum(rate(http_requests_total[5m])) 

计算过去5分钟内 HTTP 请求数量的总和。

  1. avg()
  • 作用:
    计算一组时间序列的平均值。
  • 示例:
avg(cpu_usage{job="app"}) 

计算所有名为 “app” 的作业的 CPU 使用率的平均值。

  1. min()
  • 作用:
    计算一组时间序列的最小值。
  • 示例:
min(memory_usage) 

获取内存使用率的最小值。

  1. max()
  • 作用:
    计算一组时间序列的最大值。
  • 示例:
max(disk_io)

获取磁盘 I/O 的最大值。

  1. count()
  • 作用:
    计算一组时间序列的数量。
  • 示例:
count(up) 

计算当前处于 “up” 状态的实例数量。

数学运算

  1. rate()
  • 作用:
    计算 Counter 类型指标在指定时间范围内的增长率。
  • 示例:
rate(http_requests_total[5m]) 

计算过去5分钟内 HTTP 请求的增长率。

  1. increase()
  • 作用:
    计算 Counter 类型指标在指定时间范围内的增加量。
  • 示例:
increase(http_requests_total[5m])

计算过去5分钟内 HTTP 请求的增加量。

  1. irate()
  • 作用:
    计算 Counter 类型指标在指定时间范围内的瞬时增长率。
  • 示例:
irate(http_requests_total[5m]) 

计算过去5分钟内 HTTP 请求的瞬时增长率。

时间序列操作

  1. delta()
  • 作用:
    计算时间序列在指定时间范围内的变化量。
  • 示例:
delta(cpu_usage[1h]) 

计算过去1小时内 CPU 使用率的变化量。

  1. deriv()
  • 作用:
    计算时间序列的导数。
  • 示例:
deriv(memory_usage[1h]) 

计算过去1小时内内存使用率的导数。

  1. reset()
  • 作用:
    将 Counter 类型的时间序列重置为 0。
  • 示例:
reset(http_requests_total)

将 HTTP 请求计数器重置为 0。

时间相关函数

  1. time()
  • 作用:
    返回当前 UNIX 时间。
  • 示例:
time() 

获取当前 UNIX 时间。

  1. day_of_week()
  • 作用:
    返回特定时间点的星期几。
  • 示例:
day_of_week(time()) 

获取当前时间的星期几。

  1. days_in_month()
  • 作用:
    返回特定时间点所在月份的天数。
  • 示例:
days_in_month(time())

获取当前月份的天数。

预测和回归

  1. holt_winters()
  • 作用:
    使用 Holt-Winters 方法进行时间序列预测。
  • 示例:
holt_winters(cpu_usage[1h], 0.3, 0.3) 

对过去1小时的 CPU 使用率进行预测。

  1. predict_linear()
  • 作用:
    使用线性回归进行时间序列预测。
  • 示例:
predict_linear(memory_usage[1h], 3600) 

预测未来1小时的内存使用率。

实用函数

  1. label_replace()
  • 作用:
    替换或添加标签。
  • 示例:
label_replace(up, "new_label", "\$1", "instance", "(.*)") 

为 up 指标添加或替换 new_label 标签。

  1. vector()
  • 作用:
    将标量转换为向量。
  • 示例:
vector(1) 

创建一个值为1的向量。

  1. scalar()
  • 作用:
    将向量转换为标量。
  • 示例:
scalar(sum(cpu_usage)) 

将 CPU 使用率的总和转换为标量值。

标签:函数,示例,数据类型,Prometheus,时间,计算,序列,使用率
From: https://blog.csdn.net/weixin_46546303/article/details/140681893

相关文章

  • Linux--C语言数据类型转换
    目录一、数据类型之间的转换(一)规则:不同的数据类型参与运算,需要转换为同一类型后运算1.数值比较由小到大简单排序:2.隐式类型转换3.强制类型转换二、运算符(一)算术运算符1.单目运算符(1)++i与i++的区别(2)--i和i--区别2.双目运算符3.三目运算符(二)关系运算符(1)什么是......
  • Lua 语法之函数
    函数的定义--函数的定义function函数名()enda=function()end无参数无返回值函数functionF1() print("F1函数")end--Lua执行是自上往下执行函数不同于变量,--执行函数时必须先定义且在执行函数上面有定义F1()--有点类似C#中的委托和事件写法F2=fun......
  • C# —— 析构函数
    构造函数创建对象对属性进行初始化的作用析构函数:当一个对象被释放的时候执行析构函数的特点:一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构函数。它们是被自动调用的。析构函数既没有修饰符,也没有参数。语法 ~方法名(){        语法;}......
  • Python知识点—math函数,方法全解,细致易懂
    代码中已标明函数的方法以及操作importmathformathsindir(math):ifnotmaths.startswith("__"):#打印math函数的方法,不显示以"__"开头的print(maths)print(math.pi)#π值3.141592653589793#无穷大print(math.inf>99999999999999999999999......
  • 嵌入式学习--DAY10:函数的调用
    一、函数参数和函数的值1.在定义函数中指定的形参,在未出现函数调用时,它们并不占用内存中的存储单元,只有在发生函数调用时,函数中的形参才会被分配内存单元。在调用结束后,形参所占的内存单元也会被释放。2.实参可以是常量、变量或表达式。在被定义的函数中,必须指定形参的类型,实......
  • C语言:字符串函数、内存函数剖析
    字符串函数、内存函数剖析一、字符串函数(一)求字符串长度1、strlen(1)库函数实现(2)自定义实现(二)长度不受限制的字符串函数1、strcpy(1)库函数实现(2)自定义实现2、strcat(1)库函数实现(2)自定义实现3、strcmp(1)库函数实现(2)自定义实现(三)长度受限制的字符串函数介绍1、strncpy2、s......
  • prometheus配置
    1.relabel_configs和metric_relabel_configsrelabel_configs:发生在抓取前选择目标和做label配置metric_relabel_configs:发生在抓取后落tsdb库之前,最后修改metrics内容elabel_config发生在抓取之前,metric_relabel_configs发生在抓取之后 2.其他配置-source_labels:[_......
  • 11. 函数的参数
    1.函数的概念与定义1.1概念循环的本质:在相同的地方反复执行相同的代码函数的本质:在不同的地方反复执行相同的代码1.2语法def函数名(参数1,参数2):"""函数的注释"""函数体代码return返回值1.def:是定义函数的关键字2.函数名:函数名类似于变量名,指代......
  • 2. Redis数据类型
    Redis主要支持一下几种数据类型:string(字符串):基本的数据存储单元,可以存储字符串、整数或者浮点数hash(哈希):一个键值对集合,可以存储多个字段。list(列表):可以存储一系列的字符串元素。set(集合):一个无序集合,可以存储不重复的字符串元素。zset(有序集合):每个元素都有一个分数与之关联,类......
  • STM32 HAL 定时器代替HAL_Delay延时函数
    因为不知道的原因SysTick_Handler不进入中断,HAL_IncTick函数中的uwTick计数值不能自增,延时函数卡死。用定时器代替系统时钟计数,并重写HAL_Delay延时函数。不使用中断。需要找一个32位计数周期的定时器,才能和32位计数值匹配。我选择的TIM2,STM32H750的TIM2挂载在APB1上,时钟树设......