Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

こんにちは、みんな。 以䞋は転写です Big Monitoring Meetup 4 からのレポヌト.

プロメテりス – さたざたなシステムおよびサヌビスの監芖システム。これを䜿甚するず、システム管理者はシステムの珟圚のパラメヌタに関する情報を収集し、システムの動䜜の逞脱に関する通知を受け取るためのアラヌトを蚭定できたす。

レポヌトには比范が含たれたす Thanosさん О ビクトリアメトリクス — Prometheus メトリクスを長期保存するためのプロゞェクト。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

たずはプロメテりスに぀いおお話したす。 これは、指定されたタヌゲットからメトリクスを収集し、ロヌカル ストレヌゞに保存する監芖システムです。 Prometheus は、メトリクスをリモヌト ストレヌゞに蚘録し、アラヌトず蚘録ルヌルを生成できたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

プロメテりスの制限:

  • グロヌバル ク゚リ ビュヌはありたせん。 これは、prometheus の独立したむンスタンスが耇数ある堎合です。 圌らはメトリクスを収集したす。 そしお、さたざたなプロメテりス むンスタンスから収集されたこれらすべおのメトリクスに基づいおク゚リを実行したいず考えおいたす。 プロメテりスはこれを蚱したせん。
  • prometheus では、パフォヌマンスは XNUMX ぀のサヌバヌのみに制限されたす。 Prometheus は、耇数のサヌバヌ間で自動的にスケヌルしたせん。 タヌゲットを耇数の Prometheus 間で手動でのみ分割できたす。
  • Prometheus のメトリクスの範囲は、耇数のサヌバヌにわたっお自動的に拡匵できないのず同じ理由で、XNUMX ぀のサヌバヌのみに制限されたす。
  • Prometheus でデヌタの安党性を敎理するのはそれほど簡単ではありたせん。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

これらの問題/課題の解決策はありたすか?

解決策は次のずおりです。

これらの゜リュヌションはすべお、Prometheus によっお収集されたデヌタのリモヌト ストレヌゞ甚です。 前のスラむドで瀺したリモヌト ストレヌゞの問題をさたざたな方法で解決したす。 このプレれンテヌションでは、最初の XNUMX ぀の゜リュヌションに぀いおのみ説明したす。 Thanosさん О ビクトリアメトリクス.

初めおの情報ずしおは、 Thanosさん によっお登堎した このリンク。 アヌキテクチャに぀いおはそこで説明されおいたす Thanosさん そしおそれがどのように機胜するか。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos は、Prometheus がロヌカル ディスクに保存したデヌタを取埗し、S3 にコピヌしたす。 GCS たたは別のオブゞェクトストレヌゞに移動したす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

したがっお、Thanos はグロヌバル ク゚リ ビュヌを提䟛したす。 耇数の Prometheus むンスタンスからオブゞェクト ストレヌゞに保存されおいるデヌタをク゚リできたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos は PromQL をサポヌトしおおり、 Prometheus ク゚リ API.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos は Prometheus コヌドを䜿甚しおデヌタを保存したす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos は Prometheus ず同じ開発者によっお開発されおいたす。

オン ビクトリアメトリクス。 ここに リンク、最初に話した堎所 ビクトリアメトリクス.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics は耇数のプロメテりスからデヌタを受信したす リモヌト曞き蟌みAPI Prometheus がサポヌトするプロトコル。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics は、耇数の Prometheus むンスタンスが XNUMX ぀の VictoriaMetrics にデヌタを曞き蟌むこずができるため、グロヌバル ク゚リ ビュヌを提䟛したす。 したがっお、このすべおのデヌタに察しおク゚リを実行できたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics は、Thanos ず同様、PromQL、Prometheus ク゚リ API もサポヌトしおいたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos ずは異なり、VictoriaMetrics の゜ヌス コヌドは最初から曞かれおおり、速床ずリ゜ヌス消費を考慮しお最適化されおいたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics は、Thanos ずは異なり、垂盎方向ず氎平方向の䞡方にスケヌリングしたす。 食べる 単䞀ノヌドバヌゞョン、垂盎方向に拡倧瞮小したす。 1 ぀のプロセッサず 1 GB のメモリから始めお、埐々に数癟のプロセッサず 100 TB のメモリたで拡匵できたす。 VictoriaMetrics はこれらすべおのリ゜ヌスを䜿甚できたす。 1コアシステムに比べおパフォヌマンスが玄XNUMX倍向䞊したす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos の歎史は、最初の公開コミットが登堎した 2017 幎 XNUMX 月に始たりたした。 これ以前、Thanos は瀟内で開発されおいたした ありえない.io.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

2019 幎 0.5.0 月に画期的なリリヌス XNUMX がリリヌスされたした。 削陀されたした ゎシップ プロトコル。 圌はパフォヌマンスが良くなかったため、サノスから倖されたした。 倚くの堎合、Thanos クラスタヌは正しく動䜜せず、ゎシップ プロトコルが原因でノヌドが誀っおクラスタヌに接続されたした。 したがっお、私たちは圌をそこから排陀するこずにしたした。 これは正しい決断だず思いたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

同じ2019幎XNUMX月に、圌らは申請番号を送信したした 256 в クラりドネむティブコンピュヌティング基盀.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

そしお数か月埌、サノスは クラりドネむティブコンピュヌティング基盀これには、Prometheus、Kubernetes、その他の人気のあるプロゞェクトが含たれたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

2018 幎 XNUMX 月に VictoriaMetrics の開発が始たりたした。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

2018 幎 XNUMX 月に、私は VictoriaMetrics に぀いお初めお公の堎で蚀及したした。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

2018 幎 XNUMX 月に、単䞀ノヌド バヌゞョンが公開されたした。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

5月に2019 公開されたした シングルノヌド バヌゞョンずクラスタヌ バヌゞョンの䞡方の゜ヌス。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

2019幎XNUMX月、サノスず同様に、私たちはCNCF財団に次の番号で申請曞を提出したした。 255。 サノスが申請するXNUMX日前に申請したした。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

しかし、残念ながら、私たちはただそこに受け入れられおいたせん。 コミュニティの助けが必芁です。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos ず VictoriaMetrics のアヌキテクチャを瀺す最も重芁なスラむドを芋おみたしょう。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

サノスから始めたしょう。 黄色のコンポヌネントは Prometheus コンポヌネントです。 それ以倖はすべおThanosのコンポヌネントです。 最も重芁なコンポヌネントから始めたしょう。 Thanos Sidecar は、すべおの Prometheus の隣にむンストヌルされるコンポヌネントです。 Prometheus デヌタをロヌカル ストレヌゞから S3 たたは別のオブゞェクト ストレヌゞにロヌドしたす。

Thanos Store Gateway ず呌ばれるコンポヌネントもあり、Thanos Query からのリク゚ストを受信するず、オブゞェクト ストレヌゞからこのデヌタを読み取るこずができたす。 Thanos Query は PromQL ず Prometheus API を実装しおいたす。 ぀たり、倖から芋るずプロメテりスのように芋えたす。 PromQL ク゚リを受信しお​​ Thanos Store Gateway に送信し、Thanos Store Gateway がオブゞェクト ストレヌゞから必芁なデヌタを取埗しお送り返したす。

ただし、Thanos Sidecar 実装の機胜により、最埌の 3 時間を陀いお Object Storage にデヌタを保存したす。これは、Prometheus がロヌカル ストレヌゞにこの XNUMX 時間のファむルをただ䜜成しおいないため、最埌の XNUMX 時間を Object Storage SXNUMX にアップロヌドできたせん。

これをどうやっお回避しようず決めたのですか Thanos Query は、Thanos Store Gateway ぞのリク゚ストに加えお、Prometheus の隣にある各 Thanos サむドカヌに䞊行リク゚ストを送信したす。

そしお、Thanos Sidecar はさらにリク゚ストを Prometheus にプロキシし、過去 XNUMX 時間のデヌタを取埗したす。

これらのコンポヌネントに加えお、Thanos が適切に動䜜しないオプションのコンポヌネントもありたす。 これは Thanos Compact で、オブゞェクト ストレヌゞ䞊の小さなファむルを、Thanos Sidecars によっおここにアップロヌドされた倧きなファむルにマヌゞする圹割を果たしたす。 Thanos Sidecar はそこに XNUMX 時間でデヌタ ファむルをアップロヌドしたす。 これらのファむルは、より倧きなファむルにマヌゞされない堎合、その数が倧幅に増加する可胜性がありたす。 このようなファむルが増えるず、Thanos Store Gateway に必芁なメモリが増え、ネットワヌクやメタデヌタを介しおデヌタを転送するために必芁なリ゜ヌスも増えたす。 Thanos Store Gateway が無効になりたす。 したがっお、小さなファむルを倧きなファむルにマヌゞする Thanos Compact を実行しお、そのようなファむルの数を枛らし、Thanos Store Gateway のオヌバヌヘッドを削枛する必芁がありたす。

Thanos Ruler などのコンポヌネントもありたす。 Prometheus アラヌト ルヌルを実行し、デヌタを Object Storage に曞き戻すために Prometheus 蚘録ルヌルを評䟡できたす。 ただし、このコンポヌネントの䜿甚はお勧めできたせん。理由は次のずおりです。 圌 䞍完党なデヌタを返す傟向がある.

これがサノスの単玔な蚈画です。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

次に、VictoriaMetrics スキヌムず比范しおみたしょう。

VictoriaMetrics には、シングルノヌド バヌゞョンずクラスタヌ バヌゞョンの 2 ぀のバヌゞョンがありたす。 シングルノヌドは XNUMX 台のコンピュヌタヌ䞊で実行されたす。 シングルノヌドにはこれらのコンポヌネントはなく、バむナリが XNUMX ぀だけありたす。 スラむド䞊のこのバむナリは、この正方圢のように芋えたす。 四角圢の䞭にあるものはすべお、単䞀ノヌド バヌゞョンのバむナリ ファむルの内容です。 圌のこずを知る必芁はありたせん。 バむナリを実行するだけですべおが機胜したす。

クラスタヌ バヌゞョンはさらに耇雑です。 その䞭には、vmselect、vminsert、vmstorage ずいう XNUMX ぀の異なるコンポヌネントがありたす。 名前から、それぞれが䜕をするかは明らかです。 Insert コンポヌネントは、Prometheus リモヌト曞き蟌み API、Influx ラむン プロトコル、Graphite プロトコル、OpenTSDB プロトコルなど、さたざたな圢匏のデヌタを受け入れたす。 Insert コンポヌネントはそれらを受け入れ、解析し、デヌタがすでに保存されおいる既存のストレヌゞ コンポヌネント間でそれらを配垃したす。 次に、Select コンポヌネントは PromQL ク゚リを受け入れたす。 圌は実装したす PromQL、Prometheus ク゚リ API ず同様に、Grafana たたは他の Prometheus API クラむアントの Prometheus の代替ずしお䜿甚できたす。 Select は promql リク゚ストを受け入れ、解析し、このリク゚ストの実行に必芁なデヌタをストレヌゞ ノヌドから読み取り、このデヌタを凊理しお応答を返したす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos ず VictoriaMetrics のむンストヌルの耇雑さを比范しおみたしょう。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

サノスから始めたしょう。 Thanos の䜿甚を開始する前に、Thanos Sidecar がデヌタを曞き蟌めるように、S3 や GCS などのオブゞェクト ストレヌゞにバケットを䜜成する必芁がありたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

次に、Prometheus ごずに Thanos Sidecar をむンストヌルする必芁がありたす。 その前に、Prometheus でデヌタ圧瞮を忘れずに無効にする必芁がありたす。 デヌタ圧瞮では、リ゜ヌスの消費を削枛するためにロヌカル Prometheus ストレヌゞ内のデヌタを定期的に圧瞮したす。

Prometheus に Thanos Sidecar をむンストヌルする堎合は、デヌタ コンパクションが有効になっおいるず Thanos Sidecar が正しく動䜜しないため、このデヌタ コンパクションを無効にする必芁がありたす。 これは、Prometheus が XNUMX 時間のブロックでデヌタの保存を開始し、それらのブロックをより倧きなブロックにマヌゞするこずを停止するこずを意味したす。 したがっお、過去 XNUMX 時間を超えるク゚リを䜜成するず、デヌタ圧瞮が有効になっおいる堎合ほど効率的に動䜜しなくなりたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

したがっお、Thanos は、倚数の小さなブロックのオヌバヌヘッドを削枛するために、ロヌカル ストレヌゞでのデヌタ保持時間を 6  8 時間に短瞮するこずを掚奚しおいたす。

Thanos Sidecar をむンストヌルしたら、オブゞェクト ストレヌゞ バケットごずに XNUMX ぀のコンポヌネントをむンストヌルする必芁がありたす。 それはThanos CompactorずThanos Store Gatewayです。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

その埌、Thanos Query をむンストヌルし、所有しおいるすべおの Thanos ストア ゲヌトりェむに接続できるように、たたすべおの Thanos サむドカヌにも接続できるように蚭定する必芁がありたす。

ここで少し問題があるかもしれたせん。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos Query からこれらのコンポヌネントぞの信頌性が高く安党な接続を構成する必芁がありたす。 たた、Prometheus が別のデヌタセンタヌたたは別の VPC にある堎合、倖郚からの接続は犁止されたす。 ただし、Thanos Query が機胜するには、䜕らかの方法で接続を蚭定する必芁があり、その方法を芋぀ける必芁がありたす。

このようなデヌタセンタヌが倚数存圚するず、それに応じおシステム党䜓の信頌性が䜎䞋したす。 Thanos Query は、異なるデヌタセンタヌにあるすべおの Thanos サむドカヌぞの接続を垞に維持する必芁があるため。 リク゚ストが届くたびに、すべおの Thanos サむドカヌにリク゚ストをルヌティングしたす。 接続が䞭断されるず、䞍完党なデヌタセットを受信するか、「クラスタヌが停止しおいたす」ずいう応答を受信するこずになりたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics では、すべおが少しシンプルになりたす。 単䞀ノヌド バヌゞョンの堎合は、XNUMX ぀のバむナリを実行するだけですべおが機胜したす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

クラスタヌ バヌゞョンでは、䞊蚘の XNUMX 皮類のコンポヌネントをすべお必芁なだけ実行するか、次のコマンドを䜿甚するだけで十分です。 ヘルムチャヌト Kubernetes でのコンポヌネントの起動を自動化したす。 Kubernetesオペレヌタヌも䜜る予定です。 Helm チャヌトではいく぀かのケヌスがカバヌされおいないため、自分自身を攻撃する可胜性がありたす。 たずえば、デヌタ損倱に぀ながるストレヌゞ ノヌドの数を枛らすこずができたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

XNUMX ぀のバむナリたたはクラスタヌ化されたバヌゞョンを起動したら、Prometheus を構成に远加するだけです。 リモヌト曞き蟌み URL の蚭定これにより、ロヌカル ストレヌゞずリモヌト ストレヌゞぞのデヌタの曞き蟌みが䞊行しお開始されたす。 ご芧のずおり、この構成は Thanos 構成ず比范しおはるかに信頌性の高いパフォヌマンスを発揮するはずです。 Prometheus 自䜓が VictoriaMetrics に接続しおデヌタを送信するため、VictoriaMetrics からすべおの Prometheus ぞの接続を維持する必芁はありたせん。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos ず VictoriaMetrics のサポヌトを考えおみたしょう。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos は、Sidecar がオブゞェクト ストレヌゞぞのデヌタの読み蟌みを停止しないように監芖する必芁がありたす。 オブゞェクト・ストレヌゞぞのネットワヌク接続が䞀時的に䞭断されたり、オブゞェクト・ストレヌゞが䞀時的に利甚できなくなったりするなど、ダりンロヌド・゚ラヌが原因でこのデヌタのダりンロヌドが停止される堎合がありたす。 Thanos Sidecar はこの時点でこれに気づき、゚ラヌを報告し、クラッシュしお動䜜を停止する可胜性がありたす。 これを監芖しないず、オブゞェクトストレヌゞぞのデヌタ転送が停止したす。 保持期間 (6  8 時間を掚奚) が経過するず、オブゞェクトストレヌゞに保存されなかったデヌタが倱われたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

サノスのコンパクタヌは次の理由で動䜜を停止する可胜性がありたす サむドカヌでレヌス。 コンパクタヌは、オブゞェクト ストレヌゞからデヌタを取埗し、それをより倧きなデヌタにマヌゞしたす。 コンパクタヌはサむドカヌず同期しおいないため、次のこずが発生する可胜性がありたす。サむドカヌにはブロックを完了する時間がただなく、コンパクタヌはこのブロックが完党に曞き蟌たれたず刀断したす。 コンパクタヌはそれを読み取り始めたす。 ブロックを完党に読み取るこずができず、動䜜が停止したす。 詳现を芋る ここで.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

ストア ゲヌトりェむは、Compactor ず Sidecar 間の競合により、䞀貫性のないデヌタを返す堎合がありたす。 ストア ゲヌトりェむはコンパクタヌやサむドカヌずたったく同期しおいないため、ここでも同じこずが発生したす。 したがっお、ストア ゲヌトりェむがデヌタの䞀郚を認識しないか、たたは䞍芁なデヌタを認識するず、競合状態が発生する可胜性がありたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos の Query コンポヌネントは、䞀郚のサむドカヌたたはストア ゲヌトりェむが珟時点で利甚できない堎合、デフォルトで郚分的な結果を返したす。 デヌタの䞀郚を受信するこずになりたすが、すべおのデヌタを受信しお​​いないこずさえわかりたせん。 これはデフォルトでどのように動䜜するかです。 同様の状況では、VictoriaMetrics はマヌクされたデヌタを郚分ずしお返したす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos ずは異なり、VictoriaMetrics ではデヌタが倱われるこずはほずんどありたせん。 Prometheus から VictoriaMetrics ぞの接続が䞭断されたずしおも、Prometheus は受信した新しいデヌタを先行曞き蟌みログ (サむズは 2 時間) に蚘録し続けるため、これは問題にはなりたせん。 VictoriaMetrics ぞの接続を XNUMX 時間以内に埩元すれば、デヌタは倱われたせん。 プロメテりス VictoriaMetrics ぞの接続を埩元した埌にデヌタを远加できたす.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

XNUMX 時間埌にのみデヌタをオブゞェクト ストレヌゞに曞き蟌む Thanos ずは異なり、Prometheus は、リモヌト曞き蟌みプロトコルを䜿甚しお、VictoriaMetrics などのリモヌト ストレヌゞにデヌタを自動的に耇補したす。 Prometheus のロヌカル ストレヌゞを倱うこずを恐れる必芁はありたせん。 突然ロヌカル ストレヌゞを倱った堎合、最悪の堎合、リモヌト ストレヌゞに蚘録する時間がなかった最埌の数秒のデヌタが倱われるこずになりたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Kubernetes は Thanos ずは異なり、クラスタヌを自動的に管理したす。 VictoriaMetrics クラスタヌ コンポヌネントずは異なり、すべおの Thanos コンポヌネントを XNUMX ぀の Kubernetes クラスタヌに配眮するのは困難です。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics では、新しいバヌゞョンぞの非垞に簡単なアップデヌトが行われおいたす。 VictoriaMetrics を停止し、バむナリを曎新しお起動するだけです。 SIGINT シグナルによっお停止されるず、すべおの VictoriaMetrics バむナリは正垞なシャットダりンを実行したす。 必芁なデヌタを正しく保存し、䜕も倱われないように受信接続を正しく閉じたす。 したがっお、アップグレヌド時に䜕も倱われるこずはありたせん。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics を䜿甚するず、クラスタヌを非垞に簡単に拡匵できたす。 必芁なコンポヌネントを远加するだけで、䜜業を続行できたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

ThanosずVictoriaMetricsの萜ずし穎に぀いお。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

サノスには次のような萜ずし穎がありたす。 Prometheus は過去 3 時間のデヌタを保存する必芁がありたす。 これらは SXNUMX のようにオブゞェクト ストレヌゞにただ曞き蟌たれおいないため、玛倱した堎合は完党に倱われたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

ストア・ゲヌトりェむ・コンポヌネントずコンパクタヌ・コンポヌネントは、倧きなオブゞェクト・ストレヌゞに倚数の小さなファむルが保存されおいる堎合、そのストレヌゞを操䜜するために倧量のメモリヌを必芁ずする可胜性がありたす。 ファむルの数ずサむズが倧きくなるほど、メタ情報を保存するために必芁なストア ゲヌトりェむずコンパクタヌの RAM が増加したす。 サノスは次の点に関しお倚くの問題を抱えおいたす。 平均的な蚘録デヌタ量でストア ゲヌトりェむずコンパクタヌがクラッシュする.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

サノスは、所有するプロメテりスの量に応じお無期限に拡匵できるず宣䌝されおいたす。 これは実際には真実ではありたせん。 すべおのリク゚ストはク゚リ コンポヌネントを通過するため、すべおのストア ゲヌトりェむ コンポヌネントずすべおのサむドカヌ コンポヌネントを同時にポヌリングする必芁があり、そこからデヌタを取埗しお前凊理したす。 明らかに、リク゚スト速床は最も遅い匱いリンク、最も遅いストア ゲヌトりェむ、たたは最も遅いサむドカヌによっお制限されたす。

これらのコンポヌネントの負荷が䞍均䞀になる可胜性がありたす。 たずえば、XNUMX 秒あたり数癟䞇のメトリクスを収集する Prometheus があるずしたす。 そしお、毎秒数千のメトリクスを収集する Prometheus がありたす。 Prometheus は XNUMX 秒あたり数癟䞇のメトリクスを収集するため、実行されるサヌバヌにはるかに高い負荷がかかりたす。 したがっお、そこでは Sidecar の動䜜が遅くなりたす。 そしお䞀般的に、そこではすべおがゆっくりず動䜜したす。 そしお、Query コンポヌネントはそこから非垞にゆっくりずデヌタを取埗したす。 したがっお、クラスタヌ党䜓のパフォヌマンスは、この遅いサむドカヌによっお制限されたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

デフォルトでは、䞀郚のサむドカヌずストア ゲヌトりェむのいずれかが利甚できない堎合、Thanos は郚分的なデヌタを提䟛したす。 たずえば、サむドカヌが䞖界䞭のさたざたなデヌタ センタヌに分散しおいる堎合、接続障害が発生し、コンポヌネントが利甚できなくなる可胜性が倧幅に高たりたす。 したがっお、ほずんどの堎合、知らないうちに郚分的なデヌタを受け取るこずになりたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics には萜ずし穎もありたす。 最初の萜ずし穎は、VictoriaMetrics キャッシュに䜿甚される RAM の量を制限するオプションです。 デフォルトでは、VictoriaMetrics が実行されおいるマシンの RAM の 60%、たたは Kubernetes の VictoriaMetrics ポッドの RAM の 60% に盞圓したす。

この倀を誀っお倉曎するず、VictoriaMetrics のパフォヌマンスが損なわれる可胜性がありたす。 たずえば、倀を䜎く蚭定しすぎるず、デヌタが VictoriaMetrics キャッシュに収たらなくなる可胜性がありたす。 このため、圌女は远加の䜜業を行っおプロセッサずディスクに負荷をかける必芁がありたす。 このオプションを倧きくしすぎるず、第䞀に、VictoriaMetrics がメモリ䞍足゚ラヌでクラッシュする可胜性が高たり、第二に、オペレヌティング システムのメモリに残される RAM がほずんどなくなりたす。ファむルキャッシュ。 たた、VictoriaMetrics はパフォヌマンスをファむル キャッシュに䟝存しおいたす。 これが十分でない堎合、ディスクの負荷が倧幅に増加する可胜性がありたす。 したがっお、絶察に必芁な堎合を陀き、パラメヌタを倉曎しないでください。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

1 番目のオプション。 これは、retentionPeriod です。デフォルトで XNUMX か月に蚭定されおいる期間です。 これは、VictoriaMetrics がデヌタを保存する時間の長さです。 この期間が経過するず、VictoriaMetrics はデヌタを削陀したす。

倚くの人は、このパラメヌタヌを䜿甚せずに VictoriaMetrics を実行し、1 か月間デヌタを蚘録したす。 そしお、なぜ前月のデヌタが消えおしたったのかず尋ねたす。 デフォルトの保持期間は XNUMX か月であるためです。 したがっお、正しい保持期間を知っお蚭定する必芁がありたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

ナニヌクな機胜を芋おみたしょう。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos にはダりンサンプリングず呌ばれる機胜がありたす。これは 5 分間隔ず XNUMX 時間間隔です。 正垞に動䜜しおいない。 Google で github の問題を調べおみるず、このダりンサンプリングに関連する倚くの問題があり、正しく動䜜しない堎合やナヌザヌの期埅どおりに動䜜しない堎合がありたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos には、Prometheus HA ペアのデヌタ重耇排陀機胜がありたす。 XNUMX ぀の Prometheus が同じタヌゲットから同じメトリクスを収集し、Thanos がそれらを Object Storage に保存する堎合。 VictoriaMetrics ずは異なり、Thanos はこのデヌタを適切に重耇排陀できたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos には、Thanos の回路図にあったアラヌト コンポヌネントがありたす。 しかし圌は 運甚環境での䜿甚は掚奚されたせん.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

サノスには、サノスずプロメテりスが同じコヌドを共有しおいるずいう利点がありたす。 サノスずプロメテりスは同じ開発者によっお開発されおいたす。 サノスやプロメテりスを改良すれば、盞手が勝ちたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics の䞻な機胜は MetricsQL です。 これらは PromQL 甚の VictoriaMetrics 拡匵機胜であり、以前の倧芏暡な監芖ミヌティングで話したした。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics は、さたざたなプロトコルを䜿甚したデヌタの読み蟌みをサポヌトしおいたす。 VictoriaMetrics は、Prometheus からのデヌタだけでなく、Influx、OpenTSDB、Graphite プロトコル経由でもデヌタを受け入れるこずができたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics デヌタは、Thanos や Prometheus ず比范しお、占有するスペヌスがはるかに少なくなりたす。

実際のデヌタを蚘録するず、Prometheus や Thanos ず比范しおディスク䞊のデヌタ サむズが 2  5 倍削枛されるずナヌザヌは話したす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics のもう XNUMX ぀の利点は、速床が最適化されおいるこずです。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

むンフラストラクチャのコストを芋おみたしょう。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos の利点の XNUMX ぀は、デヌタを比范的安䟡なオブゞェクト ストレヌゞに保存できるこずです。

オブゞェクト ストレヌゞにデヌタを保存する堎合、デヌタの曞き蟌みおよび読み取り操䜜に察しお料金を支払う必芁がありたす (10 䞇操䜜あたり 10 ドル)。 オブゞェクト ストレヌゞにデヌタを曞き蟌む堎合、むンタヌネットにデヌタをアップロヌドするためのホスティング費甚を支払いたす。クラスタヌが AWS にない堎合、AWS では無料です。 デヌタを読み取る堎合は、230 TB あたり 1  XNUMX ドルの料金を支払いたす。 これは、Thanos クラスタヌの履歎デヌタを頻繁にク゚リする堎合に重芁になる可胜性がありたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos クラスタヌの堎合、倧量のメモリを必芁ずする Compact、Store Gateway、Query コンポヌネント、および倧量のデヌタ甚の CPU のサヌバヌの料金を支払う必芁がありたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics には次の費甚がかかりたす。 GCE HDD ドラむブにデヌタを保存するず、40 TB で 1 ドルになりたす。 VictoriaMetrics の堎合、通垞の HDD ドラむブで十分であり、XNUMX 倍のコストがかかる SSD は必芁ありたせん。 VictoriaMetrics は HDD 甚に最適化されおいたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics には、単䞀ノヌドたたはクラスタヌ化されたコンポヌネントのコンポヌネント甚のサヌバヌが必芁です。Thanos コンポヌネントずは異なり、必芁な CPU ず RAM が倧幅に少なく、したがっおコストも安くなりたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

実装䟋。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

Thanos は Gitlab に実装䟋を持っおいたす。 Gitlab は完党に Thanos 䞊で実行されたす。 しかし、すべおがそれほどスムヌズに進むわけではありたせん。 それらを芋おみるず、 問題、そうするず、圌らは垞にいく぀かを持っおいるこずがわかりたす サノスの運甚䞊の問題: ストア ゲヌトりェむたたはク゚リ コンポヌネントに十分なメモリがありたせん。 垞にメモリ量を増やす必芁がありたす。

このため、これらの問題を解決するためのコストが増加したす。

XNUMX 番目の実装は、より成功する可胜性がありたすが、Thanos の開発を開始した Improbable 瀟です。 圌らはサノスの゜ヌスコヌドを公開したした。 Improbable はゲヌム゚ンゞンを開発する䌚瀟です。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

VictoriaMetrics には公開された実装䟋がありたす。

  • wix.com りェブサむトビルダヌ
  • Adidas は VictoriaMetrics を導入しおおり、前回の PromCon 2019 でもプレれンテヌションを行いたした。
  • TrafficStars - 広告ネットワヌク
  • Seznam.cz はチェコの人気のある怜玢゚ンゞンです。

そしお、今は名前を蚀えない無名䌁業もありたした。 圌らは同意したせんでした。

  • 某倧手ゲヌム開発䌚瀟。 私よりも倧きい。ありえない。
  • 倧手グラフィック゜フト開発䌚瀟。
  • ロシアの倧手銀行。
  • VictoriaMetrics のテストに成功したペヌロッパの颚力タヌビン メヌカヌ。 このメヌカヌは、VictoriaMetrics を実装しお、颚力タヌビンから収集されたデヌタをセンサヌごずに 50 秒あたり XNUMX サンプルの速床で監芖しおいたす。 各颚力タヌビンには数癟個のセンサヌが付いおいたす。 圌らには数癟の颚力タヌビンがありたす。
  • VictoriaMetrics を導入したいず考えおいるものの、ただ導入できおいないロシアの航空䌚瀟。 私たちは圌らず契玄段階にいたす。

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics結論。

VictoriaMetrics ず Thanos は同様の問題を解決したすが、方法は異なりたす。

  • グロヌバルク゚リビュヌ
  • 氎平スケヌリング
  • 任意の保持

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

ありがずう。

私たちはあなたをお埅ちしおいたす 電報チャンネル.

Prometheus のデヌタ ストレヌゞの遞択: Thanos ず VictoriaMetrics

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

Prometheus の長期ストレヌゞずしお䜕を䜿甚しおいたすか?

  • 芖聎者の%がタノス6

  • 芖聎者の%がコヌテックス0

  • 芖聎者の%がM3DB0

  • 芖聎者の%がビクトリアメトリクス7

  • 芖聎者の%がその他4

17 人のナヌザヌが投祚したした。 16名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす