Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Здравейте на всички. По-долу е представено резюме на доклад от Big Monitoring Meetup 4.

Prometheus – система за мониторинг на различни системи и услуги, която позволява на системните администратори да събират информация за текущите параметри на системите и да настроят известия за получаване на уведомления за отклонения в работата на системите.

В доклада ще бъде направено сравнение Thanos и VictoriaMetrics – на проекти за дългосрочно съхранение на метрики Prometheus.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Възпроизведи видео

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Първо ще разкажа за Prometheus. Това е система за мониторинг, която събира метрики от зададени target’и и ги съхранява в локално хранилище. Prometheus може да записва метрики в дистанционно хранилище, да генерира alert’и и recording rules.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Ограничения на Prometheus:

  • Няма global query view. Това е, когато имате няколко независими инстанции на Prometheus. Те събират метрики и вие искате да направите заявка върху всички тези метрики, събрани от различни инстанции на Prometheus. Prometheus не позволява това.
  • Производителността на Prometheus е ограничена само от един сървър. Prometheus автоматично не може да се мащабира на няколко сървъра. Можете само ръчно да разделите вашите target’и между различни Prometheus инстанции.
  • Обемът на метриките в Prometheus е ограничен само от един сървър по същата причина, поради която не може автоматично да се мащабира на няколко сървъра.
  • В Prometheus не е лесно да се организира съхранението на данни.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Какви решения на тези проблеми/задачи?

Решенията са такива:

Всички тези решения са за дистанционно съхранение на данни, събрани от Prometheus. Те решават проблема с remote storage от предишния слайд по различен начин. В тази презентация ще говоря само за първите две решения: Thanos и VictoriaMetrics.

За първи път информацията за Thanos появи по тази връзка. Там е описана архитектурата Thanos и как работи.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos взема данните, които Prometheus е запазил на локалния диск, и ги копира в S3, в GCS или в друго object storage.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

По този начин Thanos осигурява global query view. Можете да запитвате данни, запазени в object storage от няколко инстанции на Prometheus.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos поддържа PromQL и Prometheus querying API..

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos използва кода на Prometheus за съхранение на данни.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos е разработен от същите разработчици, които разработват и Prometheus.

За VictoriaMetrics. Ето линк, където за първи път разказахме за VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

VictoriaMetrics получава данни от няколко Prometheus чрез remote write API протокол, поддържан от Prometheus.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

VictoriaMetrics предоставя глобален изглед за запитвания, тъй като множество инстанции на Prometheus могат да записват данни в една VictoriaMetrics. Съответно, можете да правите запитвания по тези данни.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

VictoriaMetrics също така поддържа, както Thanos — PromQL и Prometheus API за запитвания.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

В отличие от Thanos, изходният код на VictoriaMetrics е написан от нуле и е оптимизиран за бързина и използвани ресурси.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

VictoriaMetrics, за разлика от Thanos, мащабира и вертикално, и хоризонтално. Има единична версия, която се мащабира вертикално. Можете да започнете с един процесор и 1 ГБ памет и постепенно да нараствате до стотици процесори и 1TB памет. VictoriaMetrics може да използва всичките тези ресурси. Нейната производителност ще нарасне около 100 пъти в сравнение с 1-ядрена система.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Историята на Thanos започна през ноември 2017 г., когато се появи първият публичен комит. Преди това Thanos се развиваше вътре в компанията improbable.io.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

През юни 2019 г. имаше важен релийз 0.5.0, в който беше премахнат госип протокол. Той беше премахнат от Thanos, защото не се представи на добро ниво. Често кластерът Thanos не работеше правилно, нодите се свързваха неправилно поради gossip протокола. Затова решиха да го премахнат. Считам, че това е правилно решение.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

През същия юни 2019 г. те подадоха заявка номер 256 в Cloud Native Computing Foundation.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

И след няколко месеца Thanos беше приет в Cloud Native Computing Foundation, която включва Prometheus, Kubernetes и други популярни проекти.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

През януари 2018 г. започна разработката на VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

През септември 2018 г. за първи път публично споменах VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

През декември 2018 г. публикуваха единична версия.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

През май 2019 бяха публикувани изходниците както на единичната, така и на кластерната версия.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

През юни 2019 г., подобно на Thanos, подадохме заявка в CNCF foundation под номер 255. Подадохме заявката един ден по-рано от Thanos.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Но, за съжаление, все още не сме приети там. Нужна е помощ от общността.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Нека разгледаме най-важните слайдове, показващи архитектурата на Thanos и VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Да започнем с Thanos. Жълтите компоненти — това са компонентите на Prometheus. Всичко останало — това са компонентите на Thanos. Да започнем с най-важния компонент. Thanos Sidecar — това е компонент, който се инсталира до всеки Prometheus. Той отговаря за зареждането на данните на Prometheus от локалното хранилище в S3 или в друг Object Storage.

Има също един компонент, наречен Thanos Store Gateway, който може да прочита тези данни от 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, който обединява малките файлове в по-големи, за да има по-малко файлове и да се намали натоварването на Thanos Store Gateway.

Има също един компонент, наречен Thanos Ruler. Той изпълнява правилата за предупреждение на Prometheus и може да изчислява правилата за запис на Prometheus, за да записва данни отново в Object Storage. Но не се препоръчва да се използва този компонент, тъй като той е склонен да връща непълни данни..

Ето каква е простата схема на Thanos.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Сега нека сравним с схемата на VictoriaMetrics.

VictoriaMetrics има 2 версии: Еднодискова и клъстерна версия. Еднодисковата версия работи на един компютър. В Еднодисковата версия няма тези компоненти, просто един бинарен файл. Този бинарен файл в слайда изглежда с този квадрат. Всичко, което се намира вътре в квадрата, е съдържанието на бинарния файл за Еднодисковата версия. Не е нужно да знаете за него. Просто стартирайте бинарния файл — и всичко работи.

Кластерната версия е по-сложна. Вътре в нея се намират три различни компонента: vmselect, vminsert и vmstorage. От имената им трябва да е ясно с какво се занимава всеки от тях. Компонентът Insert приема данни в различни формати: от Prometheus remote write API, Influx line протокол, Graphite протокол и от OpenTSDB протокол. Компонентът Insert ги приема, парсва и разпределя между наличните storage компоненти, където данните вече се съхраняват. PromQL, както и Prometheus querying API, и може да бъде използван като заместител на Prometheus в Grafana или други клиенти на Prometheus API. Select приема promql запитване, парсва го, чете необходимите данни за изпълнение на това запитване от storage възли, обработва тези данни и връща отговор.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Ще сравним сложността на инсталацията на Thanos и VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Започваме с Thanos. Преди да започнете работа с Thanos, трябва да създадете bucket в Object Storage, като S3 или GCS, за да може Thanos Sidecar да записва данни там.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

След това за всеки Prometheus трябва да инсталирате Thanos Sidecar. Преди това не забравяйте да изключите data compaction в Prometheus. Data compaction периодично компресира данните в локалното хранилище на Prometheus, за да намали потреблението на ресурси.

Когато инсталирате Thanos Sidecar на вашите Prometheus инстанции, трябва да деактивирате data compaction, тъй като Thanos Sidecar не работи правилно с активиран data compaction. Това означава, че вашият Prometheus започва да съхранява данни на блокове от по два часа и спира да обединява тези блокове в по-големи. Следователно, ако правите запитвания, които надвишават продължителността от последните два часа, те няма да работят толкова ефективно в сравнение с начина, по който биха могли да работят, ако беше включен data compaction.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Затова Thanos препоръчва да се намали времето за съхранение на данните (data retention) в локалното хранилище до 6-8 часа, за да се намали този overhead от много малки блокове.

След като инсталирате Thanos Sidecar, трябва да инсталирате два компонента за всеки Object Storage Bucket. Това са Thanos Compactor и Thanos Store Gateway.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

След това трябва да инсталирате Thanos Query и да го конфигурирате, за да може да се свързва с всички Thanos Store Gateway, които имате, и също така да може да се свързва с всички Thanos Sidecar.

Може да се появи малък проблем.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Трябва да настроите надежна и защитена връзка от Thanos Query към тези компоненти. И ако вашите Prometheus са в различни дата центрове или в различни VPC, то свързването отвън е забранено. Но за работата на Thanos Query трябва да настроите връзката и трябва да измислите начин.

Ако имате много такива дата центрове, тогава надеждността на цялата система намалява. Тъй като Thanos Query трябва постоянно да поддържа връзки с всички Thanos Sidecar, разположени в различни дата центрове. При всяка входяща заявка той ще насочва исканията към всички Thanos Sidecar. Ако връзката прекъсне, ще получите или непълен набор от данни, или отговор "клъстерът не работи".

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

В VictoriaMetrics всичко е малко по-просто. За версията с един възел просто трябва да стартирате един бинарен файл и всичко работи.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

При кластерната версия е достатъчно да стартирате всичките три изброени типа компоненти в необходимо от вас количество, или да използвате helm chart за автоматизация на стартирането на компонентите в Kubernetes. Още планираме да направим оператор за Kubernetes. Helm chart не покрива някои случаи и позволява да си простреляте крака. Например, позволява да намалите броя на storage node, което ще доведе до загуба на данни.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

След като стартирате един бинарен файл или кластерната версия, трябва просто да добавите в конфигурацията на Prometheus настройка за remote write url, за да започне да записва данни паралелно в локалното хранилище и отдалеченото хранилище. Както забелязахте, такава конфигурация трябва да работи значително по-надеждно в сравнение с конфигурацията Thanos. Не е нужно да поддържаме връзка от VictoriaMetrics към всички Prometheus, защото Prometheus сами се свързват към VictoriaMetrics и предават данни.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Нека разгледаме поддръжката на Thanos и VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos трябва да наблюдава Sidecar, за да не спира зареждането на данни в Object Storage. Те могат да спрат това зареждане поради грешки при зареждане, например, ако имате временно прекъсване на мрежовото свързване с Object Storage или ако Object Storage е временно недостъпен. В този момент Thanos Sidecar ще забележи това, ще докладва за грешка, може да се срине и след това да спре да работи. Ако не го наблюдавате, данните ви ще спрат да се предават в Object Storage. Ако изтече времето на задържане (препоръчително 6-8 часа), ще загубите данни, които не са попаднали в Object Storage.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos компактори могат да спрат да работят поради състезания с Sidecar. Компактори взимат данни от Object Storage и ги сливат в по-големи блокове. Тъй като компакторите не са синхронизирани с Sidecar, може да се случи следното: Sidecar все още не е успял да запише блока, а Компакторът решава, че този блок е напълно записан. Компакторът започва да го чете. Той чете блока не в пълен вид и спира да работи. Вижте подробности тук.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Store Gateway може да предоставя неконсистентни данни заради състезания между Компактора и Sidecar. Тук е същото, тъй като Store Gateway не е синхронизиран с Компактори и Sidecar. Следователно, могат да възникнат състояния на състезание, при които Store Gateway не вижда част от данните или вижда излишни данни.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Компонентът Query в Thanos по подразбиране предоставя частичен резултат, ако някои Sidecar или Store Gateway не са на разположение в момента. Ще получите част от данните и дори няма да знаете, че не сте получили всичките данни. Това е стандартната му работа. В подобна ситуация VictoriaMetrics връща маркерованите данни като частични.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

В отличие от Thanos, VictoriaMetrics рядко губи данни. Дори ако връзката между Prometheus и VictoriaMetrics е прекъсната, това не е проблем, тъй като Prometheus продължава да записва новите данни в Write Ahead Log, чийто размер е 2 часа. Ако в рамките на два часа възстановите връзката с VictoriaMetrics, данните няма да бъдат загубени. Prometheus може да дописва данни след възстановяване на връзката с VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

За разлика от Thanos, който записва данни в object storage само след два часа, Prometheus автоматично репликира данни по remote write протокола в remote storage, такъв като VictoriaMetrics. Не трябва да се притеснявате за загубата на local storage в Prometheus. Ако случайно загубите local storage, в най-лошия случай ще загубите последните секунди данни, които не са успели да се запишат в remote storage.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Kubernetes автоматично управлява кластера в разлика от Thanos. Всички компоненти на Thanos е трудно да бъдат поставени в един Kubernetes кластер, за разлика от кластерните компоненти на VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

VictoriaMetrics има много лесно обновление към нова версия. Просто спирате VictoriaMetrics, обновявате бинарниците и го стартирате отново. При спиране чрез сигнал SIGINT всички бинарници на VictoriaMetrics извършват graceful shutdown. Те правилно запазват необходимите данни, правилно затварят входящите връзки, за да не загубят нищо. Затова при обновление няма да загубите нищо.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

VictoriaMetrics много лесно разширява клъстера. Просто добавяте необходимите компоненти и продължавате да работите.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

По подводните камъни в Thanos и VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos има следните подводни камъни. Prometheus трябва да съхранява данни за последните два часа. Ако те се загубят, ще ги загубите напълно, тъй като те все още не са успели да се запишат в Object Storage, такъв като S3.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Компонентът Store Gateway и компонентът компактор може да изискват много памет за работа с голям Object Storage, ако там се съхраняват много малки файлове. Колкото повече са броят и обемът на файловете, толкова повече RAM изискват Store Gateway и компактора за съхранение на метаинформацията. Thanos има много проблеми с това, че Store Gateway и компактора падат при средни обеми на записаните данни..

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos се рекламира, че може да се мащабира безкрайно спрямо броя на вашите Prometheus. Всъщност това не е вярно. Тъй като всички заявки минават през компонента Query, който трябва паралелно да опознае всички Store Gateway компоненти и всички Sidecar компоненти, за да изтегли оттам данни и след това да ги предпроцесира. Очевидно е, че скоростта на заявките е ограничена от най-бавния слаб звено, най-бавния Store Gateway или най-бавния Sidecar.

Тези компоненти може да бъдат неравномерно натоварени. Например, имате Prometheus, който събира милиони метрики в секунда. И има Prometheus, в който се събират хиляди метрики в секунда. Prometheus, в който се събират милиони метрики в секунда, натоварва значително повече сървъра, на който работи. Следователно Sidecar там работи по-бавно. И всичко там работи по-бавно. И компонентът Query ще извлича данни оттам много бавно. Следователно производителността на целия ви кластер ще бъде ограничена от този бавен Sidecar.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

По подразбиране Thanos подава частични данни, ако някои Sidecar-и или Store Gateway не са налични. Например, ако имате Sidecar-и разпръснати по целия свят в различни дата центрове, вероятността за прекъсване на връзката и недостъпност на компонентите значително нараства. Следователно, в повечето случаи ще получавате частични данни, дори без да знаете за това.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

VictoriaMetrics също има свои подводни камъни. Първият подводен камък е опцията, която ограничава обема на оперативната памет, използвана за кеша на VictoriaMetrics. По подразбиране тя е 60% от оперативната памет на машината, на която е стартирана VictoriaMetrics, или 60% от RAM на пода на VictoriaMetrics в Kubernetes.

Ако тази стойност бъде променена неправилно, можно да се влоши производителността на VictoriaMetrics. Например, ако зададете твърде ниска стойност, данните може да спрат да се побират в кеша на VictoriaMetrics. Поради това ще й се наложи да извършва излишна работа и да натоварва процесора с диска. Ако направите тази опция твърде голяма, това повишава, от една страна, вероятността VictoriaMetrics да се срути с грешка out of memory, а от друга страна, това ще доведе до много малко оперативна памет за файловия кеш в операционната система. А VictoriaMetrics разчита на файловия кеш за производителност. Ако той е недостатъчен, натоварването на диска може да се увеличи значително. Затова съвет: не променяйте параметъра без крайна необходимост.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Втората опция е retentionPeriod — периодът, който по подразбиране е зададен на 1 месец. Това е времето, в което VictoriaMetrics съхранява данните. След изтичането на този срок, VictoriaMetrics изтрива данните.

Много хора стартират VictoriaMetrics без този параметър, записват данни в продължение на месец. А после питат: защо данните изчезнаха от предходния месец? Защото retentionPeriod по подразбиране е 1 месец. Следователно е нужно да знаете и да зададете правилния retentionPeriod.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Нека разгледаме уникалните възможности.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos има функция, известна като downsampling: 5-минутни и часови интервали, които често не работят правилно. Ако потърсите в Google и погледнете техните проблеми в GitHub, там има много проблеми, свързани с този downsampling, и той понякога не работи правилно или не работи така, както очакват потребителите.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos предлага дедупликация на данните за Prometheus HA двойки. Когато два Prometheus-а събират същите метрики от едни и същи целеви системи и Thanos ги складира в Object Storage. Thanos може правилно да дедуплицира тези данни, за разлика от VictoriaMetrics.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos разполага с alert компонент, който беше показан в схемата на Thanos. Но не се препоръчва да се използва в продукция.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Thanos има предимство, че кодът на Thanos и Prometheus е общ. Thanos и Prometheus са разработени от едни и същи разработчици. При подобрения в Thanos, Prometheus също печели.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Основната функция на VictoriaMetrics е MetricsQL. Това е разширение на VictoriaMetrics за PromQL, за което говорих на предходния голям мониторинг среща.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

VictoriaMetrics поддържа запис на данни чрез множество различни протоколи. VictoriaMetrics не само може да приема данни от Prometheus, но и през протоколите Influx, OpenTSDB и Graphite.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Данните на VictoriaMetrics заемат значително по-малко пространство в сравнение с Thanos и Prometheus.

Ако записвате реални данни, потребителите съобщават за 2-5 кратно намаляване на размера на данните на диска в сравнение с Prometheus и Thanos.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Още едно предимство на VictoriaMetrics е, че тя е оптимизирана за скорост.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Нека видим разходите за инфраструктурата.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Едно от предимствата на Thanos е, че той съхранява данните в object storage, който е сравнително евтин.

Когато съхранявате данни в object storage, вие трябва да плащате за операции по запис и четене на данни (10 долара за един милион операции). Когато записвате данни в object storage, плащате за разходите на вашето хостинг за качване на данни в интернет, ако вашият клъстер не е в AWS — там е безплатно. Когато четете данни, плащате от 10 до 230 долара за 1TB. Това може да бъде значимо, ако често искате исторически данни от клъстера на Thanos.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

За Thanos клъстера е необходимо да се заплащат сървъри за компонентите Compact, Store Gateway и Query, които изискват много памет и ЦПУ за големи обеми данни.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Разходите за VictoriaMetrics са такива. Ако се съхраняват данни на GCE HDD дискове, то излиза $40 за 1ТБ. За VictoriaMetrics са достатъчни обикновени HDD дискове, не са необходими SSD, които струват пет пъти повече. VictoriaMetrics е оптимизирана за HDD.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

За VictoriaMetrics са нужни сървъри за компонентите: или Single-node, или за клъстерни компоненти, които, за разлика от Thanos компонентите, изискват значително по-малко ЦПУ и ОЗУ — съответно ще бъде по-евтино.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Примери за внедряване.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Пример за внедряване на Thanos е Gitlab. Gitlab работи напълно на Thanos. Но не всичко е толкова гладко. Ако погледнем техния issues, можем да видим, че постоянно се появяват някакви оперативни проблеми с Thanos: не достига памет за компонентите Store Gateway или Query. Те постоянно трябва да увеличават обема на паметта.

Това увеличава разходите за решаване на тези проблеми.

Второто внедряване, което може да бъде по-успешно, е компанията Improbable, която започна разработка на Thanos. Те публикуваха изходния код на Thanos. Improbable е компания, която се занимава с разработка на игрални платформи.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Публични примери за внедряване на VictoriaMetrics са:

  • wix.com конструктор за уебсайтове
  • Adidas внедрява VictoriaMetrics и дори направи доклад на последния PromCon 2019
  • TrafficStars — рекламна мрежа
  • Seznam.cz — популярен чешки търсач.

А следват ноунейм компании, които не мога да назова в момента. Те не дадоха съгласие.

  • Един голям разработчик на игри. По-голям, отколкото Improbable.
  • Голям разработчик на софтуер за графика.
  • Голям руски банк.
  • Европейски производител на вятърни турбини, който успешно тества VictoriaMetrics. Този производител внедрява VictoriaMetrics за мониторинг на данни, получени от вятърни турбини с честота от 50 сэмпла в секунда на всеки сензор. Във всяка вятърна турбина има по няколко стотин сензора. Те имат няколко стотин вятърни турбини.
  • Руски авиолинии, които искат да внедрят VictoriaMetrics, но все още не могат. Ние сме на етап договаряне с тях.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetricsИзводи.

VictoriaMetrics и Thanos решават подобни задачи, но по различни начини:

  • Глобален преглед на заявките
  • хоризонтално мащабиране
  • произволен retention

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Благодаря.

Очакваме ви в нашия telegram канал.

Избираме хранилище данни за Prometheus: Thanos срещу VictoriaMetrics

Само регистрирани потребители могат да участват в анкетата. Влезте, моля.

Какво използвате за long term storage за Prometheus?

  • 35,3%Thanos6

  • 0,0%Cortex0

  • 0,0%M3DB0

  • 41,2%VictoriaMetrics7

  • 23,5%друго4

Гласували 17 потребители. Въздържали се 16 потребители.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster