histogram_quantile() - Prometheusドキュメント

このページはPrometheus公式ドキュメント和訳+αの一部です。

histogram_quantile()

histogram_quantile(φ float, b instant-vector)は、ヒストグラムバケットbからφ分位数(0 ≤ φ ≤ 1)を計算する (φ分位数とヒストグラムの一般的な使い方の詳細な説明はヒストグラムとサマリーを参照すること)。bの値は、各バケットに入る観測値の数である。 各バケットには、バケットの上限を表す値を持つラベルleがなければならない(そういうラベルがない値は無視される)。 メトリック型ヒストグラムは、_bucketサフィックスに持つ時系列と適切なラベルを提供する。

分位数の計算のためのタイムウインドウを指定するために関数rate()を利用すること。

例として、ヒストグラムのメトリックがhttp_request_duration_secondsだとする。 過去10分間のリクエスト持続時間の90パーセンタイルを計算するために以下の式を用いる。

histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m]))

分位数は、http_request_duration_secondsのラベルの組み合わせそれぞれに対して計算される。 集約するためには、sum()を使ってrate()の結果を囲む。 leラベルは、histogram_quantile()に必要なので、byの中に含めなければならない。 以下の式は、90パーセンタイルをjobごとに集約する。

histogram_quantile(0.9, sum(rate(http_request_duration_seconds_bucket[10m])) by (job, le))

全て集約するためには、leラベルのみを指定する。

histogram_quantile(0.9, sum(rate(http_request_duration_seconds_bucket[10m])) by (le))

histogram_quantile()は、バケット内が線形に分布していると仮定して分位数の値を補間する。 一番大きいバケットは、上限が+Infでなければならない(そうでなければ、NaNが返される)。 分位数が一番大きいバケットに位置している場合、2番目に大きいバケットの上限が返される。 一番小さいバケットの下限は、そのバケットの上限が0より大きければ、0と仮定される。 その場合、そのバケット内では通常の線形補間が適用される。 そうでない場合、一番小さいバケットに位置している分位数に対して一番小さいバケットの上限が返される。

bバケットが2つより少ない場合、NaNが返される。 φ < 0に対しては、-Infが返される。 φ > 1に対しては、+Infが返される。

参考リンク

おすすめ書籍

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 Prometheus ―インフラとアプリケーションのパフォーマンスモニタリング

入門 監視 ―モダンなモニタリングのためのデザインパターン

入門 監視 ―モダンなモニタリングのためのデザインパターン

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム

和訳活動の支援

Prometheusドキュメント和訳が役に立った方は、以下QRコードからPayPayで活動を支援して頂けるとありがたいです。

PayPayによる支援用QRコード
上のQRコードからPayPayによる支援