ps: 該文章會持續(xù)更新,如有理解錯誤,有勞指正
I.表達式語言的數據類型
prometheus存儲的是時間序列,包含了timestamp,metric name,label,value等。timestamp類似于主鍵,時間序列是按timestamp存儲的。
標量(Scalar)
1. 概念
就是一個浮點數
字符串(String)
1. 概念
字符串
瞬時向量(instant vector)
1. 概念
在同一時刻的包含單個樣本的一組時間序列。
2. selector使用
用metric name查詢,返回數據庫的當前時刻的所有包含這個metric name的時間序列。
例:http_requests_total
這個查詢會返回http_requests_total{label1="xxx",label2="xxx"} value這種格式的數據庫當前時刻的時間序列。這里的label是區(qū)分包含同樣metric name序列的標識,可以理解為這個指標下時間序列的不同維度。
tip:這里有一個等價寫法,用一個內部的label,叫"__name__"
例:{__name__="http_requests_total", label1=~"xxx"}
我們可以在這個語句的基礎上使用一點過濾語法。
例:http_requests_total{label1="xxx"}
這個查詢語句就會返回維度label1為xxx的序列。
tip:過濾語句經常會使用的操作符有:
1. =:精確匹配,等于
2. !=:精確匹配,不等于
3. =~:正則匹配,等于
4. !~:正則匹配,不等于
如:http_requests_total{label1=~"aaa|bbb", label2!="ccc"}
區(qū)間向量(instant vector)
1. 概念
一組時間序列,每個時間序列包含了一段時間內的樣本數據。
2. selector使用
在metric name后加上一個時間范圍,用[]包含。
例:http_requests_total{label1="xxx"}[5m]
代表的是數據庫中有該metric name和label1為xxx的一組時間序列的最新5分鐘的樣本的值。
返回的數據樣式是:
http_requests_total{label1="xxx"}[5m] value_1@timestamp_1
????????????????????value_2@timestamp_2
????????????????????...
????????????????????value_n@timestamp_n
tip:時間偏移查詢
獲取當前時間向前一段時間內的時間序列的值
例:http_requests_total{label1="xxx"} offset 5m
offset必須跟在selector后面,如:
sum(http_requests_total{label1="xxx"} offset 5m)
未完待續(xù)...