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,算出一组速率,然后求平均值,即显示的图形比较平稳
后期待续