Member-only story
Thanosによるマルチクラスタ監視(後半)
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の外部ラベル…