## 查詢例子
---
### 簡單的時間序列選擇
返回度量指標名稱是`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)