Thanos - Прометейи миқёспазир

Тарҷумаи мақола махсус барои донишҷӯёни курс омода шудааст "Амалҳо ва асбобҳои DevOps".

Фабиан Рейнартс як таҳиягари нармафзор, Go fanatic ва ҳалли мушкилот аст. Вай инчунин як нигоҳдории Prometheus ва ҳаммуассиси асбобҳои Kubernetes SIG мебошад. Дар гузашта ӯ муҳандиси истеҳсолӣ дар SoundCloud буд ва гурӯҳи мониторингро дар CoreOS роҳбарӣ мекард. Ҳоло дар Google кор мекунад.

Бартек Плотка - Муҳандиси инфрасохтор дар Improbable. Вай ба технологияҳои нав ва мушкилоти системаҳои тақсимшуда таваҷҷӯҳ дорад. Вай дорои таҷрибаи пасти барномасозӣ дар Intel, таҷрибаи саҳмгузор дар Mesos ва таҷрибаи истеҳсолии SRE дар сатҳи ҷаҳонӣ дар Improbable мебошад. Бахшида ба беҳтар кардани ҷаҳони хидматрасонии микро. Се дӯстдори ӯ: Голанг, кушодаасос ва волейбол.

Ба маҳсулоти пешрафтаи мо SpatialOS нигоҳ карда, шумо метавонед тахмин кунед, ки Имконнопазир инфрасохтори абрии хеле динамикӣ ва миқёси ҷаҳониро бо даҳҳо кластерҳои Kubernetes талаб мекунад. Мо яке аз аввалинхо шуда системаи мониторингро истифода бурдем Prometheus. Prometheus қодир аст, ки миллионҳо ченакҳоро дар вақти воқеӣ пайгирӣ кунад ва бо забони пурқуввати пурсиш, ки ба шумо имкон медиҳад, ки маълумоти лозимаро истихроҷ кунед.

Содда ва эътимоднокии Prometheus яке аз афзалиятҳои асосии он аст. Аммо, вақте ки мо аз миқёси муайян гузаштем, мо ба як қатор камбудиҳо дучор шудем. Барои халли ин проблемахо мо кор карда баромадем Thanos як лоиҳаи кушодаасос аст, ки аз ҷониби Improbable барои бефосила табдил додани кластерҳои мавҷудаи Prometheus ба як системаи ягонаи мониторинг бо нигаҳдории номаҳдуди маълумоти таърихӣ сохта шудааст. Thanos дар Github дастрас аст дар ин ҷо.

Бо хабарҳои охирин аз Improbable бохабар бошед.

Ҳадафҳои мо бо Thanos

Дар миқёси муайян, мушкилоте ба миён меоянд, ки аз имкониятҳои ванили Прометей берун нестанд. Петабайтҳои маълумоти таърихиро чӣ гуна боэътимод ва сарфакорона нигоҳ доштан мумкин аст? Оё ин корро бидуни осеб дидани вақти посух кардан мумкин аст? Оё бо дархости ягонаи API ба ҳама ченакҳое, ки дар серверҳои гуногуни Prometheus ҷойгиранд, дастрас шудан мумкин аст? Оё ягон роҳи муттаҳид кардани маълумоти такроршуда бо истифода аз Prometheus HA мавҷуд аст?

Барои ҳалли ин мушкилот мо Thanos-ро таъсис додем. Бобҳои зерин тасвир мекунанд, ки мо ба ин масъалаҳо чӣ гуна муносибат кардем ва ҳадафҳои худро шарҳ медиҳем.

Дархости маълумот аз якчанд мисолҳои Prometheus (пурсишҳои глобалӣ)

Prometheus як равиши функсионалии sharding пешниҳод мекунад. Ҳатто як сервери ягонаи Prometheus миқёси кофӣ барои озод кардани корбарон аз мураккабии тақсимоти уфуқӣ дар ҳама ҳолатҳои истифодаро таъмин мекунад.

Гарчанде ки ин як модели олиҷаноби ҷойгиркунӣ аст, аксар вақт лозим аст, ки ба маълумот дар серверҳои гуногуни Prometheus тавассути API ё интерфейси ягона - намуди глобалӣ дастрасӣ пайдо кунед. Албатта, дар як панели Grafana намоиш додани дархостҳои сершумор имконпазир аст, аммо ҳар як дархостро танҳо дар як сервери Prometheus иҷро кардан мумкин аст. Аз тарафи дигар, бо Thanos шумо метавонед маълумотро аз серверҳои сершумори Prometheus пурсед ва ҷамъ кунед, зеро ҳамаи онҳо аз як нуқтаи ниҳоӣ дастрасанд.

Қаблан, барои ба даст овардани назари глобалӣ дар Improbable, мо намунаҳои Prometheus-и худро ба бисёрсатҳа ташкил кардем. Федератсияи иерархӣ. Ин маънои эҷоди як мета-сервери Prometheusро дошт, ки баъзе нишондиҳандаҳоро аз ҳар як сервери барг ҷамъоварӣ мекунад.

Thanos - Прометейи миқёспазир

Ин равиш мушкилотро нишон дод. Ин боиси конфигуратсияҳои мураккабтар, илова кардани нуқтаи потенсиалии иловагии нокомӣ ва татбиқи қоидаҳои мураккаб барои кафолат додани он гардид, ки нуқтаи ниҳоии федератсия танҳо маълумоти заруриро қабул кунад. Илова бар ин, ин гуна федератсия ба шумо имкон намедиҳад, ки манзараи воқеии глобалиро ба даст оред, зеро на ҳама маълумот аз як дархости API дастрас аст.

Намоиши ягонаи маълумоте, ки дар серверҳои дастрасии баланд (HA) Prometheus ҷамъоварӣ шудааст, бо ин зич алоқаманд аст. Модели HA Prometheus мустақилона ду маротиба маълумот ҷамъ мекунад, ки он қадар содда аст, ки соддатар буда наметавонад. Бо вуҷуди ин, истифодаи намуди якҷоя ва нусхабардории ҳарду ҷараён хеле қулайтар мебуд.

Албатта, ниёз ба серверҳои дастраси баланд Prometheus вуҷуд дорад. Дар Improbable, мо мониторинги дақиқа ба дақиқаи маълумотро воқеан ҷиддӣ қабул мекунем, аммо доштани як мисоли Prometheus дар як кластер як нуқтаи ноком аст. Ҳама гуна хатогии конфигуратсия ё нокомии сахтафзор метавонад ба гум шудани маълумоти муҳим оварда расонад. Ҳатто як ҷойгиркунии оддӣ метавонад боиси халалдоршавии ночиз дар ҷамъоварии ченакҳо шавад, зеро бозоғозӣ метавонад аз фосилаи пошидан ба таври назаррас дарозтар бошад.

Нигоҳдории боэътимоди маълумоти таърихӣ

Нигоҳдории ченакҳои арзон, зуд ва дарозмуддат орзуи мост (аксарияти корбарони Prometheus мубодила мекунанд). Дар Improbable, мо маҷбур шудем, ки мӯҳлати нигоҳдории метрикаро то нӯҳ рӯз танзим кунем (барои Prometheus 1.8). Ин маҳдудиятҳои ошкореро илова мекунад, ки мо то чӣ андоза ба ақиб нигоҳ карда метавонем.

Prometheus 2.0 дар ин робита беҳтар шудааст, зеро шумораи силсилаи вақтҳо дигар ба кори умумии сервер таъсир намерасонад (ниг. Матни асосии KubeCon дар бораи Prometheus 2). Аммо, Prometheus маълумотро дар диски маҳаллӣ нигоҳ медорад. Ҳарчанд фишурдасозии самаранокии маълумот метавонад истифодаи маҳаллии SSD-ро ба таври назаррас коҳиш диҳад, дар ниҳояти кор то ҳол маҳдудияти ҳаҷми маълумоти таърихие, ки метавон нигоҳ дошта шавад, вуҷуд дорад.

Илова бар ин, дар Improbable мо ба эътимоднокӣ, соддагӣ ва арзиш ғамхорӣ мекунем. Дискҳои калони маҳаллӣ кор кардан ва нусхабардорӣ кардан душвортар аст. Онҳо арзиши бештар доранд ва асбобҳои эҳтиётии бештарро талаб мекунанд, ки боиси мураккабии нолозим мешаванд.

Гирифтани намуна

Вақте ки мо бо маълумоти таърихӣ кор карданро оғоз кардем, мо фаҳмидем, ки бо big-O мушкилоти бунёдӣ мавҷуданд, ки ҳангоми кор бо ҳафтаҳо, моҳҳо ва солҳо дархостҳоро сусттар ва сусттар мекунанд.

Ҳалли стандартии ин мушкилот хоҳад буд паст кардани намуна (поёни намуна) - кам кардани басомади интихобкунии сигнал. Бо интихоби поин, мо метавонем ба як диапазони вақти калонтар "паст" кунем ва ҳамон миқдор намунаҳоро нигоҳ дорем ва ба дархостҳо посух гӯем.

Паст кардани маълумоти кӯҳна як талаботи ногузири ҳама гуна ҳалли нигаҳдории дарозмуддат аст ва аз доираи ванили Прометей берун аст.

Ҳадафҳои иловагӣ

Яке аз ҳадафҳои аслии лоиҳаи Thanos ин ҳамгироии бефосила бо ҳама насбҳои мавҷудаи Prometheus буд. Ҳадафи дуввум осонии амалиёт бо монеаҳои ҳадди ақал барои ворид шудан буд. Ҳама гуна вобастагӣ бояд ҳам барои корбарони хурд ва ҳам калон ба осонӣ қонеъ карда шаванд, ки ин маънои арзиши пасти асосиро дорад.

Меъмории Thanos

Пас аз номбар кардани ҳадафҳои мо дар фасли қаблӣ, биёед онҳоро кор кунем ва бубинем, ки Thanos ин мушкилотро чӣ гуна ҳал мекунад.

Намоиши глобалӣ

Барои ба даст овардани назари глобалӣ дар болои мисолҳои мавҷудаи Prometheus, мо бояд як нуқтаи вуруди дархостро ба ҳама серверҳо пайваст кунем. Ин маҳз ҳамон чизест, ки ҷузъи Thanos мекунад. Шабакаи. Он дар паҳлӯи ҳар як сервери Prometheus ҷойгир карда шудааст ва ҳамчун прокси амал мекунад ва ба маълумоти маҳаллии Prometheus тавассути API Store gRPC хизмат мерасонад ва имкон медиҳад, ки маълумотҳои силсилаи вақт аз рӯи тег ва диапазони вақт гирифта шаванд.

Дар тарафи дигар ҷузъи васеъ ва бидуни шаҳрвандӣ Querier аст, ки танҳо ба саволҳои PromQL тавассути стандарти Prometheus HTTP API ҷавоб медиҳад. Querier, Sidecar ва дигар ҷузъҳои Thanos тавассути алоқа муошират мекунанд протоколи ғайбат.

Thanos - Прометейи миқёспазир

  1. Querier, пас аз гирифтани дархост, ба сервери мувофиқи Store API, яъне ба Sidecars мо пайваст мешавад ва аз серверҳои мувофиқи Prometheus маълумотҳои силсилаи вақтро мегирад.
  2. Пас аз он, он ҷавобҳоро муттаҳид мекунад ва дархости PromQL-ро дар онҳо иҷро мекунад. Querier метавонад ҳам маълумоти ҷудошуда ва ҳам маълумоти такрориро аз серверҳои Prometheus HA муттаҳид созад.

Ин як қисми асосии муаммои моро ҳал мекунад - омезиши маълумот аз серверҳои ҷудошудаи Prometheus дар як намуди ягона. Дар асл, Thanos метавонад танҳо барои ин хусусият истифода шавад. Ба серверҳои мавҷудаи Prometheus тағирот ворид кардан лозим нест!

Муҳлати нигоҳдории бемаҳдуд!

Аммо, дер ё зуд мо мехоҳем, ки маълумотро аз вақти муқаррарии нигоҳдории Prometheus нигоҳ дорем. Мо захираи объектро барои нигоҳ доштани маълумоти таърихӣ интихоб кардем. Он дар ҳама гуна абрҳо ва инчунин марказҳои додаҳои маҳаллӣ дастрас аст ва хеле камхарҷ аст. Илова бар ин, қариб ҳама гуна нигаҳдории объектҳо тавассути API-и маъруфи S3 дастрас аст.

Прометей маълумотро аз RAM ба диск тақрибан ҳар ду соат менависад. Блоки додаҳои захирашуда тамоми маълумотро барои як давраи муайян дар бар мегирад ва тағирнопазир аст. Ин хеле қулай аст, зеро Thanos Sidecar метавонад танҳо ба феҳристи маълумоти Prometheus нигоҳ кунад ва вақте ки блокҳои нав дастрас мешаванд, онҳоро ба сатилҳои нигаҳдории объект бор кунед.

Thanos - Прометейи миқёспазир

Бор кардан ба анбори объект фавран пас аз навиштан ба диск инчунин ба шумо имкон медиҳад, ки соддагии скреперро нигоҳ доред (Prometheus ва Thanos Sidecar). Ки дастгирӣ, хароҷот ва тарҳрезии системаро содда мекунад.

Тавре ки шумо мебинед, нусхабардории маълумот хеле содда аст. Аммо дар бораи дархости маълумот дар нигаҳдории объект чӣ гуфтан мумкин аст?

Ҷузъи Thanos Store ҳамчун прокси барои дарёфти маълумот аз нигаҳдории объект амал мекунад. Мисли Thanos Sidecar, он дар кластери ғайбат иштирок мекунад ва API-и Store-ро татбиқ мекунад. Бо ин роҳ, Querier мавҷуда метавонад онро ҳамчун Sidecar ҳамчун манбаи дигари маълумоти силсилаи вақт баррасӣ кунад - конфигуратсияи махсус талаб карда намешавад.

Thanos - Прометейи миқёспазир

Блокҳои маълумотҳои силсилаи вақт аз якчанд файлҳои калон иборатанд. Боркунии онҳо аз рӯи талабот хеле бесамар хоҳад буд ва кэшкунии онҳо ба таври маҳаллӣ миқдори зиёди хотира ва фазои дискро талаб мекунад.

Ба ҷои ин, Store Gateway медонад, ки формати нигаҳдории Prometheus чӣ гуна идора карда шавад. Ба шарофати нақшаи пурсишҳои оқилона ва кэшкунии танҳо қисмҳои индекси зарурии блокҳо, имкон дорад, ки дархостҳои мураккабро то ҳадди ақали дархостҳои HTTP ба файлҳои нигаҳдории объект кам кунанд. Бо ин роҳ, шумо метавонед шумораи дархостҳоро аз чор то шаш дараҷа кам кунед ва ба вақти посух ноил шавед, ки одатан аз дархостҳо ба маълумот дар SSD-и маҳаллӣ фарқ кардан душвор аст.

Thanos - Прометейи миқёспазир

Тавре ки дар диаграммаи боло нишон дода шудааст, Thanos Querier бо истифода аз формати нигаҳдории Prometheus ва паҳлӯ ба паҳлӯ ҷойгир кардани додаҳои марбута арзиши як дархости маълумоти нигаҳдории объектро ба таври назаррас коҳиш медиҳад. Бо истифода аз ин равиш, мо метавонем бисёр дархостҳои ягонаро ба шумораи ҳадди ақали амалиёти оммавӣ муттаҳид кунем.

Фишоркунӣ ва кам кардани намуна

Пас аз он ки блоки нави силсилаи вақтҳо ба нигаҳдории объект бомуваффақият бор карда мешавад, мо онро ҳамчун маълумоти "таърихӣ" баррасӣ мекунем, ки фавран тавассути Gateway Store дастрас аст.

Аммо, пас аз чанд вақт, блокҳо аз як манбаъ (Prometheus бо Sidecar) ҷамъ мешаванд ва дигар потенсиали пурраи индексатсияро истифода намебаранд. Барои ҳалли ин мушкилот, мо ҷузъи дигареро бо номи Compactor ҷорӣ кардем. Он танҳо муҳаррики фишурдаи маҳаллии Prometheus-ро ба маълумоти таърихӣ дар нигаҳдории объект татбиқ мекунад ва метавонад ҳамчун як кори оддии даврии партия иҷро карда шавад.

Thanos - Прометейи миқёспазир

Бо шарофати фишурдани самаранок, пурсиши нигаҳдорӣ дар тӯли муддати тӯлонӣ аз ҷиҳати андозаи маълумот мушкилот эҷод намекунад. Аммо, арзиши эҳтимолии кушодани як миллиард арзиш ва иҷро кардани онҳо тавассути протсессори дархостҳо ногузир ба афзоиши назарраси вақти иҷрои дархостҳо оварда мерасонад. Аз тарафи дигар, азбаски дар экран дар як пиксел садҳо нуқтаи маълумот мавҷуд аст, ҳатто тасаввур кардани маълумот бо ҳалли пурра ғайриимкон мегардад. Ҳамин тариқ, кам кардани намуна на танҳо имконпазир аст, балки ба талафоти назарраси дақиқ оварда намерасонад.

Thanos - Прометейи миқёспазир

Барои кам кардани маълумот, Compactor пайваста маълумотро бо қарори панҷ дақиқаву як соат ҷамъ мекунад. Барои ҳар як порчаи хом, ки бо истифода аз фишурдани TSDB XOR рамзгузорӣ шудааст, намудҳои гуногуни маълумоти ҷамъӣ нигоҳ дошта мешаванд, ба монанди ҳадди ақал, макс ё ҷамъ барои як блок. Ин ба Querier имкон медиҳад, ки ба таври худкор агрегатеро интихоб кунад, ки барои дархости додаи PromQL мувофиқ бошад.

Барои корбар барои истифодаи маълумоти дақиқи камшуда конфигуратсияи махсус талаб карда намешавад. Querier ба таври худкор байни қарорҳои гуногун ва маълумоти хом мегузарад, вақте ки корбар васеъ ва хурд мекунад. Агар хоҳед, корбар метавонад онро мустақиман тавассути параметри "қадам" дар дархост назорат кунад.

Азбаски арзиши нигоҳдории як ГБ паст аст, ба таври нобаёнӣ Thanos маълумоти хом, маълумоти ҳалли панҷ дақиқа ва як соатро нигоҳ медорад. Барои нест кардани маълумоти аслӣ лозим нест.

Қоидаҳои сабт

Ҳатто бо Thanos, қоидаҳои сабт як қисми муҳими стек мониторинг мебошанд. Онҳо мураккабӣ, таъхир ва арзиши дархостҳоро коҳиш медиҳанд. Онҳо инчунин барои корбарон барои гирифтани маълумоти ҷамъшуда аз рӯи ченакҳо қулай мебошанд. Thanos ба мисолҳои ванилии Prometheus асос ёфтааст, аз ин рӯ нигоҳ доштани қоидаҳои сабт ва қоидаҳои огоҳкунанда дар сервери мавҷудаи Prometheus комилан қобили қабул аст. Аммо, дар баъзе мавридҳо ин метавонад кофӣ набошад:

  • Огоҳӣ ва қоидаи глобалӣ (масалан, огоҳӣ вақте ки хидмат дар зиёда аз ду аз се кластер кор намекунад).
  • Қоида барои маълумот берун аз нигаҳдории маҳаллӣ.
  • Хоҳиши нигоҳ доштани ҳама қоидаҳо ва огоҳиҳо дар як ҷо.

Thanos - Прометейи миқёспазир

Барои ҳамаи ин ҳолатҳо, Thanos як ҷузъи алоҳидаеро бо номи Ruler дар бар мегирад, ки қоида ва огоҳиро тавассути Thanos Queries ҳисоб мекунад. Бо пешниҳоди StoreAPI-и маъруф, гиреҳи дархост метавонад ба ченакҳои тоза ҳисобшуда дастрасӣ пайдо кунад. Баъдтар онҳо инчунин дар нигаҳдории объект нигоҳ дошта мешаванд ва тавассути Gateway Store дастрас карда мешаванд.

Қудрати Танос

Thanos ба қадри кофӣ чандир аст, ки ба ниёзҳои шумо мутобиқ карда шавад. Ин махсусан ҳангоми муҳоҷират аз Прометейи оддӣ муфид аст. Биёед бо мисоли фаврӣ он чизеро, ки дар бораи ҷузъҳои Thanos омӯхтаем, зуд ҷамъбаст кунем. Ин аст он аст, ки чӣ тавр ванили Prometheus-и худро ба ҷаҳони "нигаҳдории ченакҳои номаҳдуд" бурдан мумкин аст:

Thanos - Прометейи миқёспазир

  1. Thanos Sidecar-ро ба серверҳои Prometheus-и худ илова кунед - масалан, як контейнери паҳлӯ дар pod Kubernetes.
  2. Репликаҳои сершумори Thanos Querier -ро ҷойгир кунед, то тавонанд дидани маълумот. Дар ин марҳила таъсис додани ғайбат байни Scraper ва Querier осон аст. Барои санҷидани таъсири мутақобилаи ҷузъҳо, метрикаи 'thanos_cluster_members' -ро истифода баред.

Танҳо ин ду қадам барои таъмини манзараи ҷаҳонӣ ва нусхабардории бефосилаи додаҳо аз репликаҳои эҳтимолии Prometheus HA кифояанд! Танҳо панелҳои худро ба нуқтаи ниҳоии HTTP Querier пайваст кунед ё бевосита Thanos UI-ро истифода баред.

Аммо, агар ба шумо нусхаи эҳтиётии ченакҳо ва нигоҳдории дарозмуддат лозим бошад, ба шумо лозим меояд, ки се қадами дигарро анҷом диҳед:

  1. Сатил AWS S3 ё GCS эҷод кунед. Sidecar-ро барои нусхабардории маълумот ба ин сатилҳо танзим кунед. Нигоҳдории додаҳои маҳаллӣ ҳоло метавонад кам карда шавад.
  2. Store Gateway -ро ҷойгир кунед ва онро ба кластери мавҷудаи ғайбатҳои худ пайваст кунед. Акнун шумо метавонед маълумоти нусхабардориро пурсед!
  3. Ҷойгир кардани Compactor барои баланд бардоштани самаранокии дархостҳо дар тӯли муддати тӯлонӣ бо истифода аз фишурдакунӣ ва поёнобкунӣ.

Агар шумо хоҳед, ки маълумоти бештар гиред, шарм надоред, ки ба мо нигаред кубернетхо мисолхои равшан нишон медиханд и сар кардани кор!

Ҳамагӣ дар панҷ қадам, мо Prometheus-ро ба як системаи боэътимоди мониторинг бо назари глобалӣ, вақти нигоҳдории номаҳдуди ва мавҷудияти эҳтимолии баланди метрика табдил додем.

Дархост: мо ба шумо ниёз дорем!

Thanos аз ибтидо лоиҳаи кушодаасос буд. Интегратсияи бефосила бо Prometheus ва қобилияти истифодаи танҳо як қисми Thanos онро интихоби олиҷаноб барои васеъ кардани миқёси системаи мониторинги шумо ба осонӣ месозад.

Мо ҳамеша дархостҳо ва масъалаҳои GitHub Pull-ро истиқбол мекунем. Дар ҳамин ҳол, озодона бо мо тавассути Github Issues ё суст тамос гиред Improbable-eng #thanosагар шумо савол ё фикру мулоҳиза дошта бошед, ё мехоҳед таҷрибаи худро бо истифода аз он мубодила кунед! Агар ба шумо корҳое, ки мо дар Improbable мекунем, ба шумо маъқул бошад, шарм надоред бо мо тамос гиред - мо ҳамеша ҷойҳои холӣ дорем!

Дар бораи курс маълумоти бештар гиред.

Манбаъ: will.com

Илова Эзоҳ