{"id":54601,"date":"2019-12-30T00:00:00","date_gmt":"2019-12-29T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/vybiraem-hranilishhe-dannyh-dlya-prometheus-thanos-vs-victoriametrics"},"modified":"2020-02-18T14:02:38","modified_gmt":"2020-02-18T11:02:38","slug":"vybiraem-hranilishhe-dannyh-dlya-prometheus-thanos-vs-victoriametrics","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/vybiraem-hranilishhe-dannyh-dlya-prometheus-thanos-vs-victoriametrics","title":{"rendered":"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Cze\u015b\u0107 wszystkim. Poni\u017cej przedstawiam transkrypcj\u0119 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=HyOXAdQE0Pk\">referatu z Big Monitoring Meetup 4<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\">Prometheus<\/a><\/noindex><\/strong> \u2013 system monitorowania r\u00f3\u017cnych system\u00f3w i us\u0142ug, dzi\u0119ki kt\u00f3remu administratorzy system\u00f3w mog\u0105 zbiera\u0107 informacje o aktualnych parametrach system\u00f3w i ustawia\u0107 powiadomienia, aby otrzymywa\u0107 informacje o odchyleniach w pracy system\u00f3w.<\/p>\n<p><\/p>\n<p>Referat zawiera por\u00f3wnanie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\">Thanos<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\">VictoriaMetrics<\/a><\/noindex> \u2014 projekt\u00f3w do d\u0142ugoterminowego przechowywania metryk Prometheus.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/b65866353c1f816a8cb2a90af1ceac23.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"HyOXAdQE0Pk\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/HyOXAdQE0Pk\/hqdefault.jpg\" alt=\"Odtwarzaj wideo\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/dc3c90711a8102d3e70b972ca47ec152.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Na pocz\u0105tku opowiem o Prometheusie. To system monitorowania, kt\u00f3ry zbiera metryki z okre\u015blonych cel\u00f3w i zapisuje je w lokalnym magazynie. Prometheus potrafi zapisywa\u0107 metryki w zdalnym magazynie, generowa\u0107 alerty i regu\u0142y nagrywania. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/e9852597e74c675d2216d971f19857c2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"ogranicheniya-prometheus\">Ograniczenia Prometheusa:<\/h3>\n<p><\/p>\n<ul>\n<li>Nie ma globalnego widoku zapyta\u0144. To wtedy, gdy masz kilka niezale\u017cnych instancji Prometheusa. Zbieraj\u0105 one metryki, a ty chcesz zrobi\u0107 zapytanie nad wszystkimi tymi metrykami, zebranymi z r\u00f3\u017cnych instancji Prometheusa. Prometheus tego nie pozwala.<\/li>\n<li>W przypadku Prometheusa wydajno\u015b\u0107 jest ograniczona tylko do jednego serwera. Prometheus nie mo\u017ce automatycznie skalowa\u0107 si\u0119 na kilka serwer\u00f3w. Mo\u017cesz tylko r\u0119cznie podzieli\u0107 swoje cele mi\u0119dzy kilka instancji Prometheusa.<\/li>\n<li>Obj\u0119to\u015b\u0107 metryk w Prometheusie jest ograniczona tylko do jednego serwera z tego samego powodu, dla kt\u00f3rego nie mo\u017ce automatycznie skalowa\u0107 si\u0119 na kilka serwer\u00f3w.<\/li>\n<li>W Prometheusie nie jest \u0142atwo zorganizowa\u0107 przechowywanie danych.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/c140d41f1fe39d33e1fc84f5cc111481.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"resheniya-etih-problemzadach\">Rozwi\u0105zania tych problem\u00f3w\/zada\u0144?<\/h3>\n<p><\/p>\n<p>Rozwi\u0105zania s\u0105 nast\u0119puj\u0105ce:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\">Thanos<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\">VictoriaMetrics<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/m3db\">Uber M3<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/cortexproject\/cortex\">Cortex<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Wszystkie te rozwi\u0105zania dotycz\u0105 zdalnego przechowywania danych, zbieranych przez Prometheusa. Rozwi\u0105zuj\u0105 problem zdalnego magazynu z poprzedniego slajdu na r\u00f3\u017cne sposoby. W tej prezentacji opowiem tylko o dw\u00f3ch pierwszych rozwi\u0105zaniach: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\">Thanos<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\">VictoriaMetrics<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Po raz pierwszy informacje o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\">Thanos<\/a><\/noindex> pojawi\u0142y si\u0119 w <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\/blog\/thanos-prometheus-at-scale\">tym linkiem<\/a><\/noindex>. Tam opisana jest architektura <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\">Thanos<\/a><\/noindex> i jak to dzia\u0142a.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/317db6bb4c3cd69d8742addb2bae16a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos bierze dane, kt\u00f3re zosta\u0142y zapisane przez Prometheusa na lokalnym dysku, i kopiuje je do S3, do <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/storage\/\">GCS<\/a><\/noindex> lub do innego obiektu magazynowego.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/7cf5f99dc5ce78f22c5956373812c0aa.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W ten spos\u00f3b Thanos zapewnia globalny widok zapyta\u0144. Mo\u017cesz zapytywa\u0107 dane zapisane w obiekcie magazynowym z kilku instancji Prometheusa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/286cf441fe18fb756c2708086872d8d8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos obs\u0142uguje PromQL i <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/docs\/prometheus\/latest\/querying\/api\/\">API zapyta\u0144 Prometheusa<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/6a750070d76414370501a8153cd48007.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos wykorzystuje kod Prometheusa do przechowywania danych.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/ba0ca17154f9407900efc336f213ba07.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos jest rozwijany przez tych samych programist\u00f3w, kt\u00f3rzy pracuj\u0105 nad Prometheusem.<\/p>\n<p><\/p>\n<p>O <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\">VictoriaMetrics<\/a><\/noindex>. Oto <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/faun\/victoriametrics-creating-the-best-remote-storage-for-prometheus-5d92d66787ac\">link<\/a><\/noindex>, gdzie po raz pierwszy opowiedziano o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\">VictoriaMetrics<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/a901d016e6e58c40c6c7c96b1cd5a8c9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>VictoriaMetrics pobiera dane z kilku Prometheusa przez <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/docs\/practices\/remote_write\/\">remote write API<\/a><\/noindex> protok\u00f3\u0142 wspierany przez Prometheusa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/24798414102cc63a1a1062c5ae327f4c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>VictoriaMetrics zapewnia globalny widok zapyta\u0144, poniewa\u017c wiele instancji Prometheus mo\u017ce zapisywa\u0107 dane w jednej instancji VictoriaMetrics. Mo\u017cesz zatem wykonywa\u0107 zapytania na podstawie wszystkich tych danych.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/a717855dbdf1df859927a75557ee2573.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>VictoriaMetrics obs\u0142uguje r\u00f3wnie\u017c, podobnie jak Thanos \u2014 PromQL oraz API zapyta\u0144 Prometheusa.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/84daf1b7e160e6f9d8a53a83329f2436.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W przeciwie\u0144stwie do Thanos, kod \u017ar\u00f3d\u0142owy VictoriaMetrics zosta\u0142 napisany od podstaw i zoptymalizowany pod k\u0105tem szybko\u015bci oraz zu\u017cycia zasob\u00f3w. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/371dee8d4705438f560245c4e5e7444f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>VictoriaMetrics, w przeciwie\u0144stwie do Thanos, skalowalnie rozwija si\u0119 zar\u00f3wno pionowo, jak i poziomo. Istnieje <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\/blob\/master\/README.md\">wersja jednostanowiskowa<\/a><\/noindex>, kt\u00f3ra skalowalnie rozwija si\u0119 pionowo. Mo\u017cesz zacz\u0105\u0107 z jednym procesorem i 1 GB pami\u0119ci, a nast\u0119pnie stopniowo rozwija\u0107 do setek procesor\u00f3w i 1 TB pami\u0119ci. VictoriaMetrics potrafi wykorzysta\u0107 wszystkie te zasoby. Jej wydajno\u015b\u0107 wzro\u015bnie oko\u0142o 100 razy w por\u00f3wnaniu do systemu z jednym rdzeniem. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/697e77546cda492f8512e7e761c0300f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Historia Thanos zacz\u0119\u0142a si\u0119 w listopadzie 2017 roku, kiedy to pojawi\u0142 si\u0119 pierwszy publiczny commit. Wcze\u015bniej Thanos by\u0142 rozwijany wewn\u0119trznie w firmie <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\">improbable.io<\/a><\/noindex>. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/610a81cfb98082bb61b7ae28b00d2c78.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W czerwcu 2019 roku mia\u0142a miejsce znacz\u0105ca wersja 0.5.0, w kt\u00f3rej <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/proposals\/201809_gossip-removal.md\/\">usuni\u0119to<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">protok\u00f3\u0142 gossip.<\/a><\/noindex> Zosta\u0142 usuni\u0119ty z Thanos, poniewa\u017c nie sprawdzi\u0142 si\u0119 najlepiej. Cz\u0119sto klaster Thanos dzia\u0142a\u0142 niew\u0142a\u015bciwie, w\u0119z\u0142y \u0142\u0105czy\u0142y si\u0119 b\u0142\u0119dnie z powodu protoko\u0142u gossip. Dlatego postanowiono go usun\u0105\u0107. Uwa\u017cam, \u017ce to w\u0142a\u015bciwa decyzja. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/d7ecf0105d46464aadc4c46147edf9dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W tym samym czerwcu 2019 roku z\u0142o\u017cyli\u015bmy wniosek numer <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/cncf\/toc\/pull\/256\">256<\/a><\/noindex> do <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cncf.io\/\">Cloud Native Computing Foundation<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/a8685a616bbdc619009c570e28c9f15b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>I po kilku miesi\u0105cach przyj\u0119to Thanos do <noindex><a rel=\"nofollow\" href=\"https:\/\/www.cncf.io\/\">Cloud Native Computing Foundation<\/a><\/noindex>, w kt\u00f3rym znajduj\u0105 si\u0119 Prometheus, Kubernetes i inne popularne projekty.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/90c64c519aa283b13ce64b96da5ac945.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W styczniu 2018 roku rozpocz\u0119to rozw\u00f3j VictoriaMetrics.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/c2243e3e0a8d00715644d7c84627c5cb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W wrze\u015bniu 2018 po raz pierwszy publicznie wspomnia\u0142em o VictoriaMetrics.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/66feecad1783c36651cdf2a19e6d0d70.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W grudniu 2018 roku opublikowano wersj\u0119 jednostanowiskow\u0105.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/aacf5d683c7d639df7a9f05e297f08c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W maju 2019 <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.usejournal.com\/open-sourcing-victoriametrics-f31e34485c2b\">opublikowano<\/a><\/noindex> \u017ar\u00f3d\u0142a zar\u00f3wno wersji jednostanowiskowej, jak i klastrowej. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/6da160c13c87133b1994ef32f86db077.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W czerwcu 2019, tak jak Thanos, z\u0142o\u017cyli\u015bmy wniosek do fundacji CNCF pod numerem <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/cncf\/toc\/pull\/255\">255<\/a><\/noindex>. Z\u0142o\u017cyli\u015bmy wniosek dzie\u0144 wcze\u015bniej ni\u017c Thanos. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/12c281eae67b3cec5a66fab41aee1fdb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ale, niestety, do tej pory nie zostali\u015bmy tam przyj\u0119ci. Wymagana jest pomoc spo\u0142eczno\u015bci.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/ab7b20661c3cfa01209cd742eb71a898.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Przyjrzyjmy si\u0119 najwa\u017cniejszym slajdom, kt\u00f3re przedstawiaj\u0105 architektur\u0119 Thanos i VictoriaMetrics.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/a268b600bcd0cebfd9c5069d2d911a9d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zacznijmy od Thanos. \u017b\u00f3\u0142te komponenty to komponenty Prometheus. Wszystko inne to komponenty Thanos. Zacznijmy od najwa\u017cniejszego komponentu. Thanos Sidecar to komponent, kt\u00f3ry jest instalowany obok ka\u017cdego Prometheusa. Zajmuje si\u0119 on \u0142adowaniem danych Prometheusa z lokalnej pami\u0119ci masowej do S3 lub innej pami\u0119ci obiektowej. <\/p>\n<p><\/p>\n<p>Jest jeszcze taki komponent jak Thanos Store Gateway, kt\u00f3ry potrafi odczytywa\u0107 te dane z Object Storage przy przychodz\u0105cych zapytaniach od Thanos Query. Thanos Query implementuje PromQL i API Prometheusa. Na zewn\u0105trz wygl\u0105da jak Prometheus. Przyjmuje zapytania PromQL, wysy\u0142a je do Thanos Store Gateway, a Thanos Store Gateway pobiera potrzebne dane z Object Storage i wysy\u0142a je z powrotem.<\/p>\n<p><\/p>\n<p>Jednak w naszym Object Storage przechowywane s\u0105 dane bez ostatnich dw\u00f3ch godzin z powodu specyfiki dzia\u0142ania Thanos Sidecar, kt\u00f3ry nie mo\u017ce za\u0142adowa\u0107 ostatnich dw\u00f3ch godzin do Object Storage S3, poniewa\u017c dla tych dw\u00f3ch godzin Prometheus jeszcze nie stworzy\u0142 plik\u00f3w w lokalnym magazynie.<\/p>\n<p><\/p>\n<p>Jak wi\u0119c rozwi\u0105zano ten problem? Thanos Query, opr\u00f3cz zapyta\u0144 do Thanos Store Gateway, r\u00f3wnolegle wysy\u0142a zapytania r\u00f3wnie\u017c do ka\u017cdego Thanos Sidecar, kt\u00f3re znajduj\u0105 si\u0119 blisko Prometheusa. <\/p>\n<p><\/p>\n<p>A Thanos Sidecar z kolei przekazuje zapytania dalej do Prometheusa i pobiera dane z ostatnich dw\u00f3ch godzin.<\/p>\n<p><\/p>\n<p>Opr\u00f3cz tych komponent\u00f3w istnieje jeszcze opcjonalny komponent, bez kt\u00f3rego Thanos nie b\u0119dzie funkcjonowa\u0107 prawid\u0142owo. To Thanos Compact, kt\u00f3ry zajmuje si\u0119 scalaniem ma\u0142ych plik\u00f3w w magazynie obiekt\u00f3w w wi\u0119ksze pliki, kt\u00f3re zosta\u0142y za\u0142adowane przez Thanos Sidecary. Thanos Sidecar \u0142aduje tam pliki z danymi za dwa godziny. Te pliki, je\u015bli nie s\u0105 scalane w wi\u0119ksze, mog\u0105 znacznie si\u0119 pomno\u017cy\u0107. Im wi\u0119cej takich plik\u00f3w, tym wi\u0119cej pami\u0119ci potrzebuje Thanos Store Gateway, a tak\u017ce wi\u0119cej zasob\u00f3w do przesy\u0142ania danych przez sie\u0107 oraz metadanych. Praca Thanos Store Gateway staje si\u0119 nieefektywna. Dlatego nale\u017cy koniecznie uruchomi\u0107 Thanos Compact, kt\u00f3ry scala ma\u0142e pliki w wi\u0119ksze, aby zredukowa\u0107 ich liczb\u0119 i zmniejszy\u0107 obci\u0105\u017cenie Thanos Store Gateway.<\/p>\n<p><\/p>\n<p>Jest jeszcze taki komponent jak Thanos Ruler. Realizuje on zasady alert\u00f3w Prometheusa i mo\u017ce oblicza\u0107 zasady rejestrowania Prometheusa, aby ponownie zapisywa\u0107 dane w Object Storage. Jednak ten komponent nie jest zalecany do u\u017cycia, poniewa\u017c jest <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\/blob\/master\/docs\/components\/rule.md#risk\">sk\u0142onny do zwracania niepe\u0142nych danych.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Taka jest prosta schemat Thanos. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/3f7cd77a1c056bf7ac245c774d05ea34.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teraz por\u00f3wnajmy to z schematem VictoriaMetrics.<\/p>\n<p><\/p>\n<p>VictoriaMetrics ma 2 wersje: Single-node i wersj\u0119 klastrow\u0105. Single-node dzia\u0142a na jednym komputerze. W Single-node nie ma tych komponent\u00f3w, po prostu jeden plik binarny. Ten plik binarny na slajdzie wygl\u0105da jak ten kwadrat. Wszystko, co znajduje si\u0119 wewn\u0105trz kwadratu, to zawarto\u015b\u0107 pliku binarnego dla wersji Single-node. Nie musisz o nim wiedzie\u0107. Po prostu uruchamiasz plik binarny - i wszystko dzia\u0142a. <\/p>\n<p><\/p>\n<p>Wersja klastra jest bardziej skomplikowana. Zawiera trzy r\u00f3\u017cne komponenty: vmselect, vminsert i vmstorage. Z ich nazw powinno by\u0107 jasne, czym si\u0119 zajmuje ka\u017cdy z nich. Komponent Insert przyjmuje dane w r\u00f3\u017cnych formatach: z API Prometheus remote write, protoko\u0142u Influx line, protoko\u0142u Graphite oraz z protoko\u0142u OpenTSDB. Komponent Insert przyjmuje je, przetwarza i rozdziela pomi\u0119dzy dost\u0119pne komponenty storage, gdzie dane s\u0105 ju\u017c przechowywane. Komponent Select z kolei przyjmuje zapytania w PromQL. Realizuje <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@valyala\/promql-tutorial-for-beginners-9ab455142085\">PromQL<\/a><\/noindex>, a tak\u017ce API zapyta\u0144 Prometheus, i mo\u017ce by\u0107 u\u017cywany jako zamiennik Prometheus w Grafana lub innych klientach API Prometheus. Select przyjmuje zapytanie promql, przetwarza je, odczytuje potrzebne dane do realizacji tego zapytania z w\u0119z\u0142\u00f3w storage, przetwarza te dane i zwraca odpowied\u017a.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/5b4f1ec2504c1bea423e58ced26570bd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Por\u00f3wnajmy trudno\u015b\u0107 instalacji Thanos i VictoriaMetrics.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/39b293fc911b2987a191cc5d98b1c9f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zacznijmy od Thanos. Zanim zaczniemy prac\u0119 z Thanos, nale\u017cy utworzy\u0107 bucket w Object Storage, takim jak S3 lub GCS, aby Thanos Sidecar m\u00f3g\u0142 zapisywa\u0107 tam dane. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/7a59c36c4453f1747067c79d9a9b8e2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nast\u0119pnie dla ka\u017cdego Prometheusa nale\u017cy zainstalowa\u0107 Thanos Sidecar. Przed tym nie zapomnij wy\u0142\u0105czy\u0107 kompresji danych w Prometheus. Kompresja danych okresowo kompaktuje dane w lokalnym magazynie Prometheus, aby zmniejszy\u0107 zu\u017cycie zasob\u00f3w.<\/p>\n<p><\/p>\n<p>Gdy instalujesz Thanos Sidecar do swoich instancji Prometheusa, musisz wy\u0142\u0105czy\u0107 kompresj\u0119 danych, poniewa\u017c Thanos Sidecar nie dzia\u0142a poprawnie przy w\u0142\u0105czonej kompresji danych. Oznacza to, \u017ce tw\u00f3j Prometheus zaczyna zapisywa\u0107 dane w blokach co dwie godziny i przestaje scala\u0107 te bloki w wi\u0119ksze. W zwi\u0105zku z tym, je\u015bli wykonujesz zapytania, kt\u00f3re przekraczaj\u0105 czas ostatnich dw\u00f3ch godzin, nie b\u0119d\u0105 one dzia\u0142a\u0142y tak efektywnie, w por\u00f3wnaniu do tego, jak mog\u0142yby dzia\u0142a\u0107, gdyby kompresja danych by\u0142a w\u0142\u0105czona.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/825b70ede9edd1de6658576e2b824cd1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dlatego Thanos zaleca zmniejszenie czasu przechowywania danych w lokalnym storage do 6-8 godzin, aby zredukowa\u0107 overhead du\u017cej liczby ma\u0142ych blok\u00f3w.<\/p>\n<p><\/p>\n<p>Po zainstalowaniu Thanos Sidecar, musisz dla ka\u017cdego bucketu Object Storage zainstalowa\u0107 dwa komponenty. To Thanos Compactor i Thanos Store Gateway. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/77575d65a75bfd9af8d7dedf0cc5c922.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nast\u0119pnie nale\u017cy zainstalowa\u0107 Thanos Query i skonfigurowa\u0107 go, aby m\u00f3g\u0142 \u0142\u0105czy\u0107 si\u0119 ze wszystkimi Thanos Store Gateway, kt\u00f3re posiadasz, a tak\u017ce umie\u0107 \u0142\u0105czy\u0107 si\u0119 ze wszystkimi Thanos Sidecar.<\/p>\n<p><\/p>\n<p>Mo\u017ce tu by\u0107 ma\u0142y problem. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/6eddee956c58991ccee52891b368f10f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Musisz skonfigurowa\u0107 niezawodne i bezpieczne po\u0142\u0105czenie z Thanos Query do tych komponent\u00f3w. Je\u015bli twoje instancje Prometheusa znajduj\u0105 si\u0119 w r\u00f3\u017cnych centrach danych lub w r\u00f3\u017cnych VPC, po\u0142\u0105czenia z zewn\u0105trz s\u0105 zabronione. Jednak dla dzia\u0142ania Thanos Query musisz jako\u015b skonfigurowa\u0107 po\u0142\u0105czenie i musisz wymy\u015bli\u0107 spos\u00f3b.<\/p>\n<p><\/p>\n<p>Je\u015bli masz wiele takich centr\u00f3w danych, wtedy niezawodno\u015b\u0107 ca\u0142ego systemu maleje. Thanos Query musi ca\u0142y czas utrzymywa\u0107 po\u0142\u0105czenia ze wszystkimi Thanos Sidecar, kt\u00f3re znajduj\u0105 si\u0119 w r\u00f3\u017cnych centrach danych. Przy ka\u017cdym przychodz\u0105cym \u017c\u0105daniu b\u0119dzie kierowa\u0142 zapytania do wszystkich Thanos Sidecar. Je\u015bli po\u0142\u0105czenie zostanie przerwane, otrzymasz albo niekompletny zestaw danych, albo odpowied\u017a 'klaster nie dzia\u0142a'. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/13c3765871568ac0db4014964cb5d752.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W VictoriaMetrics wszystko jest troch\u0119 prostsze. W wersji jednolotnej wystarczy uruchomi\u0107 jeden binarny plik i wszystko dzia\u0142a. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/1edf992a6404f5dea1ae2bd4f4d2d8fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W wersji klastrowej wystarczy uruchomi\u0107 wszystkie powy\u017cej wspomniane trzy typy komponent\u00f3w w dowolnej, potrzebnej ci liczbie lub u\u017cy\u0107 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/helm-charts\/\">helm chart<\/a><\/noindex> do automatyzacji uruchamiania komponent\u00f3w w Kubernetes. Planujemy r\u00f3wnie\u017c stworzy\u0107 operator Kubernetes. Helm chart nie pokrywa niekt\u00f3rych przypadk\u00f3w i mo\u017ce sprawi\u0107, \u017ce strzelisz sobie w stop\u0119. Na przyk\u0142ad pozwala na zmniejszenie liczby w\u0119z\u0142\u00f3w storage, co spowoduje utrat\u0119 danych.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/ad4249222cb5e591d7e7bd0b7f1708c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Po uruchomieniu jednego binarnika lub wersji klastrowej wystarczy doda\u0107 w konfiguracji Prometheus <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/VictoriaMetrics\/VictoriaMetrics\/blob\/master\/README.md#prometheus-setup\">ustawienie dla remote write url<\/a><\/noindex>, aby zacz\u0105\u0142 r\u00f3wnolegle zapisywa\u0107 dane w lokalnym storage oraz w zdalnym storage. Jak zauwa\u017cy\u0142e\u015b, taka konfiguracja powinna dzia\u0142a\u0107 znacznie niezawodniej w por\u00f3wnaniu do konfiguracji Thanos. Nie musimy utrzymywa\u0107 po\u0142\u0105czenia z VictoriaMetrics dla wszystkich Prometheus, poniewa\u017c Prometheus samodzielnie \u0142\u0105czy si\u0119 z VictoriaMetrics i przesy\u0142a dane. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/465ffc6cd77b2ca022b2541851a7ddbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rozwa\u017cmy wsparcie dla Thanos i VictoriaMetrics.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/6043f0d3d99cb3e49837f03d3e6bbb9b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos musi monitorowa\u0107 Sidecar, aby nie przerywa\u0142 przesy\u0142ania danych do Object Storage. Mog\u0105 nast\u0105pi\u0107 przerwy w przesyle danych z powodu b\u0142\u0119d\u00f3w, na przyk\u0142ad je\u015bli chwilowo zerwie si\u0119 po\u0142\u0105czenie sieciowe z Object Storage lub b\u0119dzie on chwilowo niedost\u0119pny. W tym momencie Thanos Sidecar zauwa\u017cy problem, zg\u0142osi b\u0142\u0105d, mo\u017ce ulec awarii i przesta\u0107 dzia\u0142a\u0107. Je\u015bli nie b\u0119dziesz go monitorowa\u0107, przestan\u0105 dociera\u0107 dane do Object Storage. Je\u015bli minie czas retencji (zalecane 6-8 godzin), zaczniesz traci\u0107 dane, kt\u00f3re nie znalaz\u0142y si\u0119 w Object Storage.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/7c6556fecdee4ca4986931c2eebf9895.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos compactor mo\u017ce przesta\u0107 dzia\u0142a\u0107 z powodu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\/issues\/1919\">wy\u015bcig\u00f3w z Sidecar<\/a><\/noindex>. Kompaktory pobieraj\u0105 dane z Object Storage i \u0142\u0105cz\u0105 je w wi\u0119ksze bloki. Poniewa\u017c kompaktory nie s\u0105 synchronizowane z Sidecar, mo\u017ce wydarzy\u0107 si\u0119 co\u015b takiego: Sidecar jeszcze nie zd\u0105\u017cy\u0142 zako\u0144czy\u0107 zapisu bloku, a Compactor decyduje, \u017ce blok jest w pe\u0142ni zapisany. Compactor zaczyna go odczytywa\u0107. Odczytuje blok w niepe\u0142nej formie i przestaje dzia\u0142a\u0107. Zob. szczeg\u00f3\u0142y <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/proposals\/201901-read-write-operations-bucket.md\/\">tutaj<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/7fd00e243009763781b54043dec1e94b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Store Gateway mo\u017ce zwraca\u0107 niesp\u00f3jne dane z powodu wy\u015bcig\u00f3w mi\u0119dzy Compactor a Sidecar. Tutaj sytuacja jest podobna, poniewa\u017c Store Gateway nie jest w \u017caden spos\u00f3b synchronizowany z Compactor i Sidecar. W zwi\u0105zku z tym mog\u0105 wyst\u0119powa\u0107 stany wy\u015bcigu, gdy Store Gateway nie widzi cz\u0119\u015bci danych, lub widzi nadmiarowe dane.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/85fcc811173dda1a42ac8d4e3b212f5e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Komponent zapyta\u0144 w Thanos domy\u015blnie zwraca cz\u0119\u015bciowy wynik, je\u017celi niekt\u00f3re Sidecar lub Store Gateway s\u0105 w danym momencie niedost\u0119pne. Otrzymasz cz\u0119\u015b\u0107 danych i nawet nie b\u0119dziesz \u015bwiadomy, \u017ce otrzyma\u0142e\u015b nie wszystkie dane. Tak dzia\u0142a domy\u015blnie. W podobnej sytuacji VictoriaMetrics zwraca oznaczone dane jako cz\u0119\u015bciowe. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/a9e5a70bdcafae9b98545514ca7a7ff3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W przeciwie\u0144stwie do Thanos, VictoriaMetrics rzadko traci dane. Nawet je\u015bli po\u0142\u0105czenie z Prometheusem do VictoriaMetrics zostanie przerwane, to nie jest problem, poniewa\u017c Prometheus kontynuuje zapisywanie przychodz\u0105cych nowych danych w Write Ahead Log, kt\u00f3rego rozmiar wynosi 2 godziny. Je\u015bli odzyskasz po\u0142\u0105czenie z VictoriaMetrics w ci\u0105gu dw\u00f3ch godzin, dane nie zostan\u0105 utracone. Prometheus <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/blog\/2019\/03\/25\/whats-new-in-prometheus-2.8-wal-based-remote-write\/\">potrafi doda\u0107 dane po przywr\u00f3ceniu po\u0142\u0105czenia z VictoriaMetrics.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/fa4be02056f7338416029bfd8f9d0214.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W przeciwie\u0144stwie do Thanos, kt\u00f3ry zapisuje dane do object storage dopiero po dw\u00f3ch godzinach, Prometheus automatycznie replikuje dane za pomoc\u0105 protoko\u0142u remote write do remote storage, takiego jak VictoriaMetrics. Nie musisz obawia\u0107 si\u0119 utraty local storage w Prometheus. Je\u015bli nagle utraci on local storage, w najgorszym przypadku stracisz ostatnie sekundy danych, kt\u00f3re nie zd\u0105\u017cy\u0142y si\u0119 zapisa\u0107 w remote storage.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/a6e9b2322eb9b3e145603a6b9db1002d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kubernetes automatycznie zarz\u0105dza klastrem, w przeciwie\u0144stwie do Thanos. Wszystkie komponenty Thanos trudno pomie\u015bci\u0107 w jednym klastrze Kubernetes, w przeciwie\u0144stwie do komponent\u00f3w klastrowych VictoriaMetrics.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/5b3d1586fe461a0c6f34de09fdd12845.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>VictoriaMetrics ma bardzo prost\u0105 procedur\u0119 aktualizacji do nowej wersji. Wystarczy zatrzyma\u0107 VictoriaMetrics, zaktualizowa\u0107 pliki binarne i uruchomi\u0107 j\u0105 ponownie. Przy zatrzymywaniu za pomoc\u0105 sygna\u0142u SIGINT wszystkie pliki binarne VictoriaMetrics wykonuj\u0105 graceful shutdown. Prawid\u0142owo zapisuj\u0105 potrzebne dane i zamykaj\u0105 przychodz\u0105ce po\u0142\u0105czenia, aby nic nie zosta\u0142o utracone. Dlatego nic nie stracisz podczas aktualizacji. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/96a52e2f0696172159919536efb68ad3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W VictoriaMetrics \u0142atwo rozszerzy\u0107 klaster. Wystarczy doda\u0107 potrzebne komponenty i kontynuowa\u0107 prac\u0119. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/5f5e6ef78b322bb278e618a526f05e26.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O pu\u0142apkach w Thanos i VictoriaMetrics.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/17808bc76a16e571b7e4fa1655964201.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos ma nast\u0119puj\u0105ce pu\u0142apki. Prometheus musi przechowywa\u0107 dane za ostatnie dwie godziny. Je\u015bli zostan\u0105 utracone, stracisz je ca\u0142kowicie, poniewa\u017c nie zd\u0105\u017cy\u0142y si\u0119 jeszcze zapisa\u0107 w Object Storage, takim jak S3. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/81ca9135d2d97b95e9731dd1f5501859.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Komponent Store Gateway i komponent compactor mog\u0105 wymaga\u0107 du\u017co pami\u0119ci do pracy z du\u017cym Object Storage, je\u015bli przechowywanych jest wiele ma\u0142ych plik\u00f3w. Im wi\u0119ksza liczba i rozmiar plik\u00f3w, tym wi\u0119cej pami\u0119ci operacyjnej wymaga Store Gateway i compactor do przechowywania metainformacji. Thanos ma wiele problem\u00f3w zwi\u0105zanych z tym, \u017ce <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\/issues\/448\">Store Gateway i compactor padaj\u0105 przy \u015brednich wolumenach zapisanych danych.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/cf75315535439843c9bb32cf1175391b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos reklamuje si\u0119, \u017ce mo\u017ce skalowa\u0107 si\u0119 w niesko\u0144czono\u015b\u0107 w odniesieniu do liczby twoich Prometheus. W rzeczywisto\u015bci to nieprawda. Poniewa\u017c wszystkie zapytania przechodz\u0105 przez komponent Query, kt\u00f3ry musi r\u00f3wnolegle przeskanowa\u0107 wszystkie komponenty Store Gateway i wszystkie komponenty Sidecar, wydoby\u0107 stamt\u0105d dane, a nast\u0119pnie je wst\u0119pnie przetworzy\u0107. Oczywi\u015bcie pr\u0119dko\u015b\u0107 zapyta\u0144 jest ograniczona przez najs\u0142absze ogniwo, najs\u0142abszy Store Gateway albo najs\u0142abszy Sidecar. <\/p>\n<p><\/p>\n<p>Te komponenty mog\u0105 by\u0107 obci\u0105\u017cone nier\u00f3wnomiernie. Na przyk\u0142ad, masz Prometheusa, kt\u00f3ry zbiera miliony metryk na sekund\u0119. I jest Prometheus, kt\u00f3ry zbiera tysi\u0105ce metryk na sekund\u0119. Prometheus, kt\u00f3ry zbiera miliony metryk na sekund\u0119, znacznie mocniej obci\u0105\u017ca serwer, na kt\u00f3rym dzia\u0142a. Odpowiednio, Sidecar b\u0119dzie tam dzia\u0142a\u0142 wolniej. W og\u00f3le wszystko tam dzia\u0142a wolno. Komponent Query bardzo wolno b\u0119dzie pobiera\u0142 dane. W zwi\u0105zku z tym wydajno\u015b\u0107 ca\u0142ego twojego klastra b\u0119dzie ograniczona przez ten wolny Sidecar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/68070f629821a54bfd8ed934d67344fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Domy\u015blnie Thanos zwraca cz\u0119\u015bciowe dane, je\u015bli niekt\u00f3re Sidecar i\/lub Store Gateway s\u0105 niedost\u0119pne. Na przyk\u0142ad, je\u015bli Twoje Sidecar s\u0105 rozproszone po ca\u0142ym \u015bwiecie w r\u00f3\u017cnych centrach danych, prawdopodobie\u0144stwo roz\u0142\u0105czenia i niedost\u0119pno\u015bci komponent\u00f3w znacznie wzrasta. W zwi\u0105zku z tym, w wi\u0119kszo\u015bci przypadk\u00f3w otrzymasz cz\u0119\u015bciowe dane, nawet nie zdaj\u0105c sobie z tego sprawy.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/6a1dea50e739314c23b4370c569b44a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>VictoriaMetrics ma te\u017c swoje pu\u0142apki. Pierwsza pu\u0142apka to opcja, kt\u00f3ra ogranicza ilo\u015b\u0107 pami\u0119ci RAM u\u017cywanej przez pami\u0119\u0107 podr\u0119czn\u0105 VictoriaMetrics. Domy\u015blnie wynosi ona 60% pami\u0119ci RAM maszyny, na kt\u00f3rej dzia\u0142a VictoriaMetrics, lub 60% RAMu poda VictoriaMetrics w Kubernetes.<\/p>\n<p><\/p>\n<p>Je\u015bli niew\u0142a\u015bciwie zmienisz t\u0119 warto\u015b\u0107, mo\u017cesz obni\u017cy\u0107 wydajno\u015b\u0107 VictoriaMetrics. Na przyk\u0142ad, je\u015bli ustawisz zbyt nisk\u0105 warto\u015b\u0107, dane mog\u0105 przesta\u0107 mie\u015bci\u0107 si\u0119 w pami\u0119ci podr\u0119cznej VictoriaMetrics. W zwi\u0105zku z tym b\u0119dzie musia\u0142a wykona\u0107 dodatkow\u0105 prac\u0119 i obci\u0105\u017cy\u0107 procesor oraz dysk. Je\u015bli ta opcja b\u0119dzie zbyt du\u017ca, po pierwsze, zwi\u0119ksza to prawdopodobie\u0144stwo, \u017ce VictoriaMetrics b\u0119dzie wybucha\u0107 z b\u0142\u0119dem out of memory, a po drugie, spowoduje to, \u017ce w systemie operacyjnym pozostanie zbyt ma\u0142o pami\u0119ci RAM dla pami\u0119ci podr\u0119cznej plik\u00f3w. VictoriaMetrics polega na pami\u0119ci podr\u0119cznej plik\u00f3w dla wydajno\u015bci. Je\u015bli jest jej za ma\u0142o, mo\u017ce to znacznie zwi\u0119kszy\u0107 obci\u0105\u017cenie dysku. Dlatego rada: nie zmieniaj tego parametru bez konieczno\u015bci.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/f145833dcbe42c2b62545358cfb204e5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Druga opcja. To retentionPeriod \u2014 okres, kt\u00f3ry domy\u015blnie ustawiony jest na 1 miesi\u0105c. To czas, przez jaki VictoriaMetrics przechowuje dane. Po up\u0142ywie tego terminu VictoriaMetrics usuwa dane.<\/p>\n<p><\/p>\n<p>Wielu uruchamia VictoriaMetrics bez tego parametru, zapisuj\u0105c dane przez miesi\u0105c. A potem pytaj\u0105: dlaczego dane znikn\u0119\u0142y w poprzednim miesi\u0105cu? Poniewa\u017c retentionPeriod domy\u015blnie wynosi 1 miesi\u0105c. Dlatego trzeba zna\u0107 i ustawia\u0107 odpowiedni retentionPeriod. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/377e4e19b7dc5648dd16bff39f4f1651.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Przejd\u017amy do unikalnych mo\u017cliwo\u015bci.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/bca5529a95e94ada650e67dba063ada6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos ma tak\u0105 funkcj\u0119 jak downsampling: 5-minutowe i godzinowe interwa\u0142y, kt\u00f3re cz\u0119sto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\/issues?utf8=%E2%9C%93&amp;q=is%3Aissue+is%3Aopen+downsampling\">dzia\u0142aj\u0105 niepoprawnie.<\/a><\/noindex>Je\u015bli poszuka\u0107 w Google i zobaczy\u0107 ich problemy na GitHubie, jest tam bardzo wiele zg\u0142osze\u0144 zwi\u0105zanych z tym downsamplingiem, kt\u00f3ry czasami dzia\u0142a niepoprawnie lub dzia\u0142a inaczej, ni\u017c oczekuj\u0105 u\u017cytkownicy.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/84f116767826d1174286b45ccf60dfe7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos posiada deduplikacj\u0119 danych dla par Prometheus HA. Kiedy dwa Prometheus zbieraj\u0105 te same metryki z tych samych target i Thanos \u0142\u0105czy je w Object Storage. Thanos potrafi poprawnie deduplikowa\u0107 te dane, w przeciwie\u0144stwie do VictoriaMetrics.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/efd797cafcb339a4900f4d2cddd04638.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos ma komponent alertowy, kt\u00f3ry by\u0142 na schemacie Thanos. Ale jego <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/thanos-io\/thanos\/blob\/master\/docs\/components\/rule.md\">nie zaleca si\u0119 u\u017cywa\u0107 w produkcji.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/87d12ff7b3c33dae9a8eda7a2a95bce1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Thanos ma przewag\u0119, \u017ce kod Thanos i Prometheus jest wsp\u00f3lny. Thanos i Prometheus s\u0105 opracowywane przez tych samych deweloper\u00f3w. Przy poprawkach w Thanos lub Prometheus korzysta druga strona.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/92435f15d58e83eb4d548a8bf5256c30.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>G\u0142\u00f3wn\u0105 cech\u0105 VictoriaMetrics jest MetricsQL. To rozszerzenie VictoriaMetrics dla PromQL, o kt\u00f3rym m\u00f3wi\u0142em na poprzednim wielkim spotkaniu monitoringu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/43a1618a397badc3df9d4eded19be1ec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>VictoriaMetrics obs\u0142uguje wprowadzanie danych za pomoc\u0105 wielu r\u00f3\u017cnych protoko\u0142\u00f3w. VictoriaMetrics mo\u017ce nie tylko przyjmowa\u0107 dane z Prometheus, ale r\u00f3wnie\u017c przez protoko\u0142y Influx, OpenTSDB i Graphite.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/b4bca4b255990f1af11a6ceaf42f46ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dane VictoriaMetrics zajmuj\u0105 zazwyczaj znacznie mniej miejsca w por\u00f3wnaniu do Thanos i Prometheus. <\/p>\n<p><\/p>\n<p>Je\u015bli zapisujesz rzeczywiste dane, u\u017cytkownicy m\u00f3wi\u0105 o 2-5-krotnym zmniejszeniu rozmiaru danych na dysku w por\u00f3wnaniu z Prometheus i Thanos.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/6aeab3c42b45dbd620d328fc43ce4bec.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kolejn\u0105 zalet\u0105 VictoriaMetrics jest to, \u017ce jest zoptymalizowana pod k\u0105tem szybko\u015bci. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/89010a913f0d7b1388b6c62007c7835b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Przejd\u017amy do koszt\u00f3w infrastruktury. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/65bd322bb2a64ac4188e29b79e54763a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jedn\u0105 z zalet Thanos jest to, \u017ce przechowuje dane w object storage, kt\u00f3ry jest stosunkowo tani.<\/p>\n<p><\/p>\n<p>Przy przechowywaniu danych w object storage musisz op\u0142aca\u0107 operacje zapisu i odczytu danych (10 dolar\u00f3w za milion operacji). Kiedy zapisujesz dane w object storage, ponosisz koszty zwi\u0105zane z Twoim hostingiem przy przesy\u0142aniu danych do internetu, je\u015bli Tw\u00f3j klaster nie znajduje si\u0119 w AWS \u2014 tam jest to bezp\u0142atne. Kiedy odczytujesz dane, p\u0142acisz od 10 do 230 dolar\u00f3w za 1TB. To mo\u017ce by\u0107 znacz\u0105ce, je\u015bli cz\u0119sto \u017c\u0105dasz historycznych danych z klastra Thanos.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/7f1b32c75d49efa082201fa55b43f6bb.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dla klastra Thanos trzeba op\u0142aca\u0107 serwery dla komponent\u00f3w Compact, Store Gateway, Query, kt\u00f3re wymagaj\u0105 du\u017cej ilo\u015bci pami\u0119ci i CPU do przetwarzania du\u017cych zbior\u00f3w danych.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/19c90f30760e77f57a658e67507f4f98.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Koszty dla VictoriaMetrics s\u0105 nast\u0119puj\u0105ce. Je\u015bli dane s\u0105 przechowywane na dyskach GCE HDD, wynosi to 40 dolar\u00f3w za 1TB. Dla VictoriaMetrics wystarcz\u0105 zwyk\u0142e dyski HDD, \u017cadne SSD, kt\u00f3re s\u0105 pi\u0119\u0107 razy dro\u017csze, nie s\u0105 potrzebne. VictoriaMetrics jest zoptymalizowana pod k\u0105tem HDD.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/c7e922b4d97f353218d6edad7cdea584.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dla VictoriaMetrics potrzebne s\u0105 serwery dla komponent\u00f3w: albo dla pojedynczego w\u0119z\u0142a, albo dla komponent\u00f3w klastrowych, kt\u00f3re w przeciwie\u0144stwie do komponent\u00f3w Thanos wymagaj\u0105 znacznie mniej CPU i RAM \u2014 co oznacza ni\u017csze koszty. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/aaf63cad75238ba19efb825376cf356c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Przyk\u0142ady wdro\u017ce\u0144. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/53ce0a68724c339d88ad769c18a2e5f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Przyk\u0142ad wdro\u017cenia Thanos to Gitlab. Gitlab ca\u0142kowicie dzia\u0142a na Thanos. Ale nie wszystko jest tak proste. Je\u015bli spojrze\u0107 na ich <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/infrastructure\/issues\/8647\">issues<\/a><\/noindex>, mo\u017cna zobaczy\u0107, \u017ce ci\u0105gle napotykaj\u0105 na jakie\u015b <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/infrastructure\/issues\/8413\">problemy operacyjne z Thanos,<\/a><\/noindex>brakuj\u0105c pami\u0119ci dla komponent\u00f3w Store Gateway lub Query. Musz\u0105 regularnie zwi\u0119ksza\u0107 ilo\u015b\u0107 pami\u0119ci. <\/p>\n<p><\/p>\n<p>Z powodu tego rosn\u0105 koszty rozwi\u0105zania tych problem\u00f3w. <\/p>\n<p><\/p>\n<p>Drugie wdro\u017cenie, kt\u00f3re mo\u017ce by\u0107 bardziej udane, to firma Improbable, kt\u00f3ra rozpocz\u0119\u0142a rozw\u00f3j Thanos. Opublikowali \u017ar\u00f3d\u0142a Thanos. Improbable to firma zajmuj\u0105ca si\u0119 opracowaniem silnik\u00f3w gier.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/3a1279cae3cfc7e94c2eccfc0972f06e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Publiczne przyk\u0142ady wdro\u017cenia VictoriaMetrics to:<\/p>\n<p><\/p>\n<ul>\n<li>wix.com \u2014 konstruktor stron internetowych,<\/li>\n<li>Adidas wdra\u017ca VictoriaMetrics i nawet wyg\u0142osi\u0142 referat na ostatnim PromCon 2019,<\/li>\n<li>TrafficStars \u2014 sie\u0107 reklamowa,<\/li>\n<li>Seznam.cz \u2014 popularna czeska wyszukiwarka.<\/li>\n<\/ul>\n<p><\/p>\n<p>A potem przysz\u0142y firmy bez marki, kt\u00f3rych teraz nie mog\u0119 wymieni\u0107. Nie udzieli\u0142y zgody. <\/p>\n<p><\/p>\n<ul>\n<li>Jeden du\u017cym deweloper gier. Wi\u0119kszy ni\u017c Improbable.<\/li>\n<li>Du\u017cy deweloper oprogramowania graficznego.<\/li>\n<li>Du\u017cy rosyjski bank.<\/li>\n<li>Europejski producent turbin wiatrowych, kt\u00f3ry z powodzeniem przetestowa\u0142 VictoriaMetrics. Ten producent wdra\u017ca VictoriaMetrics do monitorowania danych pozyskiwanych z turbin wiatrowych z szybko\u015bci\u0105 50 pr\u00f3bek na sekund\u0119 na ka\u017cdy czujnik. W ka\u017cdej turbinie wiatrowej jest kilka setek czujnik\u00f3w. Maj\u0105 kilka setek turbin wiatrowych.<\/li>\n<li>Rosyjskie linie lotnicze, kt\u00f3re pragn\u0105 wdro\u017cy\u0107 VictoriaMetrics, ale jako\u015b im si\u0119 to nie udaje. Jeste\u015bmy na etapie negocjacji.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/040affc4d56712783db61ee3b0ec509e.jpg\" style=\"display:block;margin: 0 auto;\" \/>Wnioski.<\/p>\n<p><\/p>\n<p>VictoriaMetrics i Thanos rozwi\u0105zuj\u0105 podobne problemy, ale r\u00f3\u017cnymi sposobami:<\/p>\n<p><\/p>\n<ul>\n<li>Globalny widok zapyta\u0144,<\/li>\n<li>poziome skalowanie, <\/li>\n<li>dowolna retencja.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/af6285e8f6f68f373da1ebc552104f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dzi\u0119kujemy.<\/p>\n<p><\/p>\n<p>Czekamy na Pa\u0144stwa na naszym <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/VictoriaMetrics_ru1\">kanale telegramowym.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wybieramy magazyn danych dla Prometheusa: Thanos vs VictoriaMetrics\" src=\"\/wp-content\/uploads\/2019\/12\/c45b2a3b6e541e7e6cd580629e418c35.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p class=\"for_users_only_msg\">Tylko zarejestrowani u\u017cytkownicy mog\u0105 bra\u0107 udzia\u0142 w ankiecie. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Zaloguj si\u0119<\/a><\/noindex>, prosz\u0119.<\/p>\n<h2 class=\"default-block__polling-title\">Czego u\u017cywasz jako d\u0142ugoterminowego magazynu dla Prometheusa?<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">35,3%<\/strong>Thanos<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>Cortex<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>M3DB<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent  poll-result__data-percent_winner\">41,2%<\/strong>VictoriaMetrics<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">23,5%<\/strong>inne<\/p>\n<\/li>\n<\/ul>\n<p>    17 u\u017cytkownik\u00f3w odda\u0142o g\u0142os. 16 u\u017cytkownik\u00f3w wstrzyma\u0142o si\u0119.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/482272\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u0441 Big Monitoring Meetup 4. Prometheus \u2013 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043e\u0431 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f\u0445 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441\u0438\u0441\u0442\u0435\u043c. \u0412 \u0434\u043e\u043a\u043b\u0430\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 Thanos \u0438 VictoriaMetrics \u2014 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0440\u0438\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54601","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/vybiraem-hranilishhe-dannyh-dlya-prometheus-thanos-vs-victoriametrics\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Prometheus: Thanos vs VictoriaMetrics | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/vybiraem-hranilishhe-dannyh-dlya-prometheus-thanos-vs-victoriametrics\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-29T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:38+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Wybieramy magazyn danych dla Prometheus: Thanos vs VictoriaMetrics | ProHoster","description":"Witajcie wszyscy.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/vybiraem-hranilishhe-dannyh-dlya-prometheus-thanos-vs-victoriametrics","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Prometheus: Thanos vs VictoriaMetrics | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/vybiraem-hranilishhe-dannyh-dlya-prometheus-thanos-vs-victoriametrics","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-29T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:38+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54601","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 12:01:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:02:45","updated":"2026-01-24 12:01:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/54601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=54601"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/54601\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=54601"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=54601"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=54601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}