Bioyino - aggregator ea metrics e ajoang

Kahoo o bokella metrics. Joalo ka rona. Re boetse re bokella metrics. Ehlile, ho hlokahala bakeng sa khoebo. Kajeno re tla bua ka sehokelo sa pele sa sistimi ea rona ea ho beha leihlo - seva e lumellanang le statsd. bioyino, hore na ke hobane’ng ha re e ngotse le hore na ke hobane’ng ha re ile ra lahla brubeck.

Bioyino - aggregator ea metrics e ajoang

Ho tsoa lingoloeng tsa rona tse fetileng (1, 2) o ka fumana hore ho fihlela nako e itseng re ile ra bokella matshwao re sebedisa Brubeck. E ngotsoe ka C. Ho ea ka pono ea khoutu, e bonolo joaloka plug (sena ke sa bohlokoa ha u batla ho kenya letsoho) 'me, sa bohlokoa ka ho fetisisa, se sebetsana le metrics ea rona ea limilione tse 2 motsotsoana (MPS) ka tlhōrō. ntle le mathata. Litokomane li bontša tšehetso bakeng sa MPS tse limilione tse 4 tse nang le naleli. Sena se bolela hore o tla fumana palo e boletsoeng haeba o lokisa marang-rang ka nepo ho Linux. (Ha re tsebe hore na u ka fumana MPS tse kae ha u tlohela marang-rang joalo ka ha a le joalo). Ho sa tsotellehe melemo ena, re ne re e-na le litletlebo tse 'maloa tse tebileng ka brubeck.

Kleima 1. Github, moqapi oa morero, o ile a khaotsa ho e tšehetsa: ho phatlalatsa li-patches le litokiso, ho amohela tsa rona le (eseng tsa rona feela) PR. Likhoeling tse 'maloa tse fetileng (kae-kae ho tloha ka February-March 2018), ts'ebetso e tsoetse pele, empa pele ho moo ho ne ho e-na le lilemo tse ka bang 2 tsa khutso e feletseng. Ho feta moo, morero ona o ntse o ntlafatsoa bakeng sa litlhoko tsa ka hare tsa Gihub, e ka fetohang tšitiso e tebileng ho kenyelletsoeng ha likarolo tse ncha.

Kleima 2. Ho nepahala ha lipalo. Brubeck e bokella kakaretso ea litekanyetso tsa 65536 bakeng sa ho kopanya. Tabeng ea rona, bakeng sa metrics e meng, nakong ea ho kopanya (metsotsoana e 30), litekanyetso tse ngata li ka fihla (1 tlhōrōng). Ka lebaka la sampole ena, boleng bo holimo le bo tlase bo bonahala bo se na thuso. Ka mohlala, joalo ka:

Bioyino - aggregator ea metrics e ajoang
Joalo ka ha ho bile

Bioyino - aggregator ea metrics e ajoang
Kamoo e neng e lokela ho ba kateng

Ka lona lebaka le tšoanang, lichelete hangata li baloa ka phoso. Eketsa mona bothata bo nang le phallo e pharalletseng ea 32-bit, eo hangata e romellang seva ho segfault ha e fumana metric e bonahalang e se na molato, 'me tsohle li ba monate. The bug, ka tsela, ha e so lokisoe.

Mme qetellong Kleima X. Nakong ea ho ngola, re se re itokiselitse ho e hlahisa ho tsohle tse 14 tse sebetsang kapa tse fokolang tse sebetsang tsa statsd tseo re khonang ho li fumana. Ha re nahane hore meaho e meng e se e holile haholo hoo ho amohela MPS ea limilione tse 4 ha ho sa lekana. Kapa esita le haeba e e-s'o hōle, empa metrics e se e ntse e le ea bohlokoa haholo ho uena hoo esita le nako e khutšoanyane, metsotso e 2-3 e kenngoa lichabeng e ka se e le ea bohlokoa 'me ea baka mathata a ho tepella maikutlo ho ke keng ha hlōloa har'a batsamaisi. Kaha ho phekola ho tepella maikutlo ke mosebetsi o sa leboheng, ho hlokahala litharollo tsa theknoloji.

Ntlha ea pele, ho mamella liphoso, e le hore bothata ba tšohanyetso ho seva bo se ke ba baka apocalypse ea kelello ea zombie ka ofising. Taba ea bobeli, ho eketsa ho khona ho amohela MPS tse fetang limilione tse 4, ntle le ho cheka ka har'a sethala sa marang-rang sa Linux le ho hola ka khutso "ka bophara" ho isa boholo bo hlokahalang.

Kaha re ne re e-na le sebaka sa ho phahamisa, re ile ra etsa qeto ea ho qala ka ho mamella liphoso. "MABAPI! Ho mamella liphoso! Ho bonolo, re ka e etsa, "re ile ra nahana mme ra qala li-server tse peli, re phahamisa kopi ea brubeck ho e 'ngoe le e 'ngoe. Ho etsa sena, re ile ra tlameha ho kopitsa sephethephethe ka metrics ho li-server ka bobeli le ho ngola bakeng sa sena tshebediso e nyane. Re rarolle bothata ba ho mamella liphoso ka sena, empa ... eseng hantle. Qalong ntho e 'ngoe le e' ngoe e ne e bonahala e le ntle: e 'ngoe le e' ngoe ea brubeck e bokella phetolelo ea eona ea ho kopanya, e ngolla data ho Graphite hang ka metsotsoana e meng le e meng ea 30, e hlakola nako ea khale (sena se etsoa ka lehlakoreng la Graphite). Haeba seva se le seng se hlōleha ka tšohanyetso, re lula re e-na le ea bobeli e nang le kopi ea eona ea data e kopantsoeng. Empa bothata ke bona: haeba seva se hlōleha, "saw" e hlaha lirapeng. Sena se bakoa ke taba ea hore linako tsa brubeck tsa metsotsoana e 30 ha li lumellane, 'me nakong ea ho oa ha e 'ngoe ea tsona ha e ngoloe. Ha seva sa bobeli se qala, ho etsahala ntho e tšoanang. E mamellehe, empa ke batla betere! Bothata ba scalability le bona ha bo so fele. Li-metrics tsohle li ntse li "fofela" ho seva se le seng, ka hona re lekanyelitsoe ho MPS ea limilione tse 2-4, ho itšetlehile ka boemo ba marang-rang.

Haeba u nahana hanyenyane ka bothata 'me ka nako e ts'oanang u cheka lehloa ka kharafu, joale khopolo e latelang e totobetseng e ka' na ea tla kelellong: o hloka statsd e ka sebetsang ka mokhoa o ajoang. Ke hore, e sebelisang khokahano lipakeng tsa nodes ka nako le metrics. "Ehlile, mohlomong tharollo e joalo e se e ntse e le teng," re ile ra bua mme ra ea ho Google…. Mme ha ba ka ba fumana letho. Kamora ho feta litokomaneng tsa statsd tse fapaneng (https://github.com/etsy/statsd/wiki#server-implementations ho tloha ka la 11.12.2017 Tšitoe XNUMX), ha rea ​​ka ra fumana letho. Kamoo ho bonahalang kateng, ha ho bahlahisi kapa basebelisi ba litharollo tsena ha ba so kopane le metrics e mengata, ho seng joalo ba ne ba tla tla le ho hong.

Eaba re hopola ka "toy" statsd - bioyino, e ngotsoeng ho Just for Fun hackathon (lebitso la morero le hlahisitsoe ke script pele ho qala hackathon) mme ra hlokomela hore re ne re hloka statsd ea rona ka potlako. Molelmong oa eng?

  • hobane ho na le li-clones tse fokolang haholo lefatšeng,
  • hobane hoa khonahala ho fana ka se lakatsehang kapa se haufi le mamello e lakatsehang le scalability (ho kenyeletsoa ho hokahanya metrics e kopaneng lipakeng tsa li-server le ho rarolla bothata ba ho romella likhohlano),
  • hobane hoa khoneha ho bala metrics ka nepo ho feta kamoo brubeck a etsang,
  • hobane o ka bokella lipalo-palo tse qaqileng haholoanyane, tseo brubeck a sa kang a re fa tsona,
  • hobane ke bile le monyetla oa ho hlophisa kopo ea ka ea hyperperformance distributed scale lab, e ke keng ea pheta ka ho feletseng mohaho oa hyperfor e 'ngoe e tšoanang ... hantle, ke eona.

Ho ngola eng? Ehlile, ho Rust. Hobaneng?

  • hobane ho ne ho se ho ntse ho e-na le tharollo ea mohlala,
  • hobane mongoli oa sengoloa o ne a se a ntse a tseba Rust ka nako eo mme o ne a labalabela ho ngola ho hong ho eona bakeng sa tlhahiso ka monyetla oa ho e beha mohloling o bulehileng,
  • hobane lipuo tse nang le GC ha lia re tšoanela ka lebaka la mofuta oa sephethephethe se amohetsoeng (hoo e batlang e le nako ea nnete) le khefu ea GC ha e amohelehe,
  • hobane o hloka ts'ebetso e phahameng e bapisoang le C
  • hobane Rust e re fa concurrency e se nang tšabo, 'me haeba re ile ra qala ho e ngola ka C / C ++, re ka be re kentse bofokoli le ho feta, buffer overflows, maemo a morabe le mantsoe a mang a tšosang ho feta brubeck.

Ho ne ho boetse ho e-na le khang khahlanong le Rust. Khampani e ne e se na phihlelo ea ho theha merero ea Rust, 'me hona joale ha re rera ho e sebelisa morerong o ka sehloohong. Ka hona, ho ne ho e-na le tšabo e tebileng ea hore ha ho letho le tla atleha, empa re ile ra etsa qeto ea ho nka monyetla le ho leka.

Nako e ile ea feta...

Qetellong, ka mor'a liteko tse 'maloa tse hlōlehileng, phetolelo ea pele ea ho sebetsa e ne e lokile. Ho etsahetse eng? Sena ke se ileng sa etsahala.

Bioyino - aggregator ea metrics e ajoang

Node e 'ngoe le e 'ngoe e fumana sete ea eona ea metrics 'me ea li bokella,' me ha e kopane metrics bakeng sa mefuta eo moo sete ea bona e felletseng e hlokahalang bakeng sa ho kopanngoa ha ho qetela. Li-node li kopantsoe ho tse ling ka mofuta o mong oa protocol ea senotlolo e ajoang, e leng se u lumellang hore u khethe har'a bona e le 'ngoe feela (mona re ile ra lla) e tšoanelang ho romela metrics ho e Moholo. Bothata bona bo ntse bo rarolloa ke Consum, empa nakong e tlang litabatabelo tsa mongoli li atoloha ho mong phethahatso Raft, moo ea tšoanelehang ka ho fetisisa e tla ba sebaka sa moetapele oa tumellano. Ntle le tumellano, li-node hangata (hang ka motsotsoana ka mokhoa o ikhethileng) li romela ho baahisani ba tsona likarolo tsa metrics tse kopaneng tseo ba khonneng ho li bokella motsotsong oo. Hoa etsahala hore tekanyo le mamello ea liphoso li bolokiloe - node e 'ngoe le e' ngoe e ntse e na le sete e feletseng ea metrics, empa metrics e romelloa e se e kopantsoe, ka TCP 'me e kenyelelitsoe ho protocol ea binary, kahoo litšenyehelo tsa ho pheta-pheta li fokotsehile haholo ha li bapisoa le UDP. Leha ho na le palo e kholo ea metrics e tlang, ho bokella ho hloka mohopolo o fokolang haholo le CPU e nyane. Bakeng sa mertics ea rona e hatellehang haholo, sena ke mashome a 'maloa feela a megabyte ea data. Joalo ka bonase e eketsehileng, ha re fumane lintlha tse sa hlokahaleng tse ngoloang hape ho Graphite, joalo ka ha ho bile joalo ka burbeck.

Lipakete tsa UDP tse nang le metrics ha li lekane pakeng tsa li-node ho lisebelisoa tsa marang-rang ka Round Robin e bonolo. Ehlile, lisebelisoa tsa marang-rang ha li hlalose likahare tsa lipakete, ka hona li ka hula lipakete tse fetang 4M motsotsoana, re sa bue ka metrics eo e sa tsebeng letho ka eona. Haeba re ela hloko hore metrics ha e tle e le 'ngoe ka har'a pakete e' ngoe le e 'ngoe, joale ha re bone esale pele mathata a ts'ebetso sebakeng sena. Haeba seva se senyeha, sesebelisoa sa marang-rang ka potlako (ka metsotsoana e 1-2) se lemoha 'nete ena' me se tlosa seva se senyehileng ho tloha ho potoloha. Ka lebaka la sena, li-node tsa passive (ke hore, tseo e seng tsa moetapele) li ka buloa le ho tima ntle le ho hlokomela li-drawdown tsa lichate. Boholo boo re bo lahleheloang ke karolo ea metrics e keneng motsotsong o fetileng. Ho lahleheloa ka tšohanyetso / ho koala / ho fetoha ha moetapele ho ntse ho tla baka phoso e nyane (nako ea bobeli ea 30 e ntse e sa lumellane), empa haeba ho na le puisano pakeng tsa li-node, mathata ana a ka fokotsoa, ​​ka mohlala, ka ho romela lipakete tsa ho lumellana. .

Hanyenyane ka sebopeho sa ka hare. Kopo, ehlile, e entsoe ka mefuta e mengata, empa moralo oa likhoele o fapane le o sebelisitsoeng ho brubeck. Likhoele tsa brubeck li tšoana - e 'ngoe le e' ngoe ea tsona e ikarabella bakeng sa pokello ea tlhahisoleseling le ho kopanya. Ho bioyino, basebetsi ba arotsoe ka lihlopha tse peli: ba ikarabellang bakeng sa marang-rang le ba ikarabellang bakeng sa ho kopanya. Karohano ena e u lumella hore u tsamaise kopo ka mokhoa o feto-fetohang ho itšetlehile ka mofuta oa metrics: moo ho hlokahalang ho kopanya ho matla, o ka eketsa li-aggregator, moo ho nang le sephethephethe sa marang-rang, o ka eketsa palo ea phallo ea marang-rang. Hajoale, ho li-server tsa rona re sebetsa marang-rang a 8 le phallo ea ho kopanya tse 4.

Karolo ea ho bala (e ikarabellang bakeng sa ho kopanya) e tena haholo. Li-buffers tse tlatsitsoeng ke phallo ea marang-rang li ajoa har'a phallo ea ho bala, moo li qetellang li aroloa le ho kopanngoa. Ka kopo, metrics e fanoa bakeng sa ho romelloa ho li-node tse ling. Sena sohle, ho kenyelletsa ho romella data lipakeng tsa li-node le ho sebetsa le Consul, se etsoa ka mokhoa o ts'oanang, se sebetsa ka moralo. tokyo.

Mathata a mangata haholo nakong ea nts'etsopele a bakiloe ke karolo ea marang-rang e ikarabellang bakeng sa ho amohela metrics. Sepheo se seholo sa ho arola marang-rang a phalla ka mekhatlo e arohaneng e ne e le takatso ea ho fokotsa nako eo phallo e e sebelisang ha ho bala data ho tloha soketeng. Likhetho tse sebelisang Asynchronous UDP le recvmsg tse tloaelehileng li ile tsa nyamela kapele: ea pele e sebelisa CPU e ngata haholo bakeng sa ts'ebetso ea liketsahalo, ea bobeli e hloka liphetoho tse ngata haholo tsa maemo. Ka hona, e sebelisoa hona joale recvmmsg ka li-buffers tse kholo (le li-buffers, liofisiri tse ntle, ha se letho ho uena!). Tšehetso bakeng sa UDP e tloaelehileng e boloketsoe linyeoe tse bobebe moo recvmmsg e sa hlokeng. Ka mokhoa oa multimessage, hoa khonahala ho fihlela ntho ea mantlha: boholo ba nako, khoele ea marang-rang e hula mola oa OS - e bala data ho tsoa ho sokete ebe e e fetisetsa ho buffer ea sebaka sa basebelisi, ka linako tse ling e fetohela ho fana ka buffer e tlatsitsoeng ho. aggregators. Letoto la sokete ha le bokelle, palo ea lipakete tse theohileng ha e hole.

mantsoe

Li-setting tsa kamehla, boholo ba buffer bo behiloe hore bo be seholo haholo. Haeba ka tšohanyetso u etsa qeto ea ho leka seva ka boeena, u ka 'na ua kopana le taba ea hore ka mor'a ho romela palo e nyenyane ea metrics, e ke ke ea fihla Graphite, e setseng ka har'a marang-rang a marang-rang. Ho sebetsa ka palo e nyane ea metrics, o hloka ho beha bufsize le boholo ba queue ho litekanyetso tse nyane ho config.

Qetellong, lichate tse ling tsa barati ba lichate.

Lipalopalo tsa palo ea metrics e kenang bakeng sa seva e 'ngoe le e 'ngoe: MPS e fetang limilione tse 2.

Bioyino - aggregator ea metrics e ajoang

E tima e 'ngoe ea li-node le ho fana ka metrics e kenang hape.

Bioyino - aggregator ea metrics e ajoang

Lipalopalo tsa metrics tse tsoang: ke node e le 'ngoe feela e lulang e romela - mookameli oa tlhaselo.

Bioyino - aggregator ea metrics e ajoang

Lipalo-palo tsa ts'ebetso ea node e 'ngoe le e' ngoe, ho nahanoa ka liphoso ho li-module tse fapaneng tsa sistimi.

Bioyino - aggregator ea metrics e ajoang

Lintlha tsa metrics tse kenang (mabitso a metric a patiloe).

Bioyino - aggregator ea metrics e ajoang

Re rera ho etsa eng ka see sohle nakong e tlang? Ehlile, ngola khoutu, damn ...! Morero o ne o reriloe qalong hore e be mohloli o bulehileng 'me o tla lula o le joalo bophelo bohle ba oona. Merero ea rona ea hang-hang e kenyelletsa ho fetohela ho mofuta oa rona oa Raft, ho fetola protocol ea lithaka ho e nkehang habonolo, ho hlahisa lipalo-palo tse ling tsa kahare, mefuta e mecha ea metrics, tokiso ea liphoso le lintlafatso tse ling.

Ha e le hantle, bohle ba amohelehile ho thusa ho nts'etsopele ea morero: theha PR, Litaba, haeba ho khoneha re tla arabela, re ntlafatse, joalo-joalo.

Ha ho ntse ho thoe, ke feela batho ba heso, rekang litlou tsa rona!



Source: www.habr.com

Eketsa ka tlhaloso