Member-only story

Thanosによるマルチクラスタ監視(後半)

gavin.zhou
7 min readJun 29, 2020

--

METRIC QUERY FLOW

次の図は、「クエリの寿命」を示しています。

1. PromQL クエリが Querier にポストされる

2. それがクエリを解釈し、プレフィルタに行く

3. クエリは、ラベルと時間範囲の要件に基づいて、保存、Prometheusesまたは他のクエリのためのそのリクエストをファンアウトする

4. クエリは、StoreAPIメッセージの送受信のみを行う

5. すべてのリスポンスを収集した後、それらをマージして重複排除する(有効になっている場合)

6. その後、ユーザーのためにシリーズを送り返す

TIME-BASED PARTITIONING

デフォルトでは、Thanosのストアゲートウェイは、オブジェクトストア内のすべてのデータを参照して、クエリの時間範囲に基づいてそれを返します。

しかし、大量のデータがあれば、水平方向にスケールすることができます。はじめの最も分かりやすいオプションは、時間ベースのパーティショニングを使用することです。すべてのStoreAPI ソースは、利用可能な最小時間と最大時間、および到達可能な系列に関連するラベルを表示しています。パラメータを使用して、これらの引数を微調整して、このパーティションの範囲を狭くし、より小さくして負荷のバランスを取ることができます。このパラメータは、具体的な日付と同様に相対時間で指定することができます。

3つのStoreサーバを使用したセットアップの例は次のようになります。

  • A: max-time=-6w
  • B: min-time=-8w and max-time=-2w
  • C: min-time=-3w

注意: フィルタリングはチャンクのレベルで行われるので、Thanos’ Store は — min-time と — max-timeの外にあるサンプルを返すかもしれません。

ご覧のように、重複範囲を設定することで冗長性を高めることができます。Thanos Querierは、時系列の重複を一緒にマージすることで処理します。

LABEL-BASED PARTITIONING

ラベルベースのパーティショニングは時間ベースのパーティショニングに似ていますが、時間をシャーディングのキーとして使うのではなく、ラベルを使います。これらのラベルは、Prometheusの外部ラベル…

--

--

No responses yet