prometheus PromQL 内置函数

1. increase 函数

该函数只能作用于计数器类型(counters),只增不减

计算磁盘的IO延迟

increase(node_disk_io_time_ms{host_ip=~".+"}[2m]) / (increase(node_disk_reads_completed[2m]) + increase(node_disk_writes_completed[2m])) * 1000

分析

(1) increase(node_disk_writes_completed[2m],采集node_disk_writes_completed两分钟的数据,若metric每一分钟采集一次,,即两个values

(2) increase用获取的最后一个value减去获取的第一个value,即increase(node_disk_writes_completed[2m]的最终值

(3) 该表达式有个问题,若(increase(node_disk_reads_completed[2m]) + increase(node_disk_writes_completed[2m])) 的值为0,则可能导致数据显示断点,workaround方式如下

increase(node_disk_io_time_ms{host_ip=~".+"}[2m]) / (increase(node_disk_reads_completed[2m]) + increase(node_disk_writes_completed[2m])>0) * 1000 or (increase(node_disk_reads_completed[2m]) + increase(node_disk_writes_completed[2m])) > bool 0

当然,可能还有更符合规范的写法

2.irate 函数

该函数只能作用于计数器类型(counters),只增不减

计算ceph osd iops write

sum(irate(ceph_osd_op_w[2m]))

分析

(1) irate取指定时间范围内最近两个value相减,结果如下

{ceph_daemon="osd.0",instance="ceph-exporter",job="ceph-mon",kubernetes_name="ceph-mon",kubernetes_namespace="ceph"}	14.666666666666666
{ceph_daemon="osd.1",instance="ceph-exporter",job="ceph-mon",kubernetes_name="ceph-mon",kubernetes_namespace="ceph"}	17.7
{ceph_daemon="osd.2",instance="ceph-exporter",job="ceph-mon",kubernetes_name="ceph-mon",kubernetes_namespace="ceph"}	5.133333333333334
{ceph_daemon="osd.3",instance="ceph-exporter",job="ceph-mon",kubernetes_name="ceph-mon",kubernetes_namespace="ceph"}	21.2
{ceph_daemon="osd.4",instance="ceph-exporter",job="ceph-mon",kubernetes_name="ceph-mon",kubernetes_namespace="ceph"}	9.9
{ceph_daemon="osd.5",instance="ceph-exporter",job="ceph-mon",kubernetes_name="ceph-mon",kubernetes_namespace="ceph"}	19.833333333333332

(2) sum用于聚合,结合后的结果如下

{}	85.46951565052169

3.rate 函数

该函数只能作用于计数器类型(counters),只增不减

计算CPU使用率

rate(container_cpu_usage_seconds_total[5m])

分析

(1) 与irate不同,rate计算的是指定时间范围内所有value,算出一组速率,然后求平均值,即显示的图形比较平稳

 

后期待续

你可能感兴趣的:(K8s,Prometheus)