prometheus 监控用例
Posted shhnwangjian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了prometheus 监控用例相关的知识,希望对你有一定的参考价值。
prometheus 函数介绍 https://prometheus.io/docs/prometheus/latest/querying/functions/
CPU利用率
prometheus 的原始数据
我们从计算每个CPU模式的每秒速率开始。PromQL有一个名为irate的函数,用于计算距离向量中时间序列的每秒瞬时增长率。让我们在node_cpu_seconds_total度量上使用irate函数。
在查询框中输入:irate(node_cpu_seconds_total{job="node_exporter"}[5m]) 查询近5分钟的
备注:这里的 irate() 为 promethues 的查询函数.与之对应的是rate(),
- rate(): 计算的是给定时间窗口内的每秒的平均值
irate适合快速变化的计数器(counter),而rate适合缓慢变化的计数器(counter)。
它们的计算方法有所不同:irate取的是在指定时间范围内的最近两个数据点来算速率,而rate会取指定时间范围内所有数据点,算出一组速率,然后取平均值作为结果。
avg(irate(node_cpu_seconds_total{job="node_exporter"}[5m])) by (instance)
现在,我们将irate函数封装在avg聚合中,并添加了一个by子句,该子句通过实例标签聚合。这将产生新的指标,使用来自所有CPU和所有模式的值来平均主机的CPU使用情况。
avg (irate(node_cpu_seconds_total{job="node_exporter",mode="idle"}[5m])) by (instance) * 100
在这里,我们查询中添加了一个值为idle的mode标签。这只查询空闲数据。我们通过实例求出结果的平均值,并将其乘以100。现在我们在每台主机上都有5分钟内空闲使用的平均百分比。
100 - avg (irate(node_cpu_seconds_total{job="node_exporter",mode="idle"}[5m])) by (instance) * 100
可以把这个变成百分数用这个值减去100
CPU Saturation(饱和度)
获取主机上CPU饱和的一种方法是跟踪负载平均,即考虑主机上的CPU数量,在一段时间内平均运行队列长度。平均少于cpu的数量通常是正常的。
要查看主机的平均负载,我们可以使用node_load*指标来实现这些功能。它们显示平均负荷超过1分钟,5分钟和15分钟。我们将使用一分钟的平均负载:node_load1。
我们还需要计算主机上的cpu数量。我们可以这样使用count聚合:
count by (instance)(node_cpu_seconds_total{mode="idle"})
node_load1 > on (instance)count by (instance)(node_cpu_seconds_total{mode="idle"})
以上是关于prometheus 监控用例的主要内容,如果未能解决你的问题,请参考以下文章