prometheus使用 (六) 核心监控指标了解

前言

#在之前我们了解到Prometheus存储实际上所有的监控数据都是以时间序列的形式,保存在prometheus的TSDB(时序数据库)上.
#从存储上来说,指标metric都是相同的,但是在不同的场景下这些metric⼜有⼀些差异。

#例如,
   #在Node Exporter返回的样本中指标"node_load1"反应的是当前系统的负载状态,
   #随着时间的变化这个指标返回的样本数据是在不断变化的。

   #⽽指标"node_cpu"所获取到的样本数据却不同,它是⼀个持续增⼤的值
  #因为其反应的是CPU的累积使⽤时 间,从理论上讲只要系统不关机,这个值是会⽆限变⼤的。

常见的核心指标

1. Counter(计数器)    #类似于计数器,会持续不断的记录资源的信息,用于统计总体的数据
2. Gauge(仪表盘)      #动态显示资源或请求的使用百分比
3. Histogram(直方图)   #查看某一个时间端的请求持续时间或响应大小
4. Summary(摘要)    #和Histogram类似,不过是由客户端计算

一. Counter 只增不减的计数器

#Counter类型的指标其⼯作⽅式和计数器⼀样,只增不减(除⾮系统发⽣重置)。
#常⻅的监控指标,如http_requests_total,node_cpu都是Counter类型的监控指标。 
#⼀般在定义Counter类型指标的名称时推荐使⽤"_total"作为后缀。

案例1   查询HTTP请求量

http_request_total

案例2  查询当前系统中访问量前10的HTTP地址

topk(10, http_request_total)

二. Gauge 可增可减的仪表盘

#与Counter不同,Gauge类型的指标侧重于反应系统的当前状态。因此这类指标的样本数据可增可减。
#常⻅指标如
"node_memory_MemFree_bytes"(主机当前空闲的内容⼤⼩)
"node_memory_MemAvailable_bytes"(可⽤内存⼤⼩)
#都是Gauge类型的监控指标。

#对于Gauge类型的监控指标,通过PromQL内置函数"delta()"可以获取样本在⼀段时间返回内的变化情况。

案例1  计算内存在2分钟内的变换值

delta(node_memory_MemAvailable_bytes[2m])

 

#还可以使⽤deriv()计算样本的线性回归模型,甚⾄是直接使⽤predict_linear()对数据的变化趋势进⾏预测。

案例2  预测系统磁盘空闲空间在4个⼩时之后的剩余情况

#标签可以不写,是为了方便显示单条数据
predict_linear(node_filesystem_free_bytes{mountpoint="/",instance="192.168.1.21:9100",device="/dev/mapper/centos-root"}[1h], 4 * 3600)

 

 

#我最近没怎么写入过数据,所以查询到空闲是12G
#一个小时之后也差不多是12G

三 使⽤Histogram和Summary分析数据分布情况

#Histogram和Summary主⽤⽤于统计和分析样本的分布情况
#在⼤多数情况下我们都倾向于使⽤某些量化指标的平均值,
#例如
#    CPU的平均使⽤率、⻚⾯的平均响应时间。

#但是这种⽅式的问题很明显,以系统的api调用的平均响应时间为例
#如果大多数api请求响应时间都维持在100s内,而个别请求的响应时间为5s
#那么久会导致一些web页面的响应时间落到中位数的情况,这种情况被称作"⻓尾问题"


#为了区分是平均的慢、还是长尾导致的慢。最简单是方式就是根据请求延迟的范围进行分组
#比如 延迟在0~10ms之间一组、⽽10~20ms之间的一组
#Histogram和Summary都是为了能够解决这样问题的存在

1.  Summary

#例如,指标prometheus_tsdb_wal_fsync_duration_seconds的指标类型为Summary。
#它记录了Prometheus Server中 wal_fsync处理的处理时间,通过访问Prometheus Server的/metrics地址

从上⾯的样本中可以得知当前Prometheus Server进⾏wal_fsync操作的总次数为1次(count) 总耗时0.010009577(sum)

2. Histogram

#在Prometheus Server⾃身返回的样本数据中,我们还能找到类型为Histogram的监控指标
prometheus_tsdb_compaction_chunk_range_seconds_bucket

#"Summary"与"Histogram"类型的相同之处在于,都会返回指标的总数(_count)和值的总量(_sum)
#而不同在于"Histogram"指标直接反应了在不同区间内样本的个数,区间通过标签"len"进⾏定义。
#并且对于"Histogram"指标来说,我们还可以通过"histogram_quantile()"函数在服务器端计算分位数。
#而Sumamry的分位数则是直接在客户端计算完成,因此对于分位数的计算⽽⾔



#小结
Summary    #在通过PromQL进⾏查询时有更好的性能表现
Histogram  #由服务端计算从而减少客户端的压力,但会消耗更多的资

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值