基础查询:
Graphite
--查看CPU使用率
aliasByNode(container.message-platform-service.production.*.*.cpu.total, 4)
prometheus
--查看系统CPU使用率
system_cpu_usage{instance="$instance", application="xueqiu-push"}
范围查询:
目前用不到,不做讲解
偏移查询:
graphite
没有,目前没有找到相应的语法
prometheus
--环比昨天同一时间CPU使用率的差值
abs(system_cpu_usage{instance="$instance", application="xueqiu-push"} offset 1d - system_cpu_usage{instance="$instance", application="xueqiu-push"})
匹配模式(联合查询):
graphite
没有,目前没有找到相应的语法
prometheus
--查看所有的http请求,去除path包含actuator请求
irate(okHttp_requests_seconds_count{instance="$instance",application="xueqiu-push", uri!~".*actuator.*"}[5m])
--查看GRPC请求的响应时间
irate(grpc_client_requests_seconds_sum{instance="$instance",application="xueqiu-push",}[5m])/irate(grpc_client_requests_seconds_count{instance="$instance",application="xueqiu-push",}[5m])
聚合操作:
graphite
没有,目前没有找到相应的语法
prometheus
--查看所有应用的http请求量,并找出前5名
topk(5, sum(http_server_requests_seconds_count) by (job))
内置函数:
graphite
--统计服务调用的redis请求所有分片的QPS总和
alias(scale(sumSeries(app.message-platform-service.production.client_REDIS.*.delta), 0.1), 'total')
prometheus
--计算okhttp的http请求的瞬时QPS
irate(okHttp_requests_seconds_count{instance="$instance",application="xueqiu-push", uri!~".*actuator.*"}[5m])
特殊说明:
需要注意的是使用rate或者increase函数去计算样本的平均增长速率,容易陷入“长尾问题”当中,
其无法反应在时间窗口内样本数据的突发变化。
例如,对于主机而言在2分钟的时间窗口内,可能在某一个由于访问量或者其它问题导致CPU占用100%的情况,
但是通过计算在时间窗口内的平均增长率却无法反应出该问题。
为了解决该问题,PromQL提供了另外一个灵敏度更高的函数irate(v range-vector)。
irate同样用于计算区间向量的计算率,但是其反应出的是瞬时增长率。
irate函数是通过区间向量中最后两个两本数据来计算区间向量的增长速率。
这种方式可以避免在时间窗口范围内的“长尾问题”,并且体现出更好的灵敏度,通过irate函数绘制的图标能够更好的反应样本数据的瞬时变化状态。