偶尔需要写PromQL,但是总是不记得,以下为备忘。
例如 http_requests_total{environment=~"staging|testing|development",method!="GET"}
用中括号选择时间,例如 http_requests_total{job="prometheus"}[5m]
rate()
函数用来计算变化率
increase()
用来计算增长量
sum()
用来聚合
sum(rate(xxx)) / sum(rate(xxx)) = sum(increase()) / sum(increase)
histogram_quantile()
用来计算直方图里,百分位中的最大值例如 histogram_quantile(0.9, rate(http_requests_total[10m]))
计算 过去10分钟内,http_requests_total 90% 分位的最大值。
$__interval
是Grafana中选中的时间范围$__rate_interval
是选中时间范围,但是解决了 $__interval
的一些小问题,比如 $__interval
选择了15s,刚好Prometheus抓取间隔是15s,那么就会显示不出数据,而 $__rate_interval
保证至少会选择4个数据展示出来。ref: