简单的时间序列选择
返回度量指标名称是http_requests_total
的所有时间序列样本数据:
http_requests_total
返回度量指标名称是http_requests_total
, 标签分别是job="apiserver
, handler="/api/comments
的所有时间序列样本数据:
http_requests_total{job="apiserver", hanlder="/api/comments"}
返回度量指标名称是http_requests_total
, 标签分别是job="apiserver
, handler="/api/comments
,且是5分钟内的所有时间序列样本数据:
http_requests_total{job="apiserver", handler="/api/comments"}[5m]
注意:一个范围向量表达式结果不能直接在Graph图表中,但是可以在 "console" 视图中展示。
使用正则表达式,你可以通过特定模式匹配标签为job的特定任务名,获取这些任务的时间序列。在下面这个例子中,所有任务名称以server
结尾。
http_requests_total{job=~"server$"}
返回度量指标名称是http_requests_total
,且http返回码不以4开头的所有时间序列数据:
http_requests_total{status!~"^4..$"}
使用函数,操作符等
返回度量指标名称http_requests_total
,且过去5分钟的所有时间序列数据值速率。
rate(http_requests_total[5m])
假设度量名称是http_requests_total
,且过去5分钟的所有时间序列数据的速率和,速率的维度是job:
sum(rate(http_requests_total)[5m]) by (job)
如果我们有相同维度标签,我们可以使用二元操作符计算样本数据,返回值:key: value=标签列表:计算样本值。例如,下面这个表达式返回每一个实例剩余内存,单位是M,如果不同,则需要使用ignoring(label_lists)
,如果多对一,则采用group_left,如果是一对多,则采用group_right。
(instance_memory_limit_byte - instant_memory_usage_bytes) / 1024 / 1024
相同表达式,求和可以采用下面表达式:
sum( instance_memory_limit_bytes - instance_memory_usage_bytes) by (app, proc) / 1024 / 1024
如果相同集群调度器任务,显示CPU使用率度量指标的话,如下所示:
instance_cpu_time_ns{app="lion", pro="web", rev="34d0f99", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="elephant", proc="worker", rev="34d0f99", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="turtle", proc="api", rev="4d3a513", env="prod", job="cluster-manager"}
...
我们可以获取最高的3个CPU使用率,按照标签列表app
和proc
分组
topk(3, sum(rate(instance_cpu_time_ns[5m])) by(app, proc))
假设一个服务实例只有一个时间序列数据,那么我们通过下面表达式,可以统计出每个应用的实例数量:
count(instance_cpu_time_ns) by (app)