{"id":81888,"date":"2020-05-17T13:42:23","date_gmt":"2020-05-17T11:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus"},"modified":"2020-05-17T13:42:23","modified_gmt":"2020-05-17T11:42:23","slug":"thanos-masshtabiruemyj-prometheus","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","title":{"rendered":"Thanos \u2014 skalabilni Prometheus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Prevod \u010dlanka je pripravljen posebej za \u0161tudente te\u010daja <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">\u00abDevOps prakse in orodja\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p>\n<i><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/fabxc\">Fabian Reinartz<\/a><\/noindex> \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0444\u0430\u043d\u0430\u0442 Go \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043c\u044d\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Prometheus \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c Kubernetes SIG instrumentation. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043e\u043d \u0431\u044b\u043b production-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432 SoundCloud \u0438 \u0432\u043e\u0437\u0433\u043b\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432 CoreOS. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Google.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Bplotka\">Bartek Plotka<\/a><\/noindex> \u2014 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u0432 Improbable. \u0423\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u043c\u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438 \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0418\u043c\u0435\u0435\u0442 \u043e\u043f\u044b\u0442 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Intel, \u043e\u043f\u044b\u0442 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430 \u0432 Mesos \u0438 production-\u043e\u043f\u044b\u0442 SRE \u043c\u0438\u0440\u043e\u0432\u043e\u0433\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u0432 Improbable. \u0417\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u0438\u0440\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0422\u0440\u0438 \u0435\u0433\u043e \u043b\u044e\u0431\u0432\u0438: Golang, open source \u0438 \u0432\u043e\u043b\u0435\u0439\u0431\u043e\u043b.<\/i><\/p>\n<p>\u0413\u043b\u044f\u0434\u044f \u043d\u0430 \u043d\u0430\u0448 \u0444\u043b\u0430\u0433\u043c\u0430\u043d\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 SpatialOS, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u043b\u044f Improbable \u043d\u0443\u0436\u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u0430\u044f \u043e\u0431\u043b\u0430\u0447\u043d\u0430\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430 \u0441 \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Kubernetes. \u041c\u044b \u0431\u044b\u043b\u0438 \u043e\u0434\u043d\u0438\u043c\u0438 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445, \u043a\u0442\u043e \u043d\u0430\u0447\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 <noindex><a rel=\"nofollow\" href=\"https:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex>. Prometheus \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u043c\u0435\u0442\u0440\u0438\u043a \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043c\u043e\u0449\u043d\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u043c \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c Prometheus \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0435\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u0440\u043e\u0439\u0434\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431, \u043c\u044b \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430\u043c\u0438. \u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 <noindex><a rel=\"nofollow\" href=\"https:\/\/thanos.io\/\">Thanos<\/a><\/noindex> \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Improbable, \u0434\u043b\u044f \u0431\u0435\u0441\u0448\u043e\u0432\u043d\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 Prometheus \u0432 \u0435\u0434\u0438\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0441 \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. Thanos \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 Github <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">ovde<\/a><\/noindex>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gdk.improbable.io\/l\/169082\/2020-01-10\/2j9yxq\">\u0411\u0443\u0434\u044c\u0442\u0435 \u0432 \u043a\u0443\u0440\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u043e\u0442 Improbable.<\/a><\/noindex><\/p>\n<h2>\u041d\u0430\u0448\u0438 \u0446\u0435\u043b\u0438 \u0441 Thanos<\/h2>\n<p>\n\u041f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e Prometheus. \u041a\u0430\u043a \u043d\u0430\u0434\u0435\u0436\u043d\u043e \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0435\u0442\u0430\u0431\u0430\u0439\u0442\u044b \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445? \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0435\u0437 \u0443\u0449\u0435\u0440\u0431\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441? \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 Prometheus, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0434\u043d\u043e\u0433\u043e API-\u0437\u0430\u043f\u0440\u043e\u0441\u0430? \u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0440\u0435\u043f\u043b\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Prometheus HA?<\/p>\n<p>\u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 Thanos. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u044b \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u044d\u0442\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u044e\u0442\u0441\u044f \u0446\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438.<\/p>\n<h4>\u0417\u0430\u043f\u0440\u043e\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 Prometheus (global query)<\/h4>\n<p>\nPrometheus ponuja funkcionalen pristop k delitvi podatkov. Tudi en sam Prometheus stre\u017enik zagotavlja potrebno skalabilnost, da uporabnike osvobodi zapletenosti horizontalne delitve v skoraj vseh primerih uporabe.<\/p>\n<p>\u010ceprav je to odli\u010dna razporeditev, pogosto potrebujemo dostop do podatkov na razli\u010dnih Prometheus stre\u017enikih preko enotnega API-jev ali uporabni\u0161kega vmesnika \u2014 globalnega pregleda. Seveda obstaja mo\u017enost prikaza ve\u010d poizvedb na eni Grafana plo\u0161\u010di, vendar se lahko vsaka poizvedba izvede le na enem Prometheus stre\u017eniku. Po drugi strani pa z uporabo Thanos lahko zahteva\u0161 in aggreagira\u0161 podatke z ve\u010d Prometheus stre\u017enikov, saj so vsi dostopni z ene kon\u010dne to\u010dke.<\/p>\n<p>Prej, za pridobitev globalnega pregleda v Improbable, smo organizirali na\u0161e Prometheus instance v ve\u010dstopenjsko <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/prometheus\/prometheus\/blob\/master\/docs\/federation.md#hierarchical-federation\">Hierarhi\u010dno federacijo<\/a><\/noindex>. To je pomenilo ustvarjanje enega meta-stre\u017enika Prometheus, ki zbira del metrik z vsakega 'listnatega' stre\u017enika.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/82590f017734f5dc1038a0e13f772d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTa pristop se je izkazal za problemati\u010dnega. Privedel je do zapletenosti konfiguracije, dodal dodatno potencialno to\u010dko okvare in uporabil zapletena pravila za zagotavljanje federirane kon\u010dne to\u010dke samo potrebnih podatkov. Poleg tega ta vrsta federacije ne omogo\u010da pravega globalnega pregleda, saj vsi podatki niso dostopni z enega API klica.<\/p>\n<p>S tem je povezano enotno prikazovanje podatkov, zbranih na visoko razpolo\u017eljivih (high-availability, HA) Prometheus stre\u017enikih. HA model Prometheus neodvisno zbira podatke dvakrat, kar je tako enostavno, da ne more biti enostavnej\u0161e. Vendar bi bilo veliko bolj udobno uporabljati zdru\u017eeno in deduplicirano predstavitev obeh tokov.<\/p>\n<p>Seveda obstaja potreba po visoko razpolo\u017eljivih Prometheus stre\u017enikih. V Improbable resno obravnavamo enourno spremljanje podatkov, vendar ima en sam instance Prometheus v klasterju enotno to\u010dko okvare. Kakr\u0161na koli napaka v konfiguraciji ali okvara strojne opreme lahko potencialno privede do izgube pomembnih podatkov. Tudi preprost razporeditev lahko povzro\u010di manj\u0161e napake pri zbiranju metrik, saj se lahko ponovno zagon znatno podalj\u0161a v primerjavi s \u010dasom zajema.<\/p>\n<h4>Zanesljivo shranjevanje zgodovinskih podatkov<\/h4>\n<p>\nCene dostopno, hitro in dolgotrajno shranjevanje metrik je na\u0161 sanjski cilj (ki ga deli ve\u010dina uporabnikov Prometheusa). V podjetju Improbable smo bili prisiljeni nastaviti \u010das shranjevanja metrik na devet dni (za Prometheus 1.8). To o\u010ditno omejuje, kako dale\u010d nazaj se lahko poglobimo.<\/p>\n<p>Prometheus 2.0 je na tem podro\u010dju bolj\u0161i, saj \u0161tevilo \u010dasovnih serij ve\u010d ne vpliva na skupno zmogljivost stre\u017enika (glej <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=nDalewt4BOw\">KubeCon keynote o Prometheusu 2<\/a><\/noindex>). Kljub temu Prometheus hrani podatke na lokalnem disku. \u010ceprav lahko visoko u\u010dinkovito stiskanje podatkov znatno zmanj\u0161a uporabo lokalnega SSD, \u0161e vedno obstaja omejitev glede koli\u010dine shranjenih zgodovinskih podatkov.<\/p>\n<p>Poleg tega v podjetju Improbable skrbimo za zanesljivost, enostavnost in stro\u0161ke. Veliki lokalni diski so te\u017eji za upravljanje in varnostno kopiranje. So dra\u017eji in zahtevajo ve\u010d orodij za varnostno kopiranje, kar prina\u0161a nepotrebno kompleksnost.<\/p>\n<h4>Zmanj\u0161evanje<\/h4>\n<p>\nKo smo za\u010deli delati z zgodovinskimi podatki, smo ugotovili, da obstajajo temeljne te\u017eave z O-velikostjo, ki povzro\u010dajo, da so poizvedbe vse po\u010dasnej\u0161e, \u010de delamo s podatki, ki segajo tedne, mesece in leta nazaj.<\/p>\n<p>Standardna re\u0161itev za to te\u017eavo je <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Decimation_(signal_processing)\">zmanj\u0161evanje<\/a><\/noindex> \u2014 zmanj\u0161anje frekvence vzor\u010denja signala. S pomo\u010djo zmanj\u0161anja vzor\u010denja lahko \"zmanj\u0161amo obseg\" na dalj\u0161e \u010dasovno obdobje in ohranimo enako \u0161tevilo vzorcev, kar omogo\u010da, da poizvedbe ostanejo hitre.<\/p>\n<p>Zmanj\u0161evanje starih podatkov je neizbe\u017een zahtevek katere koli re\u0161itve za dolgoro\u010dno shranjevanje in presega osnovni Prometheus.<\/p>\n<h4>Dodatni cilji<\/h4>\n<p>\nEden od prvotnih ciljev projekta Thanos je bila brez\u0161ivna integracija z obstoje\u010dimi namestitvami Prometheusa. Drugi cilj je bil enostavna uporaba z minimalnimi vstopnimi ovirami. Vse odvisnosti morajo biti enostavno zadovoljive tako za majhne kot velike uporabnike, kar pomeni tudi majhne osnovne stro\u0161ke.<\/p>\n<h2>Arhitektura Thanos<\/h2>\n<p>\nPotem ko so bili v prej\u0161njem razdelku navedeni na\u0161i cilji, se osredoto\u010dimo na to, kako Thanos re\u0161uje te izzive.<\/p>\n<h4>Globalni pogled<\/h4>\n<p>\nDa bi dobili globalni pogled preko postoje\u0107ih instanci Prometheusa, potrebno je povezati jedinstvenu ta\u010dku ulaza za zahteve sa svim serverima. Ovo je ono \u0161to radi komponenta Thanos. <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/blog\/2015\/06\/the-distributed-system-toolkit-patterns#example-1-sidecar-containers\">Sidecar<\/a><\/noindex>. On se raspore\u0111uje pored svakog Prometheus servera i funkcioni\u0161e kao proxy, pru\u017eaju\u0107i lokalne podatke Prometheusa preko gRPC interfejsa Store API, omogu\u0107avaju\u0107i izbor time series podataka po oznakama i vremenskom opsegu.<\/p>\n<p>S druge strane je horizontalno skalabilna komponenta Querier bez stanja, koja radi ne\u0161to vi\u0161e od prostog odgovaranja na PromQL zahteve preko standardnog Prometheus HTTP API. Komponente Querier, Sidecar i drugi Thanos me\u0111usobno komuniciraju putem <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">gossip protokola.<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/fbcf1e756f5da4e8529f17abd4cedd00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Querier, kada primi zahtev, povezuje se sa odgovaraju\u0107im serverom Store API, odnosno sa na\u0161im Sidecar-ima i dobija time series podatke sa odgovaraju\u0107ih Prometheus servera.<\/li>\n<li>Nakon toga, on kombinuje odgovore i izvr\u0161ava PromQL zahtev. Querier mo\u017ee kombinovati kako nepreklapaju\u0107e podatke, tako i duplicirane podatke sa HA servera Prometheus.<\/li>\n<\/ol>\n<p>\nOvo re\u0161ava ve\u0107inu na\u0161e glavobolje \u2014 kombinovanje podataka sa izolovanih Prometheus servera u jedinstven prikaz. U su\u0161tini, Thanos se mo\u017ee koristiti samo zbog ove mogu\u0107nosti. Nema potrebe za promenom postoje\u0107ih Prometheus servera!<\/p>\n<h4>Neograni\u010deno vreme zadr\u017eavanja!<\/h4>\n<p>\nMe\u0111utim, pre ili kasnije \u017eele\u0107emo da sa\u010duvamo podatke koji prevazilaze uobi\u010dajeno vreme zadr\u017eavanja Prometheusa. Za \u010duvanje istorijskih podataka odabrali smo objektno skladi\u0161te. Ono je \u0161iroko dostupno u bilo kom oblaku, kao i u lokalnim DC-ima i veoma je ekonomi\u010dno. Osim toga, prakti\u010dno svako objektno skladi\u0161te je dostupno preko dobro poznatog S3 API.<\/p>\n<p>Prometheus snima podatke iz RAM-a na disk otprilike svaka dva sata. Blok sa\u010duvanih podataka sadr\u017ei sve podatke za fiksni vremenski interval i ne mo\u017ee se menjati. Ovo je veoma prakti\u010dno, jer Thanos Sidecar mo\u017ee jednostavno da pregleda katalog podataka Prometheusa i, kako se pojave novi blokovi, u\u010ditava ih u kante objektno skladi\u0161te.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/2be803d8d7e0ce9a5ffa441b7778a40b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU\u010ditavanje u objektno skladi\u0161te neposredno nakon snimanja na disk tako\u0111e poma\u017ee u odr\u017eavanju jednostavnosti \u201escraper-a\u201c (Prometheus i Thanos Sidecar). \u0160to olak\u0161ava podr\u0161ku, tro\u0161kove i dizajn sistema.<\/p>\n<p>Kot vidite, varovanje podatkov je zelo preprosto. Kaj pa zahteva za podatke v objektni shrambi?<\/p>\n<p>Komponenta Thanos Store deluje kot proxy za pridobivanje podatkov iz objektne shrambe. Tako kot Thanos Sidecar sodeluje v gossip grozdu in implementira Store API. Tako lahko obstoje\u010di Querierji to obravnavajo kot Sidecar, kot dodaten vir podatkov \u010dasovnih serij \u2014 posebna nastavitev ni potrebna.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/5a437ae1bf8a6f79b8d24aeb9dde2d17.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBloki podatkov \u010dasovnih serij so sestavljeni iz ve\u010d velikih datotek. Nalaganje le-teh po potrebi bi bilo precej neu\u010dinkovito, lokalno predpomnjenje pa bi zahtevalo ogromno pomnilnika in diskovnega prostora.<\/p>\n<p>Namesto tega Store Gateway ve, kako ravnati s formatom shranjevanja Prometheus. Z pametnim na\u010drtovalnikom poizvedb in predpomnjenjem le potrebnih indeksnih delov blokov je mogo\u010de zmanj\u0161ati zapletene poizvedbe na minimalno \u0161tevilo HTTP zahtevkov do datotek v objektni shrambi. Tako je mo\u017eno zmanj\u0161ati \u0161tevilo zahtevkov za \u0161tiri do \u0161est vrstic in dose\u010di \u010das odziva, ki ga je v celoti te\u017eko lo\u010diti od zahtevkov za podatke na lokalnem SSD.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/ebcbe1ee16dbac18daa474e7cb4b12b2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKot je prikazano na zgornjem diagramu, Thanos Querier znatno zni\u017euje stro\u0161ke za en zahtevek po podatkih v objektni shrambi s pomo\u010djo formata shranjevanja Prometheus in s postavitvijo povezanih podatkov blizu skupaj. S to metodo lahko zdru\u017eimo \u0161tevilne posamezne zahteve v minimalno \u0161tevilo obse\u017enih operacij.<\/p>\n<h4>Stisnjenje in downsampling<\/h4>\n<p>\nKo je nov blok podatkov \u010dasovne serije uspe\u0161no nalo\u017een v objektno shrambo, ga obravnavamo kot 'zgodovinske' podatke, ki so takoj na voljo preko Store Gateway.<\/p>\n<p>Kmalu se blokadi iz enega vira (Prometheus s Sidecar) kopi\u010dijo in ne izkori\u0161\u010dajo ve\u010d celotnega potenciala indeksiranja. Za re\u0161evanje tega problema smo uvedli \u0161e eno komponento z imenom Compactor. Ta preprosto uporablja lokalni mehanizem stiskanja Prometheus za zgodovinske podatke v objektni shrambi in se lahko izvaja kot preprosto periodicno paketno delo.<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/c7dd83dab074a4c5f93069a4bc152342.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZaradi u\u010dinkovitega stiskanja dolgoro\u010dni dostop do shrambe ne predstavlja te\u017eav z vidika velikosti podatkov. Vendar pa lahko potencialni stro\u0161ki razpakiranja milijarde vrednosti in njihovo obdelovanje prek procesa povpra\u0161evanja neizogibno privedejo do drasti\u010dnega pove\u010danja \u010dasa izvajanja poizvedbe. Po drugi strani pa, ker na vsak pi\u010del ekrana pride na stotine podatkovnih to\u010dk, postane skoraj nemogo\u010de vizualizirati podatke v polni lo\u010dljivosti. Tako da je daunsampling ne samo mogo\u010d, ampak tudi ne bo privedel do opazne izgube natan\u010dnosti. <\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/5f36a05aba3fbffa905b6a8da482ab3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa daunsampling podatkov Compactor neprekinjeno agregira podatke z lo\u010dljivostjo petih minut in ene ure. Za vsak neobdelan fragment, kodiran z uporabo TSDB XOR-stiskanja, se hranijo razli\u010dne vrste agregiranih podatkov, kot so min, max ali sum za en blok. To omogo\u010da Querierju samodejno izbiro agrega, ki ustreza danemu PromQL vpra\u0161anju. <\/p>\n<p>Za uporabo podatkov z ni\u017ejo natan\u010dnostjo uporabnik ne potrebuje nobene posebne konfiguracije. Querier samodejno preklaplja med razli\u010dnimi lo\u010dljivostmi in neobdelanimi podatki, ko uporabnik pove\u010duje ali zmanj\u0161uje obseg. Po \u017eelji lahko uporabnik to neposredno upravlja s pomo\u010djo parametra 'step' v poizvedbi. <\/p>\n<p>Ker je stro\u0161ek shranjevanja enega GB majhen, Thanos po privzetku hrani izvorne podatke, podatke z lo\u010dljivostjo petih minut in ene ure. Ni potrebe po brisanju izvornih podatkov.<\/p>\n<h2>Pravila za snemanje<\/h2>\n<p>\nTudi s Thanosom so pravila za snemanje bistven del monitoringa. Zmanj\u0161ujejo kompleksnost, zakasnitev in stro\u0161ke poizvedb. Prav tako so uporabnikom priro\u010dna za pridobitev agregiranih podatkov o metrikah. Thanos temelji na vanilijevih izvodih Prometheusa, zato je povsem sprejemljivo hraniti pravila za snemanje in pravila za opozarjanje na obstoje\u010dem stre\u017eniku Prometheus. Vendar pa v nekaterih primerih to morda ni dovolj:<\/p>\n<ul>\n<li>Globalni alerti in pravila (na primer, opozorilo, ko storitev ne deluje na ve\u010d kot dveh od treh grozdov).<\/li>\n<li>Pravila za podatke zunaj lokalne shrambe.<\/li>\n<li>Te\u017enja po shranjevanju vseh pravil in opozoril na enem mestu.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/ab48e044b952bd891932b99e248120fa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa vse te primere Thanos vklju\u010duje lo\u010den komponent, imenovan Ruler, ki izra\u010duna pravila in opozorila preko Thanos Queries. S ponudbo dobro poznane StoreAPI, lahko vozli\u0161\u010de Query dostopa do sve\u017eo izra\u010dunane metrike. Kasneje jih shranimo v objektno skladi\u0161\u010de, kjer so dostopne preko Store Gateway.<\/p>\n<h2>Mo\u010d Thanosa<\/h2>\n<p>\nThanos je dovolj prilagodljiv, da ga je mogo\u010de nastaviti po va\u0161ih zahtevah. To je \u0161e posebej koristno pri migraciji iz preprostega Prometheusa. Poglejmo hitro na majhnem primeru, kar smo se nau\u010dili o komponentah Thanosa. Tako lahko preselite va\u0161 osnovni Prometheus v svet 'neomejenega shranjevanja metrik':<\/p>\n<p><img decoding=\"async\" alt=\"Thanos \u2014 skalabilni Prometheus\" src=\"\/wp-content\/uploads\/2020\/05\/f6ee4185af57d2a1869890014e6a0062.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ol>\n<li>Dodajte Thanos Sidecar va\u0161im Prometheus stre\u017enikom - na primer, sosednji kontejner v Kubernetes pod.<\/li>\n<li>Ustvarite ve\u010d replik Thanos Querier za mo\u017enost ogledovanja podatkov. V tej fazi lahko enostavno nastavite gossip med Scraper in Querier. Za preverjanje medsebojnega delovanja komponent uporabite metriko 'thanos_cluster_members'.<\/li>\n<\/ol>\n<p>\nSamo ti dve korak sta dovolj, da zagotovita globalni pogled in brez\u0161ivno deduplikacijo podatkov od potencialnih HA replik Prometheus! Preprosto pove\u017eite svoje nadzorne plo\u0161\u010de z HTTP konektivno to\u010dko Querier ali pa uporabite Thanos UI neposredno.<\/p>\n<p>Vendar, \u010de potrebujete varnostno kopiranje metrik in dolgoro\u010dno shranjevanje, boste morali opraviti \u0161e tri korake:<\/p>\n<ol>\n<li>Ustvarite AWS S3 ali GCS ko\u0161arico. Nastavite Sidecar za kopiranje podatkov v te ko\u0161arice. Zdaj lahko zmanj\u0161ate lokalno shranjevanje podatkov.<\/li>\n<li>Namestite Store Gateway in ga pove\u017eite z obstoje\u010dim gossip grozdom. Zdaj lahko po\u0161iljate poizvedbe za podatke v varnostnih kopijah!<\/li>\n<li>Nadgradite Compactor, da izbolj\u0161ate u\u010dinkovitost poizvedb za dalj\u0161e \u010dasovne intervale, z uporabo zgo\u0161\u010danja in downsampling-a.<\/li>\n<\/ol>\n<p>\n\u010ce se \u017eelite nau\u010diti ve\u010d, nas ne oklevajte, poglejte na\u0161e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/tree\/master\/kube\">prime manifeste kubernetes<\/a><\/noindex> in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\/blob\/master\/docs\/getting-started.md\">za\u010detki<\/a><\/noindex>!<\/p>\n<p>V samo petih korakih smo Spremenili Prometheus v zanesljiv sistem za spremljanje z globalnim pogledom, neomejenim \u010dasom shranjevanja in potencialno visoko razpolo\u017eljivostjo metrik.<\/p>\n<h3>Pull request: potrebujemo vas!<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/improbable-eng\/thanos\">Thanos<\/a><\/noindex> \u017de od samega za\u010detka je bil projekt z odprto kodo. Brez\u0161ivna integracija s Prometheusom in mo\u017enost uporabe le dela Thanosa ga naredi odli\u010dno izbiro za \u0161iritev sistema spremljanja brez odve\u010dnega truda.<\/p>\n<p>Vedno smo veseli GitHub Pull Request in Issues. V tem \u010dasu se ne obotavljajte, da nam pi\u0161ete prek Github Issues ali slack.<noindex><a rel=\"nofollow\" href=\"https:\/\/join.slack.com\/t\/improbable-eng\/shared_invite\/enQtMzQ1ODcyMzQ5MjM4LWY5ZWZmNGM2ODc5MmViNmQ3ZTA3ZTY3NzQwOTBlMTkzZmIxZTIxODk0OWU3YjZhNWVlNDU3MDlkZGViZjhkMjc\"> Improbable-eng #thanos<\/a><\/noindex>, \u010de imate vpra\u0161anja ali povratne informacije, ali \u017eelite deliti svoje izku\u0161nje z nami! \u010ce vam je v\u0161e\u010d, kar po\u010dnemo v Improbable, se ne obotavljajte, da se obrnete na nas \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/improbable.io\/careers\/\">vedno imamo odprta delovna mesta.<\/a><\/noindex>!<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jYQP\/\">Izvedite ve\u010d o te\u010daju.<br \/>\n<\/a><\/noindex><\/p>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/502122\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb. \u0424\u0430\u0431\u0438\u0430\u043d \u0420\u0435\u0439\u043d\u0430\u0440\u0446 (Fabian Reinartz) \u2014 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u0444\u0430\u043d\u0430\u0442 Go \u0438 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d \u043c\u044d\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440 Prometheus \u0438 \u0441\u043e\u0443\u0447\u0440\u0435\u0434\u0438\u0442\u0435\u043b\u044c Kubernetes SIG instrumentation. \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043e\u043d \u0431\u044b\u043b production-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u043c \u0432 SoundCloud \u0438 \u0432\u043e\u0437\u0433\u043b\u0430\u0432\u043b\u044f\u043b \u0433\u0440\u0443\u043f\u043f\u0443 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432 CoreOS. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 Google. \u0411\u0430\u0440\u0442\u0435\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81889,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81888","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.\" \/>\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\/sl\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\udd47Thanos \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Prometheus | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus\" \/>\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=\"2020-05-17T11:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-17T11:42:23+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\udd47Thanos \u2014 raz\u0161irljiv Prometheus | ProHoster","description":"Prevod \u010dlanka je bil pripravljen posebej za \u0161tudente te\u010daja \u201eDevOps prakse in orodja\u201c.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\udd47Thanos \u2014 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0439 Prometheus | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb.","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/thanos-masshtabiruemyj-prometheus","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":"2020-05-17T11:42:23+00:00","article:modified_time":"2020-05-17T11:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81888","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:48:24","updated":"2022-09-30 01:06:17","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/81888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=81888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/81888\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/81889"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=81888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=81888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=81888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}