ラベル付きメトリックは、PromQL クエリ言語を用いてグラフに表示できます。Mackerel では、PromQL の以下の機能がサポートされています。
時系列セレクタ
- ベクトルセレクタ
=(等号ラベルマッチャ)!=(不等号ラベルマッチャ)=~(正規表現ラベルマッチャ)!~(否定正規表現ラベルマッチャ)
- 範囲ベクトルセレクタ
修飾子
集計演算子
また、集計に用いるラベルを制御する by・without 修飾子に対応しています。
二項演算子
(vector) x (vector)、(vector) x (scalar)、(scalar) x (vector)、(scalar) x (scalar) の 4 パターンで定義されます。
ベクトル同士の演算を実現するために、ベクトルマッチングという仕組みが実装されています。一対一対応(算術・比較演算子)と多対多対応(集合演算子)は既に実装が完了しています。
group_left・group_right 修飾子を用いた一対多対応は未実装です。
算術演算子
比較演算子
集合演算子
関数
カウンタ用の計算関数
<aggregation>_over_time 関数
ラベル関数
型変換関数
変数
表示範囲に関する変数が利用できます。
範囲を表す変数
$__intervalは表示範囲から決定されるグラフ上の点の間隔です。<aggregation>_over_time関数と併用することで隣の点との計算を表現できます。$__rate_intervalは表示範囲から決定される間隔です。点の間隔である$__interval以上の値が設定されるため、irate()やincrease()と組み合わせると有用です。$__rangeは表示範囲です。
範囲を表す変数はデフォルトでは秒数に展開されます。${<変数名>:milliseconds}のように表記することでミリ秒表記で展開されます。
時刻を表す変数
$__from、$__toはそれぞれ表示範囲の開始時刻と終了時刻を表すUNIX秒に展開されます。