Google Cloud Managed Service for Prometheus の PromQL クエリは、Monitoring Query Language(MQL)を使用して Monarch バックエンドで部分的に評価されます。クエリ結果には違いがいくつかあります。このドキュメントでは、その違いについて説明します。
このドキュメントに記載されている違いを除き、Managed Service for Prometheus の PromQL は Prometheus バージョン 2.44 で利用可能な PromQL と同等です。
新しい PromQL 関数
Prometheus バージョン 2.44 より後に追加された PromQL 関数はサポートされません。
指標名の一致
指標名の完全一致のみがサポートされています。
未更新
未更新は Monarch バックエンドでサポートされていません。
irate
の計算
irate
関数のルックバック ウィンドウがステップサイズよりも小さい場合、ステップサイズに合わせてウィンドウが大きくなります。MQL では、すべての入力データが出力で完全に無視されないようにするため、この変更が必要になります。この違いは rate
の計算にも適用されます。
rate
と increase
の計算
rate
関数のルックバック ウィンドウがステップサイズよりも小さい場合、ステップサイズに合わせてウィンドウが大きくなります。MQL では、すべての入力データが出力で完全に無視されないようにするため、この変更が必要になります。この違いは irate
の計算にも適用されます。
補間計算と外挿計算に違いがあります。Monarch では Prometheus とは異なる補間アルゴリズムが使用されるため、この違いによってわずかに異なる結果が生じる可能性があります。たとえば、Monarch カウンタのサンプルは、Prometheus が使用している単一のタイムスタンプではなく、時間範囲で保存されます。したがって、Prometheus のタイムスタンプは除外されますが、Monarch のカウンタ サンプルはレート計算に含めることができます。これによって、通常はより正確なレートの結果が得られます。特に、基になる時系列の開始位置または終了位置をまたいでクエリする際により正確な結果が得られます。
histogram_quantile
の計算
サンプルのないヒストグラムに対する PromQL の histogram_quantile
計算では、NaN 値が生成されます。MQL の計算では値を生成しません。つまり、MQL はタイムスタンプの時点のポイントをドロップします。
レートの計算の違いは、histogram_quantile
クエリへの入力にも影響します。
特定の型の関数を異なる型の指標に対して実行する場合
アップストリームの Prometheus では弱い型付けが使用されるのに対し、Monarch では強い型付けが使用されます。そのため、ある特定の型の関数を、異なる型の指標に対して実行する場合(たとえば、GAUGE 指標に対して rate()
を実行する場合や、COUNTER または型指定なしの指標に対して histogram_quantile()
を実行する場合など)、それらの関数はアップストリームの Prometheus では機能しますが、Managed Service for Prometheus では機能しません。