コンテンツにスキップ

MetricsQL 構文リファレンス

現在、Guanceのダッシュボードでは、MetricsQL 言語を使用して Prometheus メトリクスをクエリできます。

MetricsQL は、VictoriaMetrics によって開発された PromQL 構文の拡張言語です。ほとんどの場合、MetricsQL は PromQL のクエリと互換性がありますが、PromQL の直感的でない部分や不便な部分を拡張・最適化しています。この記事では、互換性の設計の詳細について説明しています。

ほとんどの場合、理解している PromQL 構文のままクエリを実行しても問題ありません。gauge データの p95 を計算したい場合や、topk が正確な数の系列を返すようにしたい場合など、複雑な問題に直面したときは、以下の構文リファレンスを参照して解決策を探してください。

MetricsQL と PromQL 構文の主な違いは以下の通りです。

  • MetricsQL は、ルックバックウィンドウ内の前のポイントを考慮します。これは rateincrease などの範囲関数に適用されます。これにより、ユーザーが increase(metric[$__interval]) クエリに対して期待する正確な結果を返すことができます(Prometheus がこのようなクエリに対して不完全な結果を返すのとは対照的です)。
  • MetricsQL は範囲関数の結果を推測しません。これにより、PromQL のこの問題が解決されます。PromQL と MetricsQL における rate および increase の計算の技術的詳細については、この問題のコメントを参照してください。
  • MetricsQL は、step 値が収集間隔より小さい rate に対して、期待される非空の応答を返します。これにより、Grafana で表示される問題が解決されます。また、このブログ記事も参照してください。
  • MetricsQL は、scalar 型とラベルなしの instant vector を同じものとして扱います。これらの型の微妙な違いがユーザーを混乱させることが多いからです。詳細については、該当する Prometheus ドキュメントを参照してください。
  • MetricsQL は出力からすべての NaN 値を削除します。そのため、(-1)^0.5 のようなクエリは MetricsQL では空の結果を返しますが、PromQL では一連の NaN 値を返します。フロントエンドは NaN 値に対して線や点を描画しないため、最終的な結果は MetricsQL と PromQL のどちらでも同じであることに注意してください。
  • MetricsQL は、元の時系列の意味を変更しない関数を適用した後、メトリクス名を保持します。例えば、min_over_time(foo)round(foo) は結果に foo メトリクス名を保持します。詳細については、この問題を参照してください。

また、Guanceで使用する際は、元の MetricsQL との違いに注意してください。

  • measurement の選択をサポートします。メトリクス名の前に measurement をコロンで区切って指定する必要があります(例:increase(measurement:metric[1m]))。measurement を指定しない場合、クエリのパフォーマンスが著しく低下します。
  • Guanceの UI では、現在 step を手動で設定できません。step は時間範囲と表示密度に基づいて自動計算されます。
  • Guanceの UI は現在、ヒートマップタイプのグラフ表示をサポートしていません。これにより、ヒストグラムの表示効果に影響を与える可能性があります。

この記事の内容は主に https://docs.victoriametrics.com/MetricsQL.html の翻訳に基づいています。日本語訳に疑義がある場合は、原文を参照して読むこともできます。

機能一覧

MetricsQL には以下の機能が含まれます。

  • 角括弧内のルックバックウィンドウを省略できます。MetricsQL は、グラフの構築に使用される step に基づいて、自動的に後方参照するウィンドウを選択します。以下のクエリは MetricsQL で有効です:rate(node_network_receive_bytes_total)。Grafana で使用する場合、rate(node_network_receive_bytes_total[$__interval]) と同等です。
  • 集約関数は任意の数の引数を受け取ることができます。例えば、avg(q1, q2, q3)q1q2q3 の各ポイントの平均値を返します。
  • @修飾子 はクエリ内の任意の場所に配置できます。例えば、sum(foo) @ end() は、選択された時間範囲 [start ... end]end タイムスタンプにおける sum(foo) の値を計算します。
  • 任意のサブ式を @修飾子 として使用できます。例えば、foo @ (end() - 1h) は、選択された時間範囲 [start ... end]end - 1h タイムスタンプで foo を計算します。
  • offset、角括弧内のルックバックウィンドウ、および サブクエリ 内の step 値は、[Ni] 構文を使用して現在のステップを参照できます。Grafana では $__interval 値とも呼ばれます。例えば、rate(metric[10i] offset 5i) は、過去 10 ステップ分をカバーし、5 ステップ分のオフセットを持つ 1 秒あたりのレートを返します。
  • offset はクエリ内の任意の場所に配置できます。例えば、sum(foo) offset 24h
  • 角括弧内のルックバックウィンドウと offset は小数値にできます。例えば、rate(node_network_receive_bytes_total[1.5m] offset 0.5d)
  • 期間のサフィックスはオプションです。サフィックスを省略した場合、期間は秒単位となります。例えば、rate(m[300] offset 1800)rate(m[5m]) offset 30m と同等です。
  • 期間はクエリ内の任意の場所に配置できます。例えば、sum_over_time(m[1h]) / 1hsum_over_time(m[1h]) / 3600 と同等です。
  • 数値には KKiMMiGGiTTi のサフィックスを付けることができます。例えば、8K8000 に相当し、1.2Mi1.2*1024*1024 に相当します。
  • すべてのリスト(ラベルフィルター、関数引数、式など)の末尾にカンマを付けることができます。例えば、以下のクエリは有効です:m{foo="bar",}f(a, b,)WITH (x=y,) x。これにより、複数行のクエリのメンテナンスが容易になります。
  • メトリクス名とラベル名には任意の Unicode 文字を使用できます。例えば、температура{город="Киев"} は MetricsQL 式です。
  • メトリクス名とラベル名にはエスケープ文字を含めることができます。例えば、foo\\-bar{baz\\=aa="b"} は有効な式です。これは、値 b を持つラベル baz=aa を持つ、名前 foo-bar の時系列を返します。また、以下のエスケープシーケンスもサポートされています。
    • \\xXXXX はエスケープする ASCII 文字の 16 進数表現)
    • \\uXXXXXXXX はエスケープする Unicode 文字の 16 進数表現)
  • 集約関数は、オプションの limit N サフィックスをサポートし、出力系列の数を制限します。例えば、sum(x) by (y) limit 3 は、集約後の出力時系列数を 3 に制限します。その他の時系列はすべて削除されます。
  • histogram_quantile はオプションの第 3 引数 boundsLabel を受け入れます。この場合、推定パーセンタイルの lower 境界と upper 境界を返します。詳細については、この問題を参照してください。
  • default 二項演算子。q1 default q2 は、q1 のギャップを q2 の対応する値で埋めます。
  • if 二項演算子。q1 if q2 は、q2 に値が存在しない q1 の値を削除します。
  • ifnot 二項演算子。q1 ifnot q2 は、q2 に値が存在する q1 の値を削除します。
  • WITH テンプレート。この機能は、複雑なクエリの作成と管理を簡素化します。 WITH templates playground で試すことができます。
  • 文字列リテラルは連結できます。これは WITH テンプレートで便利です:WITH (commonPrefix="long_metric_prefix_") {__name__=commonPrefix+"suffix1"} / {__name__=commonPrefix+"suffix2"}
  • keep_metric_names 修飾子は、すべての ロールアップ関数 および 変換関数 に適用できます。この修飾子は、関数の結果からメトリクス名が削除されるのを防ぎます。これらのドキュメントを参照してください。

keep_metric_names

デフォルトでは、元の時系列の意味を変更する関数を適用した後、メトリクス名は削除されます。異なる名前を持つ複数の時系列に関数を適用する場合、これにより「重複時系列」エラーが発生する可能性があります。このエラーは、関数に keep_metric_names 修飾子を適用することで解決できます。

例えば、rate({__name__=~"foo|bar"}) keep_metric_names は、返される時系列に foobar のメトリクス名を保持します。

MetricsQL 関数

MetricsQL は以下の関数を提供します。

ロールアップ関数

ロールアップ関数(範囲関数またはウィンドウ関数とも呼ばれる)は、指定されたルックバックウィンドウ上で 元のサンプル に対してロールアップ計算を実行します。シリーズセレクター に適用されます。例えば、avg_over_time(temperature[24h]) は、過去 24 時間の元のサンプルの平均温度を計算します。

その他の詳細:

  • ロールアップ関数を使用してグラフを構築する場合、グラフ上の各ポイントは独立してロールアップを計算します。例えば、avg_over_time(temperature[24h]) グラフの各ポイントは、過去 24 時間の平均温度を示します。ポイント間の間隔は、フロントエンドから渡される step クエリパラメータによって設定されます。
  • 指定された シリーズセレクター が複数の時系列を返す場合、返された各系列に対してロールアップ計算が個別に実行されます。
  • 角括弧内にルックバックウィンドウが指定されていない場合、MetricsQL は自動的にルックバックウィンドウをグラフ上のポイント間の間隔(step クエリパラメータ(/api/v1/query_range で指定)、Grafana の $__interval 値、または MetricsQL の 1i 期間)に設定します。例えば、rate(http_requests_total)rate(http_requests_total[$__interval]) と同等です。MetricsQL では、rate(http_requests_total[1i]) とも同等です。
  • MetricsQL の各 シリーズセレクター は、ロールアップ関数でラップする必要があります。そうしないと、計算が実行される前に自動的に default_rollup に変換されます。例えば、foo{bar="baz"} は、計算が実行される前に自動的に default_rollup(foo{bar="baz"}[1i]) に変換されます。
  • シリーズセレクター 以外のものがロールアップ関数に渡された場合、内部の引数は自動的に サブクエリ に変換されます。
  • すべてのロールアップ関数は、オプションの keep_metric_names 修飾子を受け入れます。この修飾子が設定されている場合、関数は結果にメトリクス名を保持します。これらのドキュメントを参照してください。

暗黙的なクエリ変換 も参照してください。

サポートされているロールアップ関数の一覧

absent_over_time

absent_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内に元のサンプルが存在しない場合は 1 を返します。それ以外の場合は空の結果を返します。

この関数は PromQL でサポートされています。 present_over_time も参照してください。

aggr_over_time

aggr_over_time(("rollup_func1","rollup_func2",...), series_selector[d])ロールアップ関数 です。指定された シリーズセレクター 内の各時系列に対して、リストされたすべての rollup_func* を個別に計算します。rollup_func* には任意のロールアップ関数を含めることができます。例えば、aggr_over_time(("min_over_time","max_over_time","rate"), m[d]) は、m[d]min_over_timemax_over_timerate を計算します。

ascent_over_time

ascent_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d における元のサンプル値の上昇を計算します。計算は、返された各時系列に対して個別に実行されます。

この関数は、GPS トラッキングにおける高度の増加を追跡するのに便利です。結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

descent_over_time も参照してください。

avg_over_time

avg_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d における元のサンプル値の平均を計算します。指定された シリーズセレクター から返された各時系列ごとに計算されます。

この関数は PromQL でサポートされています。 median_over_time も参照してください。

changes

changes(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の元のサンプルの変更回数を計算します。指定された シリーズセレクター から返された各時系列ごとに計算されます。Prometheus の changes() とは異なり、指定されたルックバックウィンドウ d の前の最後のサンプルの変更を考慮します。詳細については、この記事を参照してください。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 changes_prometheus も参照してください。

changes_prometheus

changes_prometheus(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の元のサンプルの変更回数を計算します。指定された シリーズセレクター から返された各時系列ごとに計算されます。Prometheus とは異なり、指定されたルックバックウィンドウ d の前の最後のサンプルの変更を考慮しません。詳細については、この記事を参照してください。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 changes も参照してください。

count_eq_over_time

count_eq_over_time(series_selector[d], eq)ロールアップ関数 です。指定されたルックバックウィンドウ d 上で eq に等しい元のサンプルの数をカウントします。指定された シリーズセレクター から返された各時系列ごとに計算されます。結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

count_over_time も参照してください。

count_gt_over_time

count_gt_over_time(series_selector[d], gt)ロールアップ関数 です。指定されたルックバックウィンドウ d 上で gt より大きい元のサンプルの数をカウントします。指定された シリーズセレクター から返された各時系列ごとに計算されます。結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

count_over_time も参照してください。

count_le_over_time

count_le_over_time(series_selector[d], le)ロールアップ関数 です。指定されたルックバックウィンドウ d 上で le 以下の元のサンプルの数をカウントします。指定された シリーズセレクター から返された各時系列ごとに計算されます。結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

count_over_time も参照してください。

count_ne_over_time

count_ne_over_time(series_selector[d], ne)ロールアップ関数 です。指定されたルックバックウィンドウ d 上で ne に等しくない元のサンプルの数をカウントします。指定された シリーズセレクター から返された各時系列ごとに計算されます。結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

count_over_time も参照してください。

count_over_time

count_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上での元のサンプルの数をカウントします。指定された シリーズセレクター から返された各時系列ごとに計算されます。結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 count_le_over_timecount_gt_over_timecount_eq_over_timecount_ne_over_time も参照してください。

decreases_over_time

decreases_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で元のサンプル値が減少した回数を計算します。指定された シリーズセレクター から返された各時系列ごとに計算されます。結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

increases_over_time も参照してください。

default_rollup

default_rollup(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上の最後の元のサンプル値を返します。指定された シリーズセレクター から返された各時系列ごとに計算されます。

delta

delta(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の最後のサンプルと最初のサンプルの差を計算します。指定された シリーズセレクター から返された各時系列ごとに計算されます。MetricsQL の delta() 関数の動作は、Prometheus の delta() 関数の動作とは若干異なります。詳細については、この記事を参照してください。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 increase および delta_prometheus も参照してください。

delta_prometheus

delta_prometheus(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の最初と最後のサンプルの差を計算します。指定された シリーズセレクター から返された各時系列ごとに計算されます。

delta_prometheus() の動作は、Prometheus の delta() 関数の動作に近いものです。詳細については、この記事を参照してください。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

delta も参照してください。

deriv

deriv(series_selector[d])ロールアップ関数 です。指定された シリーズセレクター から返された各時系列の 1 秒あたりの導関数を、線形回帰を使用して計算します。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 deriv_fast および ideriv も参照してください。

deriv_fast

deriv_fast(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の最初と最後の元のサンプルを使用して、各時系列の 1 秒あたりの導関数を計算します。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

deriv および ideriv も参照してください。

descent_over_time

descent_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の元のサンプル値の下降を計算します。計算は、返された各時系列に対して個別に実行されます。

この関数は、GPS トラッキングにおける高度の損失を追跡するのに便利です。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

ascent_over_time も参照してください。

distinct_over_time

distinct_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の各時系列における、異なる元のサンプル値の数を返します。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

duration_over_time

duration_over_time(series_selector[d], max_interval)ロールアップ関数 です。指定された シリーズセレクター がルックバックウィンドウ d 内に存在する期間(秒単位)を返します。各系列内の隣接するサンプル間の間隔が max_interval を超えないことが期待されます。超えた場合、そのような間隔はギャップと見なされ、計算されません。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

lifetime および lag も参照してください。

first_over_time

first_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の各時系列の最初の元のサンプル値を返します。

last_over_time および tfirst_over_time も参照してください。

geomean_over_time

geomean_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の元のサンプルの幾何平均を計算します。計算は、返された各時系列に対して個別に実行されます。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

histogram_over_time

histogram_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の元のサンプルに対して VictoriaMetrics ヒストグラム を計算します。これは、指定された シリーズセレクター 内の各時系列に対して個別に計算されます。生成されたヒストグラムは、histogram_quantile に渡して複数の gauge のパーセンタイルを計算するのに便利です。例えば、以下のクエリは過去 24 時間の各国の平均気温を計算します:

histogram_quantile(0.5, sum(histogram_over_time(temperature[24h])) by (vmrange,country))

hoeffding_bound_lower

hoeffding_bound_lower(phi, series_selector[d])ロールアップ関数 です。範囲 [0...1] 内の指定された phi に対する下限 Hoeffding の不等式 を計算します。

hoeffding_bound_upper も参照してください。

hoeffding_bound_upper

hoeffding_bound_upper(phi, series_selector[d])ロールアップ関数 です。範囲 [0...1] 内の指定された phi に対する上限 Hoeffding の不等式 を計算します。

hoeffding_bound_lower も参照してください。

holt_winters

holt_winters(series_selector[d], sf, tf)ロールアップ関数 です。指定された平滑化係数 sf とトレンド係数 tf を使用して、指定されたルックバックウィンドウ d 上の元のサンプルの Holt-Winters 値(二重指数平滑化 としても知られる)を計算します。sftf は両方とも範囲 [0...1] 内である必要があります。シリーズセレクターgauge タイプ の時系列を返すことが期待されます。

この関数は PromQL でサポートされています。 range_linear_regression も参照してください。

idelta

idelta(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の各時系列における、最後の 2 つの元のサンプル間の差を計算します。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 delta も参照してください。

ideriv

ideriv(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上の最後の 2 つの元のサンプルに基づいて、各時系列の 1 秒あたりの導関数を計算します。計算は、指定された シリーズセレクター から返された各時系列に対して個別に実行されます。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

deriv も参照してください。

increase

increase(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の各時系列の増加量を計算します。シリーズセレクターcounter タイプ の時系列を返すことが期待されます。

Prometheus とは異なり、結果の計算時に指定されたルックバックウィンドウ d の前の最後のサンプルを考慮します。詳細については、この記事を参照してください。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 increase_pureincrease_prometheusdelta も参照してください。

increase_prometheus

increase_prometheus(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の各時系列の増加量を計算します。シリーズセレクターcounter タイプ の時系列を返すことが期待されます。結果の計算時に、Prometheus とは異なり、指定されたルックバックウィンドウ d の前の最後のサンプルを考慮しません。詳細については、この記事を参照してください。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

increase_pure および increase も参照してください。

increase_pure

increase_pure(series_selector[d])ロールアップ関数 です。increase と同じですが、以下の点が異なります。counter は常に 0 から始まると仮定します。一方、increase は最初の値が大きすぎる場合、その値を無視します。

increases_over_time

increases_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内の各時系列における、元のサンプル値の増加回数を計算します。

結果のメトリクス名は削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

decreases_over_time も参照してください。

integrate

integrate(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d に基づいて、指定された シリーズセレクター から返された各時系列上の元のサンプルの積分を計算します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

irate

irate(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d に基づいて、指定された シリーズセレクター から返された各時系列上の最後の 2 つの元のサンプルの瞬間的な 1 秒あたりの増加率を計算します。series_selector は counter タイプの時系列を返すことが期待されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 rate および rollup_rate も参照してください。

lag

lag(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上の最後のサンプルと現在のポイントのタイムスタンプとの間の期間(秒単位)を返します。指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

lifetime および duration_over_time も参照してください。

last_over_time

last_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の最後の元のサンプル値を返します。

この関数は PromQL でサポートされています。 first_over_time および tlast_over_time も参照してください。

lifetime

lifetime(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上の最後のサンプルと最初のサンプルの間の期間(秒単位)を返します。指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

duration_over_time および lag も参照してください。

mad_over_time

mad_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の元のサンプルの 中央絶対偏差 を計算します。

mad および range_mad も参照してください。

max_over_time

max_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の元のサンプルの最大値を計算します。

この関数は PromQL でサポートされています。 tmax_over_time も参照してください。

median_over_time

median_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の元のサンプルの中央値を計算します。

avg_over_time も参照してください。

min_over_time

min_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の元のサンプルの最小値を計算します。

この関数は PromQL でサポートされています。 tmin_over_time も参照してください。

mode_over_time

mode_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上の元のサンプルの 最頻値 を計算します。指定された シリーズセレクター から返された各時系列に対して個別に計算されます。元のサンプル値は離散的であることが期待されます。

predict_linear

predict_linear(series_selector[d], t)ロールアップ関数 です。線形補間を使用して、指定されたルックバックウィンドウ d 上の元のサンプル値から t 秒後の値を予測します。予測値は、指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

この関数は PromQL でサポートされています。 range_linear_regression も参照してください。

present_over_time

present_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上に少なくとも 1 つの元のサンプルが存在する場合は 1 を返します。それ以外の場合は空の結果を返します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。

quantile_over_time

quantile_over_time(phi, series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の phi 分位数を計算します。phi 値は範囲 [0...1] 内である必要があります。

この関数は PromQL でサポートされています。 quantiles_over_time も参照してください。

quantiles_over_time

quantiles_over_time("phiLabel", phi1, ..., phiN, series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の phi* 分位数を計算します。この関数は、各 phi* に対して個別の時系列を返し、ラベル {phiLabel="phi*"} が付加されます。phi* 値は範囲 [0...1] 内である必要があります。

quantile_over_time も参照してください。

range_over_time

range_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の値の範囲を計算します。例えば、max_over_time(series_selector[d]) - min_over_time(series_selector[d]) を計算します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

rate

rate(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の平均 1 秒あたりの増加率を計算します。series_selector は counter タイプの時系列を返すことが期待されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 irate および rollup_rate も参照してください。

rate_over_sum

rate_over_sum(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列の元のサンプルの合計の 1 秒あたりのレートを計算します。これらの計算は各時系列に対して個別に実行されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

resets

resets(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で、指定された シリーズセレクター から返された各時系列のカウンターリセット回数を返します。series_selector は counter タイプの時系列を返すことが期待されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。

rollup

rollup(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上の元のサンプルの minmaxavg 値を計算し、追加のラベル rollup="min"rollup="max"rollup="avg" を付けて時系列で返します。これらの値は、指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

オプションの第 2 引数 "min""max"、または "avg" を渡すと、1 つの計算結果のみを保持し、ラベルは追加されません。

rollup_candlestick

rollup_candlestick(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で openhighlowclose 値(OHLC としても知られる)を計算し、追加のラベル rollup="open"rollup="high"rollup="low"rollup="close" を付けて時系列で返します。これらの計算は、指定された シリーズセレクター から返された各時系列に対して個別に実行されます。この関数は金融アプリケーションに非常に便利です。

オプションの第 2 引数 "min""max"、または "avg" を渡すと、1 つの計算結果のみを保持し、ラベルは追加されません。

rollup_delta

rollup_delta(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で隣接する元のサンプル間の差を計算し、計算された差の minmaxavg 値を、追加のラベル rollup="min"rollup="max"rollup="avg" を付けて時系列で返します。これらの計算は、指定された シリーズセレクター から返された各時系列に対して個別に実行されます。

オプションの第 2 引数 "min""max"、または "avg" を渡すと、1 つの計算結果のみを保持し、ラベルは追加されません。

生成されたロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

rollup_increase も参照してください。

rollup_deriv

rollup_deriv(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で隣接する元のサンプルの 1 秒あたりの導関数を計算し、計算された 1 秒あたりの導関数の minmaxavg 値を、追加のラベル rollup="min"rollup="max"rollup="avg" を付けて時系列で返します。これらの計算は、指定された シリーズセレクター から返された各時系列に対して個別に実行されます。

オプションの第 2 引数 "min""max"、または "avg" を渡すと、1 つの計算結果のみを保持し、ラベルは追加されません。

生成されたロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

rollup_increase

rollup_increase(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で隣接する元のサンプル間の増加量を計算し、計算された増加量の minmaxavg 値を、追加のラベル rollup="min"rollup="max"rollup="avg" を付けて時系列で返します。これらの計算は、指定された シリーズセレクター から返された各時系列に対して個別に実行されます。

オプションの第 2 引数 "min""max"、または "avg" を渡すと、1 つの計算結果のみを保持し、ラベルは追加されません。

生成されたロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。 rollup_delta も参照してください。

rollup_rate

rollup_rate(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ内で隣接する元のサンプルの 1 秒あたりの変化率を計算し、計算された 1 秒あたりの変化率の minmaxavg 値を、追加のラベル rollup="min"rollup="max"rollup="avg" を付けて時系列で返します。

この記事 を参照して、rollup_rate() をいつ使用するかを理解してください。

オプションの第 2 引数 "min""max"、または "avg" を渡すと、1 つの計算結果のみを保持し、ラベルは追加されません。

これらの計算は、指定された シリーズセレクター から返された各時系列に対して実行されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

rollup_scrape_interval

rollup_scrape_interval(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ内で隣接する元のサンプル間の間隔(秒単位)を計算し、計算された間隔の minmaxavg 値を、追加のラベル rollup="min"rollup="max"rollup="avg" を付けて時系列で返します。

これらの計算は、指定された シリーズセレクター から返された各時系列に対して実行されます。

オプションの第 2 引数 "min""max"、または "avg" を渡すと、1 つの計算結果のみを保持し、ラベルは追加されません。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。 scrape_interval も参照してください。

scrape_interval

scrape_interval(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ内の元のサンプル間の平均間隔(秒単位)を計算します。指定された シリーズセレクター から返された各時系列ごとに計算されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

rollup_scrape_interval も参照してください。

share_gt_over_time

share_gt_over_time(series_selector[d], gt)ロールアップ関数 です。指定されたルックバックウィンドウ内で gt より大きい元のサンプルの割合(範囲 [0...1] 内)を返します。指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

この関数は SLI と SLO の計算に使用されます。例:share_gt_over_time(up[24h], 0) - 過去 24 時間のサービス可用性を返します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

share_le_over_time も参照してください。

share_le_over_time

share_le_over_time(series_selector[d], le)ロールアップ関数 です。指定されたルックバックウィンドウ内で le 以下の元のサンプルの割合(範囲 [0...1] 内)を返します。指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

この関数は SLI と SLO の計算に使用されます。例:share_le_over_time(memory_usage_bytes[24h], 100*1024*1024) は、過去 24 時間にメモリ使用量が 100MB 以下であった時系列値の割合を返します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

share_gt_over_time も参照してください。

stale_samples_over_time

stale_samples_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター に一致する各時系列の stale markers の数を計算します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

stddev_over_time

stddev_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター から返された各時系列の元のサンプルの標準偏差を計算します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 stdvar_over_time も参照してください。

stdvar_over_time

stdvar_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター から返された各時系列の元のサンプルの標準分散を計算します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 stddev_over_time も参照してください。

sum_over_time

sum_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター から返された各時系列の元のサンプル値の合計を計算します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。

sum2_over_time

sum2_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター から返された各時系列の元のサンプル値の二乗和を計算します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

timestamp

timestamp(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター から返された各時系列の最後の元のサンプルのタイムスタンプ(秒単位)を返します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 timestamp_with_name も参照してください。

timestamp_with_name

timestamp_with_name(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター から返された各時系列の最後の元のサンプルのタイムスタンプ(秒単位)を返します。

結果のロールアップのメトリクス名は保持されます。

timestamp も参照してください。

tfirst_over_time

tfirst_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター から返された各時系列の最初の元のサンプルのタイムスタンプ(秒単位)を返します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

first_over_time も参照してください。

tlast_change_over_time

tlast_change_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 内で、指定された シリーズセレクター から返された各時系列の最後の変更のタイムスタンプを返します。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

last_over_time も参照してください。

tlast_over_time

tlast_over_time(series_selector[d])ロールアップ関数 です。timestamp のエイリアスです。

tlast_change_over_time も参照してください。

tmax_over_time

tmax_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で最大値を持つ元のサンプルのタイムスタンプ(秒単位)を返します。指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

max_over_time も参照してください。

tmin_over_time

tmin_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上で最小値を持つ元のサンプルのタイムスタンプ(秒単位)を返します。指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

min_over_time も参照してください。

zscore_over_time

zscore_over_time(series_selector[d])ロールアップ関数 です。指定されたルックバックウィンドウ d 上の元のサンプルの z-score を返します。指定された シリーズセレクター から返された各時系列に対して個別に計算されます。

結果のロールアップからメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

zscore および range_trim_zscore も参照してください。

変換関数

変換関数は、ロールアップ結果 の変換を計算します。例えば、abs(delta(temperature[24h])) は、ロールアップから返された各時系列の各ポイントの絶対値を計算します。

追加の詳細:

  • 変換関数が直接 シリーズセレクター に適用された場合、変換の計算前に自動的に default_rollup() 関数が適用されます。例えば、abs(temperature) は暗黙的に abs(default_rollup(temperature[1i])) に変換されます。
  • すべての変換関数は、オプションの keep_metric_names 修飾子を受け入れます。設定されている場合、関数は結果の時系列からメトリクス名を削除しません。これらのドキュメントを参照してください。

暗黙的なクエリ変換 も参照してください。

サポートされている変換関数の一覧

abs

abs(q)変換関数 です。q によって返された各時系列の各ポイントの絶対値を計算します。

この関数は PromQL でサポートされています。

absent

absent(q)変換関数 です。q にポイントがない場合は 1 を返します。それ以外の場合は空の結果を返します。

この関数は PromQL でサポートされています。 absent_over_time も参照してください。

acos

acos(q)変換関数 です。q によって返された各時系列の各ポイントの 逆余弦 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 asin および cos も参照してください。

acosh

acosh(q)変換関数 です。q によって返された各時系列の各ポイントの 逆双曲線余弦 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 cosh も参照してください。

asin

asin(q)変換関数 です。q によって返された各時系列の各ポイントの 逆正弦 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 acos および sin も参照してください。

asinh

asinh(q)変換関数 です。q によって返された各時系列の各ポイントの 逆双曲線正弦 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 sinh も参照してください。

atan

atan(q)変換関数 です。q によって返された各時系列の各ポイントの 逆正接 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 tan も参照してください。

atanh

atanh(q)変換関数 です。q によって返された各時系列の各ポイントの 逆双曲線正接 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 tanh も参照してください。

bitmap_and

bitmap_and(q, mask)変換関数 です。q から返された各時系列の各ポイント v に対して、ビット演算 v & mask を計算します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

bitmap_or

bitmap_or(q, mask)変換関数 です。q から返された各時系列の各ポイント v に対して、ビット演算 v | mask を計算します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

bitmap_xor

bitmap_xor(q, mask)変換関数 です。q から返された各時系列の各ポイント v に対して、ビット演算 v ^ mask を計算します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

buckets_limit

buckets_limit(limit, buckets)変換関数 です。ヒストグラムバケット の数を指定された limit に制限します。

prometheus_buckets および histogram_quantile も参照してください。

ceil

ceil(q)変換関数 です。q によって返された各時系列の各ポイントを最も近い整数に切り上げます。

この関数は PromQL でサポートされています。 floor および round も参照してください。

clamp

clamp(q, min, max)変換関数 です。指定された min および max 値を使用して、q によって返された各時系列の各ポイントをクランプします。

この関数は PromQL でサポートされています。 clamp_min および clamp_max も参照してください。

clamp_max

clamp_max(q, max)変換関数 です。q によって返された各時系列の各ポイントを指定された max 値以下にクランプします。

この関数は PromQL でサポートされています。 clamp および clamp_min も参照してください。

clamp_min

clamp_min(q, min)変換関数 です。q によって返された各時系列の各ポイントを指定された min 値以上にクランプします。

この関数は PromQL でサポートされています。 clamp および clamp_max も参照してください。

cos

cos(q)変換関数 です。q によって返された各時系列の各ポイント v に対して cos(v) を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 sin も参照してください。

cosh

cosh(q)変換関数 です。q によって返された各時系列の各ポイントの 双曲線余弦 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 acosh も参照してください。

day_of_month

day_of_month(q)変換関数 です。q によって返された各時系列の各ポイントの月内の日付を返します。q は Unix タイムスタンプを返すことが期待されます。戻り値は範囲 [1...31] 内です。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。

day_of_week

day_of_week(q)変換関数 です。q によって返された各時系列の各ポイントの曜日を返します。q は Unix タイムスタンプを返すことが期待されます。戻り値は範囲 [0...6] 内で、0 は日曜日、6 は土曜日を示します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。

days_in_month

days_in_month(q)変換関数 です。q によって返された各時系列の各ポイントで識別される月の日数を返します。q は Unix タイムスタンプを返すことが期待されます。戻り値は範囲 [28...31] 内です。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。

deg

deg(q)変換関数 です。q によって返された各時系列の各ポイントをラジアンから度に変換します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 rad も参照してください。

end

end()変換関数 です。最後のポイントの Unix タイムスタンプ(秒単位)を返します。これは、/api/v1/query_range に渡される end クエリパラメータです。

starttimenow も参照してください。

exp

exp(q)変換関数 です。q によって返された各時系列の各ポイントに対して e^v を計算します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。 ln も参照してください。

floor

floor(q)変換関数 です。q によって返された各時系列の各ポイントを最も近い整数に切り捨てます。

この関数は PromQL でサポートされています。 ceil および round も参照してください。

histogram_avg

histogram_avg(buckets)変換関数 です。指定された buckets の平均値を計算します。複数の時系列にわたる指定された時間範囲の平均値の計算に使用できます。例えば、histogram_avg(sum(histogram_over_time(response_time_duration_seconds[5m])) by (vmrange,job)) は、過去 5 分間の各 job の平均応答時間を返します。

histogram_quantile

histogram_quantile(phi, buckets)変換関数 です。指定された ヒストグラムバケット 上の phi-パーセンタイル を計算します。phi は範囲 [0...1] 内である必要があります。例えば、histogram_quantile(0.5, sum(rate(http_request_duration_seconds_bucket[5m]) by (le)) は、過去 5 分間の全リクエストの中央リクエスト持続時間を返します。

この関数はオプションの第 3 引数 boundsLabel を受け入れます。この場合、指定された boundsLabel ラベルを持つ推定パーセンタイルの lower 境界と upper 境界を返します。詳細については、この問題を参照してください。

複数のヒストグラム上で パーセンタイル を計算する場合、すべての入力ヒストグラムは同じ境界を持つバケットを持っている必要があります。つまり、同じ le または vmrange ラベルセットを持っている必要があります。それ以外の場合、返される結果は無効になる可能性があります。詳細については、この問題を参照してください。

この関数は PromQL でサポートされています(boundLabel 引数を除く)。 histogram_quantileshistogram_sharequantile も参照してください。

histogram_quantiles

histogram_quantiles("phiLabel", phi1, ..., phiN, buckets)変換関数 です。指定された ヒストグラムバケット 上で指定された phi*-分位数を計算します。phi* 引数は範囲 [0...1] 内である必要があります。例えば、histogram_quantiles('le', 0.3, 0.5, sum(rate(http_request_duration_seconds_bucket[5m]) by (le))。計算された各分位数は、対応する {phiLabel="phi*"} ラベルを持つ個別の時系列で返されます。

histogram_quantile も参照してください。

histogram_share

histogram_share(le, buckets)変換関数 です。buckets 内で le 以下の割合(範囲 [0...1] 内)を計算します。この関数は SLI と SLO の計算に便利です。histogram_quantile の逆です。

この関数はオプションの第 3 引数 boundsLabel を受け入れます。この場合、指定された boundsLabel ラベルを持つ推定割合の lower 境界と upper 境界を返します。

histogram_stddev

histogram_stddev(buckets)変換関数 です。指定された buckets の標準偏差を計算します。

histogram_stdvar

histogram_stdvar(buckets)変換関数 です。複数の時系列にわたる指定された時間範囲の標準偏差の計算に使用でき、指定された buckets の標準分散を計算します。例えば、histogram_stdvar(sum(histogram_over_time(temperature[24])) by (vmrange,country)) は、過去 24 時間の各国の温度の標準偏差を返します。

hour

hour(q)変換関数 です。q によって返された各時系列の各ポイントの時間を返します。q は Unix タイムスタンプを返すことが期待されます。戻り値は範囲 [0...23] 内です。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。

interpolate

interpolate(q)変換関数 です。q から返された各時系列の前後の非空ポイントから計算された線形補間値を使用して、ギャップを埋めます。

keep_last_value および keep_next_value も参照してください。

keep_last_value

keep_last_value(q)変換関数 です。返された各時系列の最後の非空ポイントの値を使用してギャップを埋めます。

keep_next_value および interpolate も参照してください。

keep_next_value

keep_next_value(q)変換関数 です。返された各時系列の次の非空ポイントの値を使用してギャップを埋めます。

keep_last_value および interpolate も参照してください。

limit_offset

limit_offset(limit, offset, q)変換関数 です。q から返された offset 個の時系列をスキップし、その後、各グループに対して最大 limit 個の残りの時系列を返します。

これにより、q の時系列に対する単純なページネーションが可能になります。 limitk も参照してください。

ln

ln(q)変換関数 です。q によって返された各時系列の各ポイントに対して ln(v) を計算します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。 exp および log2 も参照してください。

log2

log2(q)変換関数 です。q によって返された各時系列の各ポイントに対して log2(v) を計算します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。 log10 および ln も参照してください。

log10

log10(q)変換関数 です。q によって返された各時系列の各ポイントに対して log10(v) を計算します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。 log2 および ln も参照してください。

minute

minute(q)変換関数 です。q によって返された各時系列の各ポイントの分を返します。q は Unix タイムスタンプを返すことが期待されます。戻り値は範囲 [0...59] 内です。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。

month

month(q)変換関数 です。q によって返された各時系列の各ポイントの月を返します。q は Unix タイムスタンプを返すことが期待されます。戻り値は範囲 [1...12] 内で、1 は 1 月、12 は 12 月を示します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。

now

now()変換関数 です。現在のタイムスタンプを秒単位で浮動小数点値として返します。

time も参照してください。

pi

pi()変換関数 です。 円周率 を返します。

PromQL でサポートされています。

rad

rad(q)変換関数 です。q によって返された各時系列の各ポイントを度からラジアンに変換します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。 deg も参照してください。

prometheus_buckets

prometheus_buckets(buckets)変換関数 です。vmrange ラベルを持つ VictoriaMetrics ヒストグラムバケット を、le ラベルを持つ Prometheus ヒストグラムバケットに変換します。

histogram_quantile および buckets_limit も参照してください。

rand

rand(seed)変換関数 です。一様分布で範囲 [0...1] の疑似乱数を返します。オプションの seed は疑似乱数生成器のシードとして使用できます。

rand_normal および rand_exponential も参照してください。

rand_exponential

rand_exponential(seed)変換関数 です。指数分布 に従う疑似乱数を返します。オプションの seed は疑似乱数生成器のシードとして使用できます。

rand および rand_normal も参照してください。

rand_normal

rand_normal(seed)変換関数 です。正規分布 に従う疑似乱数を返します。オプションの seed は疑似乱数生成器のシードとして使用できます。

rand および rand_exponential も参照してください。

range_avg

range_avg(q)変換関数 です。q によって返された各時系列のポイントの平均値を計算します。

range_first

range_first(q)変換関数 です。q によって返された各時系列の最初のポイントの値を返します。

range_last

range_last(q)変換関数 です。q によって返された各時系列の最後のポイントの値を返します。

range_linear_regression

range_linear_regression(q)変換関数 です。選択された時間範囲内で、q によって返された各時系列の 単純線形回帰 を計算します。この関数は容量計画と予測に便利です。

range_mad

range_mad(q)変換関数 です。q によって返された各時系列のポイント間の 中央絶対偏差 を計算します。

mad および mad_over_time も参照してください。

range_max

range_max(q)変換関数 です。q によって返された各時系列のポイント間の最大値を計算します。

range_median

range_median(q)変換関数 です。q によって返された各時系列のポイント間の中央値を計算します。

range_min

range_min(q)変換関数 です。q によって返された各時系列のポイント間の最小値を計算します。

range_normalize

range_normalize(q1, ...)変換関数 です。q1,... によって返された時系列の値を範囲 [0...1] に正規化します。この関数は、異なる値範囲を持つ時系列を関連付けるのに便利です。

share も参照してください。

range_quantile

range_quantile(phi, q)変換関数 です。q によって返された各時系列の phi 分位数を返します。phi は範囲 [0...1] 内である必要があります。

range_stddev

range_stddev(q)変換関数 です。選択された時間範囲内で、q によって返された各時系列の 標準偏差 を計算します。

range_stdvar

range_stdvar(q)変換関数 です。選択された時間範囲内で、q によって返された各時系列の 標準分散 を計算します。

range_sum

range_sum(q)変換関数 です。q によって返された各時系列のポイントの合計を計算します。

range_trim_outliers

range_trim_outliers(k, q)変換関数 です。range_median(q) から k*range_mad(q) よりも遠いポイントを削除します。例えば、以下のクエリと同等です:q ifnot (abs(q - range_median(q)) > k*range_mad(q))

range_trim_spikes および range_trim_zscore も参照してください。

range_trim_spikes

range_trim_spikes(phi, q)変換関数 です。q によって返された時系列から、最大の phi パーセンテージのスパイクを削除します。phi は範囲 [0..1] 内である必要があります。00%1100% を示します。

range_trim_outliers および range_trim_zscore も参照してください。

range_trim_zscore

range_trim_zscore(z, q)変換関数 です。range_avg(q) から z*range_stddev(q) よりも遠いポイントを削除します。例えば、以下のクエリと同等です:q ifnot (abs(q - range_avg(q)) > z*range_avg(q))

range_trim_outliers および range_trim_spikes も参照してください。

range_zscore

range_zscore(q)変換関数 です。q によって返されたポイントの z-score を計算します。例えば、以下のクエリと同等です:(q - range_avg(q)) / range_stddev(q)

remove_resets

remove_resets(q)変換関数 です。q によって返された時系列からカウンターリセットを削除します。

round

round(q, nearest)変換関数 です。q によって返された各時系列の各ポイントを nearest の倍数に丸めます。nearest が省略された場合、最も近い整数に丸められます。

この関数は PromQL でサポートされています。 floor および ceil も参照してください。

ru

ru(free, max)変換関数 です。指定された free リソースと max リソースから、範囲 [0%...100%] 内のリソース使用率を計算します。例えば、ru(node_memory_MemFree_bytes, node_memory_MemTotal_bytes)node_exporter メトリクスのメモリ使用率を返します。

running_avg

running_avg(q)変換関数 です。q によって返された各時系列の実行平均を計算します。

running_max

running_max(q)変換関数 です。q によって返された各時系列の実行最大値を計算します。

running_min

running_min(q)変換関数 です。q によって返された各時系列の実行最小値を計算します。

running_sum

running_sum(q)変換関数 です。q によって返された各時系列の実行合計を計算します。

scalar

scalar(q)変換関数 です。q が単一の時系列のみを含む場合、q を返します。それ以外の場合は何も返しません。

この関数は PromQL でサポートされています。

sgn

sgn(q)変換関数 です。q によって返された各時系列の各ポイントに対して、v > 0 の場合は 1v < 0 の場合は -1v == 0 の場合は 0 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は PromQL でサポートされています。

sin

sin(q)変換関数 です。q によって返された各時系列の各ポイント v に対して sin(v) を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は MetricsQL でサポートされています。 cos も参照してください。

sinh

sinh(q)変換関数 です。q によって返された各時系列の各ポイントの 双曲線正弦 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は MetricsQL でサポートされています。 cosh も参照してください。

tan

tan(q)変換関数 です。q によって返された各時系列の各ポイント v に対して tan(v) を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は MetricsQL でサポートされています。 atan も参照してください。

tanh

tanh(q)変換関数 です。q によって返された各時系列の各ポイントの 双曲線正接 を返します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

この関数は MetricsQL でサポートされています。 atanh も参照してください。

smooth_exponential

smooth_exponential(q, sf)変換関数 です。指定された平滑化係数 sf を使用して、q によって返された各時系列のポイントを平滑化します。

sort

sort(q)変換関数 です。q によって返された各時系列の最後のポイントの昇順で系列をソートします。

この関数は PromQL でサポートされています。 sort_desc および sort_by_label も参照してください。

sort_desc

sort_desc(q)変換関数 です。q によって返された各時系列の最後のポイントの降順でソートします。

PromQL でサポートされています。 sort および sort_by_label も参照してください。

sqrt

sqrt(q)変換関数 です。q によって返された各時系列の各ポイントの平方根を計算します。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。

start

start()変換関数 です。最初のポイントの Unix タイムスタンプ(秒単位)を返します。

これは、/api/v1/query_range に渡される start クエリパラメータです。

endtimenow も参照してください。

step

step()変換関数 です。ポイント間のステップ幅(間隔)(秒単位)を返します。これは、/api/v1/query_range に渡される step クエリパラメータです。

start および end も参照してください。

time

time()変換関数 です。各返されるポイントの Unix タイムスタンプを返します。

PromQL でサポートされています。 nowstartend も参照してください。

timezone_offset

timezone_offset(tz)変換関数 です。UTC に対する指定されたタイムゾーン tz のオフセット(秒単位)を返します。これは、日時関連の関数と組み合わせて使用すると便利です。例えば、day_of_week(time()+timezone_offset("America/Los_Angeles")) は、America/Los_Angeles タイムゾーンの曜日を返します。

特別な Local タイムゾーンを使用して、VictoriaMetrics が実行されているホストに設定されたタイムゾーンのオフセットを返すことができます。

サポートされているタイムゾーンのリスト を参照してください。

ttf

ttf(free)変換関数 です。free リソースを使い果たすまでの時間(秒単位)を推定します。例えば、ttf(node_filesystem_avail_byte) はストレージ容量を使い果たすまでの時間を返します。この関数は容量計画に役立つ可能性があります。

union

union(q1, ..., qN)変換関数 です。q1、...、qN から返された時系列の和集合を返します。union 関数名は省略できます。以下のクエリは同等です:union(q1, q2)(q1, q2)

q* クエリは、一意のラベルセットを持つ時系列を返すことが期待されます。そうでない場合、同じラベルセットを持つ系列のうち最初の時系列のみが返されます。各 q* クエリに一意のラベルセットを提供するには、alias および label_set 関数を使用します。

vector

vector(q)変換関数 です。q を返します。MetricsQL では何もしません。

PromQL でサポートされています。

year

year(q)変換関数 です。q によって返された各時系列の各ポイントの年を返します。q は Unix タイムスタンプを返すことが期待されます。

結果の系列からメトリクス名が削除されます。メトリクス名を保持するには、keep_metric_names 修飾子を追加してください。

PromQL でサポートされています。

ラベル操作関数

ラベル操作関数は、選択された ロールアップ結果 に対してラベル操作を実行するために使用されます。

その他の詳細:

  • ラベル操作関数が直接 シリーズセレクター に適用された場合、ラベル変換の実行前に自動的に default_rollup() 関数が適用されます。例えば、alias(temperature, "foo") は暗黙的に alias(default_rollup(temperature[1i]), "foo") に変換されます。

暗黙的なクエリ変換 も参照してください。

サポートされているラベル操作関数の一覧

alias

alias(q, "name") は、q のすべての時系列に指定された name を設定する ラベル操作関数 です。例えば、alias(up, "foobar")up 系列を foobar 系列にリネームします。

drop_common_labels

drop_common_labels(q1, ...., qN) は、q1, ..., qN から返された時系列から共通の label="value" ペアを削除する ラベル操作関数 です。

label_copy

label_copy(q, "src_label1", "dst_label1", ..., "src_labelN", "dst_labelN") は、src_label* のラベル値を q によって返されたすべての時系列の dst_label* にコピーする ラベル操作関数 です。src_label が空の場合、対応する dst_label は変更されません。

label_del

label_del(q, "label1", ..., "labelN") は、q によって返されたすべての時系列から指定された label* を削除する ラベル操作関数 です。

label_join

label_join(q, "dst_label", "separator", "src_label1", ..., "src_labelN") は、src_label* の値を指定された separator で連結し、結果を dst_label に格納する ラベル操作関数 です。これは q によって返された各時系列に対して個別に実行されます。例えば、label_join(up{instance="xxx",job="yyy"}, "foo", "-", "instance", "job") は、xxx-yyy というラベル値を foo ラベルに格納します。

この関数は PromQL でサポートされています。

label_keep

label_keep(q, "label1", ..., "labelN") は、q によって返されたすべての時系列から、リストされた label* ラベルのみを保持し、その他をすべて削除する ラベル操作関数 です。

label_lowercase

label_lowercase(q, "label1", ..., "labelN") は、q によって返されたすべての時系列において、指定された label* ラベルの値を小文字に変換する ラベル操作関数 です。

label_map

label_map(q, "label", "src_value1", "dst_value1", ..., "src_valueN", "dst_valueN") は、q によって返されたすべての時系列の label 値を src_* から dst* にマッピングする ラベル操作関数 です。

label_match

label_match(q, "label", "regexp") は、指定された regexp に一致しない label を持つ時系列を q から削除する ラベル操作関数 です。この関数は、各入力系列に対して複数の時系列を返す可能性がある Rollup のような関数の後に便利です。

label_mismatch も参照してください。

label_mismatch

label_mismatch(q, "label", "regexp") は、指定された regexp に一致する label を持つ時系列を q から削除する ラベル操作関数 です。この関数は、各入力系列に対して複数の時系列を返す可能性がある Rollup のような関数の後に便利です。

label_match も参照してください。

label_move

label_move(q, "src_label1", "dst_label1", ..., "src_labelN", "dst_labelN") は、src_label* のラベル値を q によって返されたすべての時系列の dst_label* に移動する ラベル操作関数 です。src_label が空の場合、対応する dst_label は変更されません。

label_replace

label_replace(q, "dst_label", "replacement", "src_label", "regex") は、指定された regexsrc_label に適用し、regexsrc_label に一致した場合に replacementdst_label に格納する ラベル操作関数 です。replacement には、$1$2 などの正規表現キャプチャグループへの参照を含めることができます。これらの参照は、対応する正規表現キャプチャに置き換えられます。例えば、label_replace(up{job="node-exporter"}, "foo", "bar-$1", "job", "node-(.+)") は、bar-exporter というラベル値を foo ラベルに格納します。

この関数は PromQL でサポートされています。

label_set

label_set(q, "label1", "value1", ..., "labelN", "valueN") は、q によって返されたすべての時系列に {label1="value1", ..., labelN="valueN"} ラベルを設定する ラベル操作関数 です。

label_transform

label_transform(q, "label", "regexp", "replacement") は、指定された label 内のすべての regexp の出現を指定された replacement に置き換える ラベル操作関数 です。

label_uppercase

label_uppercase(q, "label1", ..., "labelN") は、q によって返されたすべての時系列において、指定された label* ラベルの値を大文字に変換する ラベル操作関数 です。

label_lowercase も参照してください。

label_value

label_value(q, "label") は、q によって返された各時系列に対して、指定された label の数値を取得する ラベル操作関数 です。

例えば、label_value(foo, "bar")foo{bar="1.234"} に適用された場合、値 1.234 を持つ時系列 foo{bar="1.234"} を返します。数値以外のラベル値の場合、関数はデータを返しません。

sort_by_label

sort_by_label(q, label1, ... labelN) は、指定されたラベルセットで昇順に系列をソートする ラベル操作関数 です。例えば、sort_by_label(foo, "bar") は、foo 系列をラベル bar の値でソートします。

sort_by_label_desc および sort_by_label_numeric も参照してください。

sort_by_label_desc

sort_by_label_desc(q, label1, ... labelN) は、指定されたラベルセットで降順に系列をソートする ラベル操作関数 です。例えば、sort_by_label(foo, "bar") は、foo 系列をラベル bar の値でソートします。

sort_by_label および sort_by_label_numeric_desc も参照してください。

sort_by_label_numeric

sort_by_label_numeric(q, label1, ... labelN) は、数値ソート を使用して、指定されたラベルセットで昇順に系列をソートする ラベル操作関数 です。例えば、foo 系列が 1101152 という値を持つ bar ラベルを持つ場合、sort_by_label_numeric(foo, "bar") は、bar ラベル値の順序 1215101 で系列を返します。

sort_by_label_numeric_desc および sort_by_label も参照してください。

sort_by_label_numeric_desc

sort_by_label_numeric_desc(q, label1, ... labelN) は、数値ソート を使用して、指定されたラベルセットで降順に系列をソートする ラベル操作関数 です。例えば、foo 系列が 1101152 という値を持つ bar ラベルを持つ場合、sort_by_label_numeric(foo, "bar") は、bar ラベル値の順序 1011521 で系列を返します。

sort_by_label_numeric および sort_by_label_desc も参照してください。

集約関数

集約関数は、ロールアップ結果 のグループの集約を計算します。

追加の詳細:

  • デフォルトでは、単一のグループを使用して集約が行われます。by および without 修飾子でグループ化ラベルを指定することにより、複数の独立したグループを設定できます。例えば、count(up) by (job) は、ロールアップ結果job ラベル値でグループ化し、各グループ内で count 集約関数を個別に計算します。一方、count(up) without (instance) は、count 集約関数を計算する前に、ロールアップ結果instance 以外のすべてのラベルでグループ化します。by および without 修飾子には複数のラベルを指定できます。
  • 集約関数が直接 シリーズセレクター に適用された場合、集約の計算前に自動的に default_rollup() 関数が適用されます。例えば、count(up) は暗黙的に count(default_rollup(up[1i])) に変換されます。
  • 集約関数は任意の数の引数を受け取ります。例えば、avg(q1, q2, q3)q1q2q3 の各ポイントの平均値を返します。
  • 集約関数は、オプションの limit N サフィックスをサポートし、出力グループの数を制限するために使用できます。例えば、sum(x) by (y) limit 3 は、集約されたグループ数を 3 に制限します。その他のグループはすべて無視されます。

暗黙的なクエリ変換 も参照してください。

サポートされている集約関数の一覧

any

any(q) by (group_labels)集約関数 です。q から返された時系列から、各 group_labels に対して 1 つの系列を返します。

group も参照してください。

avg

avg(q) by (group_labels)集約関数 です。q の時系列の各 group_labels に対する平均値を返します。集約は、同じタイムスタンプを持つポイントのグループごとに個別に計算されます。

この関数は PromQL でサポートされています。

bottomk

bottomk(k, q)集約関数 です。q のすべての時系列から、最小値を持つ k 個のポイントを返します。集約は、同じタイムスタンプを持つポイントのグループごとに個別に計算されます。

この関数は PromQL でサポートされています。 topk も参照してください。

bottomk_avg

bottomk_avg(k, q, "other_label=other_value")集約関数 です。q の中で平均値が最小の k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、bottomk_avg(3, sum(process_resident_memory_bytes) by (job), "job=other") は、平均値が最小の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

topk_avg も参照してください。

bottomk_last

bottomk_last(k, q, "other_label=other_value")集約関数 です。q の中で最後の値が最小の k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、bottomk_max(3, sum(process_resident_memory_bytes) by (job), "job=other") は、最大値が最小の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

topk_last も参照してください。

bottomk_max

bottomk_max(k, q, "other_label=other_value")集約関数 です。q の中で最大値が最小の k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、bottomk_max(3, sum(process_resident_memory_bytes) by (job), "job=other") は、最大値が最小の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

topk_max も参照してください。

bottomk_median

bottomk_median(k, q, "other_label=other_value")集約関数 です。q の中で中央値が最小の k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、bottomk_median(3, sum(process_resident_memory_bytes) by (job), "job=other") は、中央値が最小の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

topk_median も参照してください。

bottomk_min

bottomk_min(k, q, "other_label=other_value")集約関数 です。q の中で最小値が最小の k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、bottomk_min(3, sum(process_resident_memory_bytes) by (job), "job=other") は、最小値が最小の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

topk_min も参照してください。

count

count(q) by (group_labels)集約関数 です。q の非空ポイントの各 group_labels に対する数を返します。集約は、同じタイムスタンプを持つポイントのグループごとに個別に計算されます。

この関数は PromQL でサポートされています。

count_values

count_values("label", q)集約関数 です。同じ値を持つポイントの数をカウントし、各初期値を持つ追加の label を持つ時系列にカウントを格納します。集約は、同じタイムスタンプを持つポイントのグループごとに個別に計算されます。

この関数は PromQL でサポートされています。

distinct

distinct(q)集約関数 です。同じタイムスタンプを持つ各グループの一意の値の数を計算します。

geomean

geomean(q)集約関数 です。同じタイムスタンプを持つ各グループの幾何平均を計算します。

group

group(q) by (group_labels)集約関数 です。q によって返された時系列の各 group_labels に対して 1 を返します。

この関数は PromQL でサポートされています。 any も参照してください。

histogram

histogram(q) は集約関数です。同じタイムスタンプを持つ各ポイントグループに対して、VictoriaMetrics ヒストグラムを計算します。大量の時系列をヒートマップで可視化するために使用されます。詳細については、この記事を参照してください。

histogram_over_time および histogram_quantile も参照してください。

limitk

limitk(k, q) by (group_labels) は集約関数です。各 group_labels 内で q によって返された時系列から、最大 k 個の時系列を返します。返される時系列のセットは、呼び出し間で一定です。

limit_offset も参照してください。

mad

mad(q) by (group_labels) は集約関数です。q によって返されたすべての時系列の各 group_labels に対する中央絶対偏差を計算します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

range_madmad_over_timeoutliers_madstddev も参照してください。

max

max(q) by (group_labels) は集約関数です。q によって返されたすべての時系列の各 group_labels に対する最大値を返します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

PromQL でサポートされています。

median

median(q) by (group_labels) は集約関数です。q によって返されたすべての時系列の各 group_labels に対する中央値を返します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

min

min(q) by (group_labels) は集約関数です。q によって返されたすべての時系列の各 group_labels に対する最小値を返します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

PromQL でサポートされています。

mode

mode(q) by (group_labels) は集約関数です。q によって返されたすべての時系列の各 group_labels に対する最頻値を返します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

outliers_mad

outliers_mad(tolerance, q) は集約関数です。q の中で、中央絶対偏差(MAD)× tolerance の範囲外に少なくとも 1 つのポイントを持つ時系列を返します。例えば、median(q)-mad(q) より低い、または median(q)+mad(q) より高いポイントを少なくとも 1 つ持つ時系列を返します。

outliersk および mad も参照してください。

outliersk

outliersk(k, q) は集約関数です。q によって返された時系列から、最大の標準偏差(つまり外れ値)を持つ最大 k 個の時系列を返します。

outliers_mad も参照してください。

quantile

quantile(phi, q) by (group_labels) は集約関数です。q によって返されたすべての時系列の各 group_labels に対する phi 分位数を計算します。phi は範囲 [0...1] 内である必要があります。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

PromQL でサポートされています。 quantiles および histogram_quantile も参照してください。

quantiles

quantiles("phiLabel", phi1, ..., phiN, q) は集約関数です。q によって返されたすべての時系列の phi* 分位数を計算し、{phiLabel="phi*"} ラベルを持つ時系列で返します。phi* は範囲 [0...1] 内である必要があります。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

quantile も参照してください。

share

share(q) by (group_labels) は集約関数です。各タイムスタンプの各非負ポイントに対して、範囲 [0..1] 内の割合を返し、各 group_labels の割合の合計が 1 になるようにします。

この関数は、ヒストグラムバケット の割合を範囲 [0..1] に正規化するために使用されます:

share(
  sum(
    rate(http_request_duration_seconds_bucket[5m])
  ) by (le, vmrange)
)

range_normalize も参照してください。

stddev

stddev(q) by (group_labels)集約関数 です。q によって返されたすべての時系列の各 group_labels に対する標準偏差を計算します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

この関数は PromQL でサポートされています。

stdvar

stdvar(q) by (group_labels)集約関数 です。q によって返されたすべての時系列の各 group_labels に対する標準分散を計算します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

この関数は PromQL でサポートされています。

sum

sum(q) by (group_labels)集約関数 です。q によって返されたすべての時系列の各 group_labels に対する合計を返します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

この関数は PromQL でサポートされています。

sum2

sum2(q) by (group_labels)集約関数 です。q によって返されたすべての時系列の各 group_labels に対する二乗和を計算します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

topk

topk(k, q)集約関数 です。q によって返されたすべての時系列から、最大値を持つ上位 k 個のポイントを返します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。

この関数は PromQL でサポートされています。 bottomk も参照してください。

topk_avg

topk_avg(k, q, "other_label=other_value")集約関数 です。q の中で平均値が最大の上位 k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、topk_avg(3, sum(process_resident_memory_bytes) by (job), "job=other") は、平均値が最大の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

bottomk_avg も参照してください。

topk_last

topk_last(k, q, "other_label=other_value")集約関数 です。q の中で最後の値が最大の上位 k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、topk_max(3, sum(process_resident_memory_bytes) by (job), "job=other") は、最大値が最大の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

bottomk_last も参照してください。

topk_max

topk_max(k, q, "other_label=other_value")集約関数 です。q の中で最大値が最大の上位 k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、topk_max(3, sum(process_resident_memory_bytes) by (job), "job=other") は、最大値が最大の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

bottomk_max も参照してください。

topk_median

topk_median(k, q, "other_label=other_value")集約関数 です。q の中で中央値が最大の上位 k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、topk_median(3, sum(process_resident_memory_bytes) by (job), "job=other") は、中央値が最大の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

bottomk_median も参照してください。

topk_min

topk_min(k, q, "other_label=other_value")集約関数 です。q の中で最小値が最大の上位 k 個の時系列を返します。オプションの other_label=other_value 引数が設定されている場合、残りの時系列の合計と指定されたラベルを返します。例えば、topk_min(3, sum(process_resident_memory_bytes) by (job), "job=other") は、最小値が最大の 3 つの時系列と、残りをすべて含む {job="other"} ラベルを持つ時系列を返します。

bottomk_min も参照してください。

zscore

zscore(q) by (group_labels)集約関数 です。q によって返されたすべての時系列の各 group_labels に対する z-score 値を返します。集約は、同じタイムスタンプを持つ各ポイントグループに対して個別に計算されます。この関数は、関連する時系列グループ内の外れ値を検出するために使用されます。

zscore_over_time および range_trim_zscore も参照してください。

サブクエリ

MetricsQL は PromQL サブクエリをサポートし、拡張しています。詳細については、この記事 を参照してください。シリーズセレクター の形式ではない ロールアップ関数 は、すべてサブクエリを形成します。複数層のロールアップ関数は、暗黙的なクエリ変換 によって暗黙的に変換される場合があります。例えば、delta(sum(m)) は暗黙的に delta(sum(default_rollup(m[1i]))[1i:1i]) に変換されるため、ネストされた default_rollupdelta を含むサブクエリになります。

MetricsQL は以下のようにサブクエリを実行します。

  • 外部ロールアップ関数の step 値を使用して、内部ロールアップ関数を計算します。例えば、式 max_over_time(rate(http_requests_total[5m])[1h:30s]) の場合、内部関数 rate(http_requests_total[5m])step=30s で計算されます。計算結果のデータポイントは step に揃えられます。
  • フロントエンドから渡された step 値を使用して、内部ロールアップ関数の結果に対して外部ロールアップ関数を計算します。

暗黙的なクエリ変換

計算を開始する前に、MetricsQL は入力クエリに対して以下の暗黙的な変換を実行します。

  • ロールアップ関数 内で角括弧内のルックバックウィンドウが欠落している場合、自動的に [1i] が追加されます。[1i] は、/api/v1/query_range に渡される step 値を示します。Grafana では $__interval とも呼ばれます。例えば、rate(http_requests_count) は自動的に rate(http_requests_count[1i]) に変換されます。

  • ロールアップ関数でラップされていないすべてのシリーズセレクターは、自動的に default_rollup 関数でラップされます。例えば:

    • foodefault_rollup(foo[1i]) に変換されます。
    • foo + bardefault_rollup(foo[1i]) + default_rollup(bar[1i]) に変換されます。
    • count(up)count(default_rollup(up[1i])) に変換されます。countロールアップ関数 ではなく、集約関数 だからです。
    • abs(temperature)abs(default_rollup(temperature[1i])) に変換されます。absロールアップ関数 ではなく、変換関数 だからです。
  • サブクエリ 内で角括弧内の step が欠落している場合、自動的に 1i ステップが追加されます。例えば、avg_over_time(rate(http_requests_total[5m])[1h]) は自動的に avg_over_time(rate(http_requests_total[5m])[1h:1i]) に変換されます。

  • ロールアップ関数シリーズセレクター 以外が渡された場合、自動的に 1i ルックバックウィンドウと 1i ステップを持つ サブクエリ が形成されます。例えば、rate(sum(up)) は自動的に rate((sum(default_rollup(up[1i])))[1i:1i]) に変換されます。

フィードバック

このページは役に立ちましたか?