Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Ўсім прывітанне. Ніжэй прадстаўлена расшыфроўка даклада з Big Monitoring Meetup 4.

Праметэй – сістэма маніторынгу розных сістэм і сэрвісаў, з дапамогай якой сістэмныя адміністратары могуць збіраць інфармацыю аб бягучых параметрах сістэм і наладжваць абвесткі для атрымання апавяшчэнняў аб адхіленнях у працы сістэм.

У дакладзе будзе параўнанне Танос и ВікторыяМетрыка - Праектаў для доўгатэрміновага захоўвання метрык Prometheus.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Прайграванне відэа

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Спачатку раскажу пра Prometheus. Гэта сістэма маніторынгу, якая збірае метрыкі з зададзеных target'аў і захоўвае іх у лакальнае сховішча. Prometheus умее запісваць метрыкі ў выдаленае сховішча, умее генераваць alert'ы і recording rules.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Абмежаванні Prometheus:

  • Ён не мае global query view. Гэта калі ў вас ёсць некалькі незалежных экзэмпляраў prometheus. Яны збіраюць метрыкі. І вы хочаце зрабіць запыт-над усіх гэтых метрык, сабраных з розных асобнікаў prometheus. Prometheus гэта не дазваляе.
  • У prometheus прадукцыйнасць абмежавана толькі адным серверам. Prometheus аўтаматычна не можа маштабавацца на некалькі сервераў. Вы толькі можаце ўручную падзяліць вашыя target'ы паміж некалькімі Prometheus'амі.
  • Аб'ём метрык у Prometheus абмежаваны толькі адным серверам па тым жа чынніку, па якой ён аўтаматычна не можа аўтаматычна маштабавацца на некалькі сервераў.
  • У Prometheus не вось так проста арганізаваць захаванасць дадзеных.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Рашэнні гэтых праблем/задач?

Рашэнні такія:

Усе гэтыя рашэнні для выдаленага захоўвання дадзеных, сабраных Prometheus. Яны вырашаюць праблему remote storage з папярэдняга слайда па-рознаму. У дадзенай прэзентацыі я раскажу толькі пра першыя два рашэнні: Танос и ВікторыяМетрыка.

Упершыню інфармацыя пра Танос з'явілася па гэтай спасылцы. Там апісана архітэктура Танос і як ён працуе.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Thanos бярэ дадзеныя, якая захаваў Prometheus на лакальны дыск, і капіююць іх у S3, у GCS альбо ў іншы object storage.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Такім чынам, Thanos забяспечвае global query view. Вы можаце запытваць дадзеныя, захаваныя ў object storage з некалькіх асобнікаў Prometheus.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Thanos падтрымлівае PromQL і Prometheus querying API.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Thanos выкарыстоўвае код Prometheus для захоўвання даных.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Thanos распрацоўвае тыя ж распрацоўшчыкі, што і Prometheus.

Пра ВікторыяМетрыка. Вось спасылка, дзе мы ўпершыню распавялі пра ВікторыяМетрыка.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics атрымлівае дадзеныя з некалькіх prometheus па remote write API пратаколу, які падтрымліваецца Prometheus.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics забяспечвае global query view, бо некалькі асобнікаў Prometheus могуць запісваць дадзеныя ў адну VictoriaMetrics. Адпаведна, вы можаце зрабіць запыты па гэтых усіх дадзеных.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics таксама падтрымлівае, як і Thanos – PromQL і Prometheus querying API.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У адрозненне ад Thanos, зыходны код VictoriaMetrics напісаны з нуля і аптымізаваны па хуткасці і спажываным рэсурсам.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics у адрозненне ад Thanos, маштабуецца як вертыкальна так і гарызантальна. Ёсць Single-node версія, якая маштабуецца вертыкальна. Вы можаце пачаць з аднаго працэсара і 1 ГБ памяці і паступова расці да сотні працэсараў і 1ТБ памяці. VictoriaMetrics умее выкарыстоўваць усе гэтыя рэсурсы. Яе прадукцыйнасць вырасце прыкладна ў 100 разоў у параўнанні з 1-ядзернай сістэмай.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Гісторыя Thanos пачалася ў лістападзе 2017 г., калі з'явіўся першы публічны коміт. Да гэтага Thanos распрацоўваўся ўнутры кампаніі improbable.io.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У чэрвені 2019 года быў знакавы рэліз 0.5.0, у якім прыбралі плёткі пратакол. Яго прыбралі з Thanos, таму што ён сябе паказаў не з лепшага боку. Часта кластар Thanos няправільна працаваў, няправільна падключаліся да яго ноды з-за gossip пратаколу. Таму вырашылі яго адтуль прыбраць. Я лічу, што гэта правільнае рашэньне.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У тым жа чэрвені 2019 года яны даслалі заяўку нумар 256 в Фонд хмарных натыўных вылічэнняў.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

І праз пару месяцаў Thanos прынялі ў Фонд хмарных натыўных вылічэнняў, У якую ўваходзіць Prometheus, Kubernetes і іншыя папулярнае праекты.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У студзені 2018 года пачалася распрацоўка VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У верасні 2018 года я ўпершыню публічна згадаў пра VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У снежні 2018 гады апублікавалі Single-node версію.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У траўні 2019 былі апублікаваны зыходнікі як Single-node, так і кластарнай версіі.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У чэрвені 2019 года, таксама як Thanos, мы падалі заяўку ў CNCF foundation пад нумарам 255. Мы падалі заяўку на адзін дзень раней, чым падаў заяўку Thanos.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Але, на жаль, нас да гэтага часу не прынялі туды. Патрэбна дапамога кам'юніці.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Разгледзім самыя галоўныя слайды, якія паказваюць архітэктуру Thanos і VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Пачнём з Thanos. Жоўтыя кампаненты - гэта кампаненты Prometheus. Усё астатняе - гэта кампаненты Thanos. Пачнём з самага галоўнага кампанента. Thanos Sidecar - гэта кампанент, які ўсталёўваецца побач з кожным Prometheus. Ён займаецца тым, што загружае дадзеныя Prometheus з лакальнага storage у S3 або ў іншы Object Storage.

Ёсць яшчэ такі кампанент, як Thanos Store Gateway, які ўмее счытваць гэтыя дадзеныя c Object Storage пры ўваходных запытах ад Thanos Query. Thanos Query рэалізуе PromQL і Prometheus API. Гэта значыць звонку ён выглядае як Prometheus. Прымае запыты PromQL, адпраўляе іх у Thanos Store Gateway, Thanos Store Gateway дастае патрэбныя дадзеныя з Object Storage, адпраўляе іх назад.

Але ў нас у Object Storage захоўваюцца дадзеныя без апошніх дзвюх гадзін з-за асаблівасці рэалізацыі Thanos Sidecar, які не можа запампаваць апошнія дзве гадзіны ў Object Storage S3, бо для гэтых дзвюх гадзін Prometheus яшчэ не стварыў файлы ў лакальным сховішчы.

Як жа гэта вырашылі абысці? Thanos Query акрамя, запытаў у Thanos Store Gateway, адпраўляе паралельна запыты яшчэ ў кожны Thanos Sidecar, які знаходзяцца побач з Prometheus.

А Thanos Sidecar, у сваю чаргу, праксіруе запыты далей у Prometheus, і дастае дадзеныя за апошнія дзве гадзіны.

Акрамя гэтых кампанент, ёсць яшчэ апцыянальны кампанент, без якога Thanos будзе дрэнна сябе адчуваць. Гэта Thanos Compact, які займаецца зліццём дробных файлаў на Object Storage у буйнейшыя файлы, якія былі загружаныя сюды Thanos Sidecar'амі. Thanos Sidecar загружае туды файлы з дадзенымі за дзве гадзіны. Гэтыя файлы, калі іх не зліваць у буйнейшыя файлы, тая іх колькасць можа выгадаваць вельмі істотна. Чым больш такіх файлаў, тым больш трэба памяці для Thanos Store Gateway, тым больш трэба рэсурсаў для перадачы дадзеных па сетцы, метададзеных. Праца Thanos Store Gateway становіцца неэфектыўнай. Таму трэба абавязкова запускаць Thanos Compact, які злівае дробныя файлы ў буйнейшыя, каб такіх файлаў было менш і каб паменшыць overhead на Thanos Store Gateway.

Ёсць яшчэ такі кампанент як Thanos Ruler. Ён выконвае Prometheus alerting rules і можа вылічваць Prometheus recording rules, для таго каб запісваць дадзеныя зноў у Object Storage. Але гэты кампанент не рэкамендуецца выкарыстоўваць, т.я. ён схільны вяртаць няпоўныя дадзеныя.

Вось такая схема простая ў Thanos.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Цяпер параўнаем са схемай VictoriaMetrics.

У VictoriaMetrics ёсць 2 версіі: Single-node і кластарная версія. Single-node працуе на адным кампутары. У Single-node няма гэтых кампанентаў, проста адзін бінарнік. Гэты бінарнік на слайдзе выглядае вось гэтым квадратам. Усё, што знаходзіцца ўнутры квадрата - гэта змесціва бінарнага файла для Single-node версіі. Вам неабавязкова пра яго ведаць. Проста запускаеце бінарнік - і ўсё ў нас працуе.

Кластарная версія складаней. Унутры яе знаходзіцца тры розных кампанента: vmselect, vminsert і vmstorage. З іх назову павінна быць зразумела, чым кожны з іх займаецца. Insert кампанент прымае дадзеныя ў розных фарматах: з Prometheus remote write API, Influx line пратаколу, Graphite пратаколу і з OpenTSDB пратаколу. Insert кампанент прымае іх, парсіт і размяркоўвае паміж наяўнымі storage кампанентамі, дзе дадзеныя ўжо захоўваецца. Select кампанент, у сваю чаргу, прымае PromQL запыты. Ён рэалізуе PromQL, А таксама Prometheus querying API, і ён можа быць выкарыстаны, як замена Prometheus ў Grafana ці іншых Prometheus API кліентах. Select прымае promql запыт, парсіць яго, счытвае неабходныя дадзеныя для выканання гэтага запыту з storage нод, працэсіць гэтыя дадзеныя і вяртае адказ.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Параўнальны складанасць усталёўкі Thanos і VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Пачнём з Thanos. Перад тым, як пачаць працаваць з Thanos, трэба стварыць bucket у Object Storage, такі як S3 ці GCS, каб Thanos Sidecar мог туды запісваць дадзеныя.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Затым для кожнага Prometheus неабходна ўсталяваць Thanos Sidecar. Перад гэтым трэба не забыцца адключыць data compaction у Prometheus. Data compaction перыядычна сціскае дадзеныя ў лакальным сховішчы Prometheus для таго, каб паменшыць спажыванне рэсурсаў.

Калі вы ўсталёўваеце Thanos Sidecar да вашых Prometheus'ам, вы павінны адключыць гэты data compaction, таму што Thanos Sidecar не ўмее звычайна працаваць пры ўключаным data compaction. Гэта азначае, што ваш Prometheus пачынае захоўваць дадзеныя блокамі па дзве гадзіны і перастае зліваць гэтыя блокі ў буйнейшыя. Адпаведна, калі вы робіце запыты, якія перавышаюць працягласць за апошнія дзве гадзіны, то яны будуць не настолькі эфектыўна працаваць у параўнанні з тым, як маглі б працаваць, калі быў бы ўключаны data compaction.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Таму Thanos рэкамендуе памяншаць час захоўвання дадзеных (data retention) у лакальным storage да 6-8 гадзін, каб знізіць гэты overhead вялікай колькасці дробных блокаў.

Пасля таго як вы ўсталявалі Thanos Sidecar, вы павінны для кожнага Object Storage Bucket усталяваць два кампаненты. Гэта Thanos Compactor і Thanos Store Gateway.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Пасля гэтага трэба ўсталяваць Thanos Query і наладзіць яго, каб ён умеў падлучацца да ўсіх Thanos Store Gateway, якія ў вас ёсць, а таксама ўмеў падлучацца да ўсіх Thanos Sidecar.

Тут можа быць невялікая проблемка.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Вам трэба наладзіць надзейнае і абароненае падлучэнне ад Thanos Query да гэтых кампанентаў. І калі ў вас Prometheus'ы знаходзяцца ў розных дата-цэнтрах, альбо ў розных VPC, то да іх забароненыя падлучэнні звонку. Але для працы Thanos Query вам трэба неяк наладзіць падлучэнне туды, і вы павінны прыдумаць спосаб.

Калі ў вас такіх дата-цэнтраў шмат, тое, адпаведна, змяншаецца надзейнасць усёй сістэмы. Бо Thanos Query павінен увесь час трымаць падлучэнні да ўсіх Thanos Sidecar, размешчаных у розных дата-цэнтрах. Пры кожным уваходным запыце ён будзе накіроўваць запыты на ўсе Thanos Sidecar. Калі злучэнне перарвецца, тыя вы атрымаеце альбо не поўны набор дадзеных, альбо атрымаеце адказ "кластар не працуе".

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У VictoriaMetrics усё крыху прасцей. Для Single-node версіі дастаткова проста запусціць адзін бінарнік і ўсё працуе.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У кластарнай на версіі дастаткова запусціць усе вышэйзгаданыя тры тыпу кампанентаў у любой неабходнай вам колькасці, альбо выкарыстоўваць helm chart для аўтаматызацыі запуску кампанентаў у Kubernetes. Мы яшчэ плануем зрабіць аператара Kubernetes. Helm chart не пакрывае некаторыя кейсы, і дазваляе вам стрэліць нагу. Напрыклад, ён дазваляе паменшыць колькасць storage node, што прывядзе да страты даных.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Пасля таго, як вы запусцілі адзін бінарнік або кластарную версію, вам дастаткова дадаць у канфіг Prometheus настройку для remote write url, Каб ён пачаў запісваць дадзеных паралельна ў лакальны storage і ў remote storage. Як вы заўважылі, такая канфігурацыя павінна працаваць нашмат надзейней у параўнанні з канфігурацыяй Thanos. Нам не трэба трымаць падлучэнне ад VictoriaMetrics да ўсіх Prometheus'ам, таму што Prometheus'ы самі падключаюцца да VictoriaMetrics і перадаюць дадзеныя.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Разгледзім суправаджэнне Thanos і VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У Thanos трэба сачыць за Sidecar, каб яны не спынялі загрузку дадзеных у Object Storage. Яны могуць спыніць гэтую загрузку дадзеных з прычыны памылак загрузкі, напрыклад у вас часова перарвалася сеткавае злучэнне з Object Storage, альбо Object Storage часова стаў недаступны. Thanos Sidecar у гэты момант заўважыць гэта, паведаміць пра памылку, можа зваліцца і пасля гэтага перастаць працаваць. Калі вы не будзеце яго маніторыць, то ў вас перастануць перадавацца дадзеныя ў Object Storage. Калі пройдзе час retention (6-8 гадзін рэкамендаванае), тыя вы будзеце губляць дадзеныя, якія не патрапілі ў Object Storage.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Thanos сompactor-ы могуць перастаць працаваць з-за race'аў з Sidecar. Сompactor-ы бяруць дадзеныя з Object Storage і зліваюць іх у буйнейшыя кавалкі дадзеных. Бо сompactor-ы не сінхранізаваныя з Sidecar'амі, тое можа адбыцца вось што: Sidecar не паспеў яшчэ дапісаць блок, Compactor вырашае, што гэты блок цалкам запісаны. Compactor пачынае яго счытваць. Ён счытвае блок не ў поўным выглядзе і перастае працаваць. Глядзіце падрабязнасці тут.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Store Gateway можа аддаваць некансістэнтныя дадзеныя з-за race'аў паміж Compactor'ам і Sidecar'амі. Тут такая ж штука, таму што Store Gateway ніяк не сінхранізаваны з Compactor'амі і Sidecar'амі. Адпаведна, могуць узнікаць стан гонак, калі Store Gateway не бачыць частку дадзеных, або бачыць лішнія дадзеныя.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Query кампанент у Thanos па змаўчанні аддае частковы вынік, калі некаторыя Sidecar-ы або Store Gateway не даступныя ў дадзены момант. Вы атрымаеце частку даных, і нават не будзе ведаць, што атрымалі не ўсе дадзеныя. Гэта ён працуе так па змаўчанні. У падобнай сітуацыі VictoriaMetrics вяртае пазначаныя дадзеныя як частковыя.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У адрозненне ад Thanos, VictoriaMetrics рэдка страчвае дадзеныя. Нават калі перарвалася падлучэнне ад Prometheus да VictoriaMetrics, то не праблема, бо Prometheus працягваецца запісваць якія паступаюць новыя дадзеныя ў Write Ahead Log, памер якога роўны 2 гадзінам. Калі вы на працягу двух гадзін адновіце падлучэнне да VictoriaMetrics, то дадзеныя не згубяцца. Prometheus умее дапісваць дадзеныя пасля аднаўлення падлучэння да VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У адрозненне ад Thanos, які запісвае дадзеныя ў object storage толькі праз дзве гадзіны, Prometheus аўтаматычна рэплікуе дадзеныя па remote write пратаколу ў remote storage, такі як VictoriaMetrics. Вам не страшная страта local storage у Prometheus. Калі ён раптам страціў local storage, тыя вы горшым выпадку страціце апошнія секунды дадзеных, якія не паспелі запісацца ў remote storage.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Kubernetes аўтаматычна кіруе кластарам у адрозненне ад Thanos. Усе кампаненты Thanos складана змясціць у адзін Kubernetes кластар, у адрозненне ад кластарных кампанент VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У VictoriaMetrics вельмі простае абнаўленне на новую версію. Проста спыняеце VictoriaMetrics, абнаўляеце бінарнікі і запускаеце. Пры прыпынку праз SIGINT сігнал усе бінарнікі VictoriaMetrics робяць gracefull shutdown. Яны правільна захоўваюць патрэбныя дадзеныя, правільна зачыняюць уваходныя злучэнні, каб нічога не страціць. Таму вы нічога не страціце пры абнаўленні.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У VictoriaMetrics вельмі проста пашыраць кластар. Проста дадаеце неабходныя кампаненты і працягваеце працаваць.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Пра падводныя камяні ў Thanos і VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У Thanos наступныя падводныя камяні. Prometheus павінен захоўваць дадзеныя за апошнія дзве гадзіны. Калі яны згубяцца, вы іх цалкам страціце, бо яны яшчэ не паспелі запісацца ў Object Storage, такі як S3.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Store Gateway кампанент і сompactor кампанент можа патрабаваць шмат памяці для працы з вялікім Object Storage, калі тамака захоўваецца шмат дробных файлаў. Чым большая колькасць і аб'ём файлаў, тым больш патрабуецца аператыўнай памяці Store Gateway і сompactor для захоўвання метаінфармацыі. У Thanos шмат issues з нагоды таго, што Store Gateway і сompactor падаюць пры сярэдніх аб'ёмаў запісаных дадзеных.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Thanos рэкламуецца, што ён можа скейліцца бясконца на колькасць вашых Prometheus. Насамрэч гэта няпраўда. Бо ўсе запыты ідуць праз Query кампанент, які павінен раўналежна апытаць усе Store Gateway кампаненты і ўсе Sidecar кампаненты, выцягнуць адтуль дадзеныя і потым іх препроцессить. Відавочна што хуткасць запытаў абмежавана самым павольным слабым звяном, самым павольным Store Gateway або самым павольным Sidecar.

Гэтыя кампаненты могуць быць нераўнамерна нагружаны. Напрыклад, у вас ёсць Prometheus, які збірае мільёны метрык у секунду. І ёсць Prometheus, у якім збіраецца тысячы метрык за секунду. Prometheus, у якім збіраюцца мільёны метрык у секунду, нашмат мацней загружае сервер, на якім ён працуе. Адпаведна Sidecar там працуе павольней. І ўвогуле ўсё там павольна працуе. І Query кампанент будзе вельмі павольна адтуль дадзеныя выцягваць. Адпаведна прадукцыйнасць вашага ўсяго кластара будзе абмежавана гэтым павольным Sidecar.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Па змаўчанні Thanos аддае частковае дадзеныя, калі некаторыя Sidecar'ы і альбо Store Gateway недаступныя. Напрыклад, калі ў вас Sidecar'ы раскіданыя па ўсім свеце ў розных дата-цэнтрах, то верагоднасць разрыву злучэння і недаступнасці кампанентаў моцна ўзрастае. Адпаведна, у большасці выпадкаў вы будзеце атрымліваць частковыя дадзеныя, нават не ведаючы аб гэтым.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У VictoriaMetrics таксама ёсць падводныя камяні. Першы падводны камень – гэта опцыя, якая абмяжоўвае аб'ём аператыўнай памяці, якая выкарыстоўваецца пад кэш VictoriaMetrics. Па змаўчанні яна роўная 60% аператыўнай памяці на машыне, дзе VictoriaMetrics запушчана або 60% АЗП пода VictoriaMetrics у Kubernetes.

Калі няправільна памяняць гэтае значэнне, то можна загубіць прадукцыйнасць VictoriaMetrics. Напрыклад, калі ўсталяваць занізкае значэнне, то дадзеныя могуць перастаць змяшчацца ў кэш VictoriaMetrics. З-за гэтага ёй давядзецца рабіць лішнюю працу і нагружаць працэсар з дыскам. Калі вы зробіце гэтую опцыю занадта вялікі, тое гэта падвышае, па-першае, верагоднасць таго, што VictoriaMetrics будзе вылятаць з памылкай out of memory, і, па-другое, гэта будзе прыводзіць да таго, што ў аперацыйнай сістэме будзе заставацца вельмі мала аператыўнай памяці для файлавага кэша. А VictoriaMetrics належыць на файлавы кэш для прадукцыйнасці. Калі яго недастаткова, тое можа моцна павялічыцца нагрузка на дыск. Таму парада: не мяняць параметр без крайняй неабходнасці.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Другая опцыя. Гэта retentionPeriod - перыяд, які па змаўчанні выстаўлены ў 1 месяц. Гэты час, на працягу якога VictoriaMetrics захоўвае дадзеныя. Па заканчэнні гэтага тэрміна VictoriaMetrics дадзеныя выдаляе.

Многія запускаюць VictoriaMetrics без гэтага параметра, запісваюць дадзеныя на працягу месяца. А потым пытаюцца: чаму дадзеныя зніклі за папярэдні месяц? Таму што retentionPeriod па змаўчанні роўны 1 месяцу. Таму трэба ведаць і ўсталёўваць правільны retentionPeriod.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Пройдземся па ўнікальных магчымасцях.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У Thanos ёсць такая фіча, як downsampling: 5-хвілінныя і вартавыя інтэрвалы, якія часта няправільна працуюць. Калі трошкі і паглядзець іх issue на github, там вельмі шмат issues, звязаных з гэтым downsampling, што ён часам няправільна працуе, альбо працуе не так, як чакаюць карыстальнікі.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У Thanos ёсць дэдуплікацыя дадзеных для Prometheus HA pairs. Калі два Prometheus'а збіраюць адны і тыя ж метрыкі з адных і тых жа target'у і Thanos іх складае ў Object Storage. Thanos умее правільна дэдуплікаваць гэтыя дадзеныя, у адрозненне ад VictoriaMetrics.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У Thanos ёсць alert кампанент, які быў на схеме Thanos. Але яго не рэкамендуецца выкарыстоўваць у production.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У Thanos перавага, што код у Thanos і ў Prometheus – агульны. Thanos і Prometheus распрацаваны аднымі і тымі ж распрацоўшчыкамі. Пры паляпшэннях у Thanos або Prometheus выйграе іншы бок.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У VictoriaMetrics галоўная фіча гэта – MetricsQL. Гэта пашырэнні VictoriaMetrics для PromQL, пра якія я расказваў на папярэднім big monitoring metup.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

VictoriaMetrics падтрымлівае заліванне дадзеных па мностве розных пратаколаў. VictoriaMetrics не толькі можа прымаць дадзеныя ад Prometheus, але і па пратаколах Influx, OpenTSDB і Graphite.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Дадзеныя VictoriaMetrics займаюць звычайныя нашмат менш месцы ў параўнанні з Thanos і Prometheus.

Калі запісваць рэальныя дадзеныя, то карыстачы кажуць аб 2-5 кратным памяншэнне памеру дадзеных на дыску ў параўнанні з Prometheus і Thanos.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Яшчэ адна перавага VictoriaMetrics яна аптымізаваная пад хуткасць.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Пройдзем па кошце інфраструктуры.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Адно з пераваг Thanos у тым, што ён захоўвае дадзеныя ў object storage, які параўнальна танны.

Пры захаванні дадзеных у object storage, вы павінны аплачваць аперацыі запіс і чытанні дадзеных ($10 за мільён аперацый). Калі вы запісваеце дадзеныя ў object storage, вы аплачваеце выдаткі вашага хостынгу на загрузку дадзеных у інтэрнэт, калі ваш кластар знаходзіцца не ў AWS - там бясплатна. Калі вы счытваеце дадзеныя, вы аплачваеце ад $10 да $230 за 1ТБ. Гэта можа быць істотна, калі вы часта запытваеце гістарычныя дадзеныя з Thanos кластара.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Для Thanos кластара трэба аплачваць сервера для Compact, Store Gateway, Query кампанентаў, якія патрабуе шмат памяці, ЦПУ для вялікіх аб'ёмаў даных.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У VictoriaMetrics выдаткі такія. Калі захоўваць дадзеныя на GCE HDD дысках, тое выходзіць $40 за 1ТБ. Для VictoriaMetrics дастаткова звычайных HDD дыскаў, не патрэбныя ніякія SSD, якія каштуюць раз у пяць даражэй. VictoriaMetrics аптымізавана пад HDD.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Для VictoriaMetrics патрэбныя серверы для кампанентаў: альбо Single-nod альбо для кластарных кампанентаў, якія ў адрозненне ад Thanos кампанентаў, патрабуе нашмат менш ЦПУ, АЗП – адпаведна будзе танней.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Прыклады ўкаранення.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У Thanos прыклад укаранення гэта Gitlab. Gitlab поўнасцю працуе на Thanos. Але тамака не ўсё так гладка. Калі паглядзець па іх пытанняў, то можна ўбачыць што ў іх увесь час узнікаюць нейкія аперацыйныя праблемы з Thanos: бракуе памяці для Store Gateway або Query кампанентаў. Ім увесь час даводзіцца павялічваць аб'ём памяці.

З-за гэтага павялічваюцца выдаткі на вырашэнне гэтых праблем.

Другое ўкараненне, якое можа быць больш паспяховае – гэта кампанія Improbable, якія пачалі распрацоўку Thanos. Яны апублікавалі зыходнікі Thanos. Improbable кампанія, якая займаецца распрацоўкай гульнявых рухавічкоў.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

У VictoriaMetrics публічныя прыклады ўкаранення гэта:

  • wix.com канструктар сайтаў
  • Adidas укараняе VictoriaMetrics і нават зрабіў даклад на апошнім PromCon 2019
  • TrafficStars - ad network
  • Seznam.cz - папулярны чэшскі пошукавік.

А далей пайшлі ноўнэйм кампаніі, якія я не магу назваць зараз. Яны не далі згоду.

  • Адзін буйны распрацоўшчык гульняў. Буйней, чым ім Improbable.
  • Буйны распрацоўшчык графічнага ПЗ.
  • Буйны расейскі банк.
  • Еўрапейскі вытворца ветраных турбін, які паспяхова пратэсціраваў VictoriaMetrics. Гэты вытворца ўкараняе VictoriaMetrics для маніторынгу дадзеных, атрыманых з ветраных турбін з хуткасцю 50 сэмплаў у секунду на кожны датчык. У кожнай ветранай турбіне па некалькіх сотняў датчыкаў. У іх некалькі сотняў ветраных турбін.
  • Расейскія авіялініі, якія жадаюць укараніць VictoriaMetrics, але ўсё ніяк не могуць. Мы з імі на стадыі дамовы.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetricsВысновы.

VictoriaMetrics і Thanos вырашаюць падобныя задачы, але рознымі спосабамі:

  • Global query view
  • гарызантальнае маштабаванне
  • адвольны retention

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Дзякуй.

Чакаем вас на нашым telegram канале.

Выбіраемы сховішча дадзеных для Prometheus: Thanos vs VictoriaMetrics

Толькі зарэгістраваныя карыстачы могуць удзельнічаць у апытанні. Увайдзіце, Калі ласка.

Што вы карыстаецеся ў якасці long term storage для Prometheus?

  • 35,3%Танос6

  • 0,0%Cortex0

  • 0,0%M3DB0

  • 41,2%VictoriaMetrics7

  • 23,5%іншае4

Прагаласавалі 17 карыстальнікаў. Устрымаліся 16 карыстальнікаў.

Крыніца: habr.com

Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы 🔥 Купіць надзейны хостынг для сайтаў з абаронай ад DDoS, VPS VDS серверы | ProHoster