PromQL
API
instant query GET /api/v1/query。POST /api/v1/query
parameter
query: string
time: rfc3339 | unix_timestamp
timeout: duration
範圍 query GET /api/v1/query_range
parameter
query: string
start: rfc3339 | unix_timestamp
end: rfc3339 | unix_timestamp
step: duration | float
timeout: duration
query_range のステップ数が 11,000 を越える場合には、PrometheusPrometheus.icon はクエリの実行を 拒否してエラーを返す。 instant query を期間分處理し、範圍 vector として返す
GET /api/v1/series
POST /api/v1/series
GET /api/v1/labels
POST /api/v1/labels
GET /api/v1/label/<label_name>/values
GET /api/v1/targets
GET /api/v1/rules
GET /api/v1/alerts
GET /api/v1/targets/metadata
GET /api/v1/metadata
GET /api/v1/alertmanagers
GET /api/v1/status/config
GET /api/v1/status/flags
GET /api/v1/status/runtimeinfo
GET /api/v1/status/buildinfo
GET /api/v1/status/tsdb
GET /api/v1/status/walreplay
POST /api/v1/admin/tsdb/snapshot
PUT /api/v1/admin/tsdb/snapshot
POST /api/v1/admin/tsdb/delete_series
PUT /api/v1/admin/tsdb/delete_series
POST /api/v1/admin/tsdb/clean_tombstones
PUT /api/v1/admin/tsdb/clean_tombstones
metric type
gauge
counter
rate() 函數で讀む事が多い
summary
histogram
data 型
scalar
指數表記、16 進數表記、NaN、Inf を含む
instant vector
query を評價した時點での最新の値$ \timesmatch した時系列。1 次元
code:txt
name1{key1=value1,key2=value2} 1.0
name2{key1=value1,key2=value2} 1.0
stale marker
範圍 vector (range vector)
指定した時閒範圍の時系列$ \timesmatch した時系列。2 次元
code:txt
name1{key1=value1,key2=value2}
1.0 @ 978296400
1.1 @ 978296401
name2{key1=value1,key2=value2}
1.0 @ 978296400
1.1 @ 978296401
selector
instant vector selector
metric_name
{label_matcher}
metric_name{label_matcher}
{__name__="metric_name"}
metric 名が豫約語であれば on{} とは書けないので、{__name__="on"} と擬似的に metric label として扱ふ
範圍 vector selector
selector[duration]
duration
1ms。1s。1m。1h。1d。1w。1y
subquery
query[duration:step]
instant query を範圍 query として處理し結果を範圍 vector として扱ふ
時刻
instant query
GET /api/v1/query
現在時刻
time: rfc3339 | unix_timestamp
範圍 query
GET /api/v1/query_range
現在時刻
start: rfc3339 | unix_timestamp
end: rfc3339 | unix_timestamp
start~end 迄の step 每の instant query の結果を集めたものを返す
step: duration | float
offset 修飾子
selector offset duration
現在時刻からの offset を設定する。現在時刻は變更しない
正の duration では過去に、負の duration では未來に offset する
@ 修飾子
selector @ epoch
selector @ 978307200
現在時刻を上書きする
範圍 query では start() と end() を epoch として使へる
matcher
= 等號 matcher (equality matcher)
key="value"
!= 不等號 matcher (negative equality matcher)
key!="value"
=~ 正規表現 matcher (regular expression matcher) key=~"/regex/"
/regex/ は /^(?:regex)$/ と解釋する
!~ 正規表現否定 matcher (negative regular expression matcher) key!~"/regex/"
and
matcher,matcher
or
無い
key=~"/value1|value2/"
集合演算で代用
{key="value1"} or ignoring(key) {key="value2"}
集計
演算子
sum
count
min。avg。max
topk。bottomk
by 修飾子で指定されてゐなくても、結果から label を消さない
quantile
count_values
句
前置、後置、どちらにも置ける
without
sum without(fstype, mountpoint)(node_filesystem_size_bytes)
sum(node_filesystem_size_bytes) without(fstype, mountpoint)
by
sum by(job, instance, device)(node_filesystem_size_bytes)
count({__name__=~".+"}) by(__name__)
基本的には by で指定した label のみが結果に殘る
topk、bottomk は label を消さない
集合演算
instant vector 同士を集合演算する
or
和集合
node_hwmon_temp_celsius * ignoring(label) group_left(label) (node_hwmon_sensor_label or ignoring(label) (node_hwmon_temp_celsius * 0 + 1))
and
積集合
unless
差集合
算術演算子
+。-。*。/。^
%
浮動小數點數剩餘
instant vector に算術演算を適用すると、metric 名は結果から取り除かれる
左辺は instant vector。右辺は scalar 若しくは instant vector。範圍 vector は算術演算できない
比較演算子
==。!=。>。<。>=。<=
instant vector ? scalar で、filtering に用ゐる
instant vector ? instant vector で、左辺値を返し、filtering する
修飾子
bool
alert rule にのみ用ゐるべき
比較演算子を修飾する process_open_fds > bool 10。修飾されない比較演算子と違ひ、filter しない。眞なら 1、僞なら 0
vector matching
一對一對應
metric label の同じ metric 同士が對應する
句
二項演算子の右辺に作用する
ignoring
指定した metric label を無視して vector matching する
sum without(cpu)(rate(node_cpu_seconds_total{mode="idle"}[5m])) / ignoring(mode) sum without(mode, cpu)(rate(node_cpu_seconds_total[5m]))
on
指定した metric label のみで vector matching する
sum by(instance, job)(rate(node_cpu_seconds_total{mode="idle"}[5m])) / on(instance, job) sum by(instance, job)(rate(node_cpu_seconds_total[5m]))
多對一對應
修飾子
group_left
sum without(cpu)(rate(node_cpu_seconds_total[5m])) / ignoring(mode) group_left sum without(mode, cpu)(rate(node_cpu_seconds_total[5m]))
group_right
多對多對應
集合演算子を使ふ
函數
色々