Prometheus指标

news/2024/5/19 0:57:24 标签: Prometheus, metircs, histogram

1 指标类型

prometheus的指标有四种类型,分别是Counter,Gauge,Histogram,Summary。

  • Counter
    只增不减的计数器,用于描述某个指标的累计状态,比如请求量统计,http_requests_total

  • Gauge
    可增可减的计量器,用于描述某个指标当前的状态,比如系统内存余量,node_memory_MemFree_bytes

  • Histogram
    直方图指标用于描述指标的分布情况,比如对于请求响应时间,总共10w个请求,小于10ms的有5w个,9小于50ms的有9w个,小于100ms的有9.9w个

  • Summary
    和直方图类似,summary也是用于描述指标分布情况,不过表现形式不同,比如还是对于请求响应时间,summary描述则是,总共10w个请求,50%小于10ms,90%小于50ms,99%小于100ms

    Histogram的使用场景会比较多一些,因为对服务端资源需求更少,但是在查询时histogram的资源消耗会比summary相对于更多。其实也就是summary把资源消耗转移到了服务端,指标的分布数据是计算好再导出的。

2 常用聚合函数

sum 求和
min 最小值
max 最大值
avg 平均值
stddev 标准差
stdvar 方差
count 统计元素数量
count_values 统计等于某个值的元素数量
bottomk 最小的k个元素
topk 最大的k个元素
quantile 元素分布的分位数

以上这些聚合函数使用时,有些可以针对所有指标做聚合,有些还可以指定以某个label做聚合,也可以去掉某个label后做聚合,

假如我们以hostname为粒度,统计各个hostname的请求数量,

sum by (hostname) (http_requests_total)

如果统计时,不想关注请求状态码,可以忽略该label后做聚合

sum without(statu_code) (http_requests_total)

3 常用函数

  • absent()
    用于检查某个指标是否缺失,缺失时返回1,比如查询myjob是否启动,当myjob存在时,返回空,不存在时返回1
absent(job="myjob")
  • delta()
    返回指定时间段的差值,取的是第一个和最后一个值,不管中间的数据
delta(http_requests_total{job="myjob"}[1h]) 
  • histogram_quantile()
    计算histogram指标的分布情况,比如计算90%数据指标分布线
histogram_quantile(0.9, sum by (job, le) (rate(http_request_duration_seconds_bucket[10m])))

而聚合函数quantile()一般计算的是gauge指标的分布,比如计算100机器的90%内存使用分布,

quantile(0.9, node_memory_MemFree_bytes)

也可以理解为,histogram_quantile的操作对象是针对node_memory_MemFree_bytes聚合后的histogram数据,

  • rate() and irate()
    都是用于计算元素变化速率,irate取的是在指定时间范围内的最近两个数据点,而rate则是取指定时间范围内所有数据点做平均,所以irate常用于变化快的指标,rate则用于缓慢变化的指标,这样指标才不容易失真
rate(http_requests_total{job="myjob"}[1m])
irate(http_requests_total{job="myjob"}[1m])

参考文档:

  1. https://prometheus.io/docs/prometheus/latest/querying/operators/
  2. https://prometheus.io/docs/prometheus/latest/querying/functions/

http://www.niftyadmin.cn/n/1035236.html

相关文章

K8S Cilium网络插件——安装

注:本文基于Cilium v1.11.0编写 1 安装cilium 1.1 cilium-cli 先安装cilium-cli工具, wget https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz tar -xf cilium-linux-amd64.tar.gz -C /usr/bin/1.2 cilium …

ABAP 新特性 - CORRESPONDING

一、工作区Work Area ​DATA: gt_out TYPE STANDARD TABLE OF zssd005_out_1,gs_out TYPE zssd005_out_1.********************************************** *OLD SYNTAX:先定义工作区ls_export DATA: ls_export TYPE zssd005_out_2.LOOP AT gt_out INTO gs_out.MOVE-COR…

kafka简单上手

注:本文基于kafka 2.13编写 1 关于kafka kafka是一个开源的分布式流处理平台,基于zookeeper协调,支持分区、多副本、多订阅者,主要用做日志收集系统或者是消息队列系统。 2 基本概念 Broker Kafka服务器节点称为broker&#x…

物料计量单位转换MD_CONVERT_MATERIAL_UNIT

测试如下: 测试结果 程序中封装 FORM frm_convert_unit USING pv_matnrpv_kwmengCHANGING cv_cans.DATA: lv_in_menge TYPE ekpo-menge,lv_out_menge TYPE ekpo-menge.lv_in_menge pv_kwmeng.CALL FUNCTION MD_CONVERT_MATERIAL_UNITEXPORTINGi_matnr …

MongoDB replication

注:本文基于MongoDB 4.2编写 1 关于replication MongoDB的副本集能保证数据库服务的冗余性和高可用,这也是生产环境的必要配置。每个副本集都保存相同的数据,保证主节点异常时能接替主节点继续提供服务。 2 搭建集群 我们用3台机器搭建一…

限制SELECT OPTION 选择值方式(屏幕事件 INITIALIZATION 中使用)

FUNCTION zs4_select_options_restrict. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" REFERENCE(IV_NAME) TYPE RSRESTRICT-OBJECTNAME OPTIONAL *" REFERE…

远程连接K8S集群

1 背景 我们搭建好K8S集群后,默认都是从master节点上连接到集群,执行命令。但是有时候我们需要在其他机器连接k8s集群,这就需要我们的kubectl命令能够和集群的apiserver通讯,由于是通过https通讯,因此需要生成对应的证…

kubeadm重新生成admin.conf

一条指令搞定, kubeadm init phase kubeconfig admin 如果有多个网卡,需要用–apiserver-advertise-address指定apiserver监听地址,证书地址可以用–cert-dir指定,默认/etc/kubernetes/pki,生成的admin.conf默认为/et…