Fanaraha-maso ho serivisy: rafitra modular ho an'ny maritrano microservice

Ankehitriny, ankoatry ny kaody monolithic, ny tetikasanay dia misy serivisy micro am-polony. Ny tsirairay amin'izy ireo dia mitaky ny fanaraha-maso. Ny fanaovana izany amin'ny ambaratonga toy izany amin'ny fampiasana injeniera DevOps dia olana. Namolavola rafitra fanaraha-maso izay miasa toy ny serivisy ho an'ny mpamorona izahay. Afaka manoratra metrika tsy miankina amin'ny rafitra fanaraha-maso izy ireo, mampiasa azy ireo, manangana dashboard mifototra amin'izy ireo, ary mametaka fanairana amin'izy ireo izay havoaka rehefa tratra ny soatoavin'ny tokonam-baravarana. Ho an'ny injeniera DevOps, fotodrafitrasa sy antontan-taratasy ihany.

Ity lahatsoratra ity dia dika mitovy amin'ny lahateniko miaraka aminay fizarana ao amin'ny RIT++. Olona maro no nangataka anay hanao dikan-tsoratra ny tatitra avy any. Raha tany amin'ny fihaonambe ianao na nijery ilay horonan-tsary dia tsy hahita zava-baovao ianao. Ary ny olon-drehetra - tongasoa eto amin'ny saka. Holazaiko aminao ny fomba nahatongavanay tamin'ny rafitra toy izany, ny fomba fiasany ary ny fomba kasainay hanavao azy io.

Fanaraha-maso ho serivisy: rafitra modular ho an'ny maritrano microservice

Ny lasa: tetika sy drafitra

Ahoana no nahatongavantsika tamin'ny rafitra fanaraha-maso ankehitriny? Mba hamaliana io fanontaniana io dia mila mandeha any amin'ny 2015 ianao. Toy izao ny endriny tamin'izany:

Fanaraha-maso ho serivisy: rafitra modular ho an'ny maritrano microservice

Nanana node 24 teo ho eo izahay izay tompon'andraikitra amin'ny fanaraha-maso. Misy fonosana feno satroboninahitra, script, daemon izay manara-maso zavatra, mandefa hafatra ary manao asa. Nihevitra izahay fa arakaraky ny nandehananay, dia tsy ho azo atao ny rafitra toy izany. Tsy misy dikany ny fampivelarana azy: sarotra loatra.
Nanapa-kevitra ny hisafidy ireo singa fanaraha-maso izay hotehirizinay sy velarinay izahay, ary ireo izay hafoinay. Niisa 19 izy ireo. Ny graphite sy ny agrΓ©gateur ary ny Grafana ho toy ny dashboard sisa no tavela. Hanao ahoana anefa ny rafitra vaovao? Toa izao:

Fanaraha-maso ho serivisy: rafitra modular ho an'ny maritrano microservice

Manana fitahirizana metrika izahay: ireo dia graphite, izay hiorina amin'ny kapila SSD haingana, ireo dia aggregators ho an'ny metrika. Manaraka - Grafana amin'ny fampisehoana dashboard sy Moira ho fanairana. Naniry koa izahay hamolavola rafitra iray hitadiavana tsy mety.

Fenitra: Fanaraha-maso 2.0

Toy izao ny endriky ny drafitra tamin’ny taona 2015. Tsy ny fotodrafitrasa sy ny tolotra ihany anefa no tsy maintsy nomanina, fa ny antontan-taratasy momba izany. Namolavola fenitry ny orinasa ho an'ny tenanay izahay, izay antsoinay hoe fanaraha-maso 2.0. Inona no fepetra takiana amin'ny rafitra?

  • ny fisian'ny tsy tapaka;
  • elanelana fitahirizana metrika = 10 segondra;
  • fitehirizana rafitra metrika sy dashboard;
  • SLA > 99,99%
  • fanangonana metrika hetsika amin'ny alΓ lan'ny UDP (!).

Nila UDP izahay satria be dia be ny fifamoivoizana sy hetsika miteraka metrika. Raha soratanao ao anaty graphite indray mandeha izy rehetra, dia hirodana ny fitahirizana. Nisafidy prefix ambaratonga voalohany ihany koa izahay ho an'ny metrika rehetra.

Fanaraha-maso ho serivisy: rafitra modular ho an'ny maritrano microservice

Samy manana ny toetrany ny prefix tsirairay. Misy metrika ho an'ny mpizara, tambajotra, kaontenera, loharano, fampiharana, sns. Efa nampiharina ny sivana mazava, hentitra, voatendry, izay ekenay ny metrika ambaratonga voalohany ary arianay fotsiny ny ambiny. Toy izao no nanomanay ity rafitra ity tamin’ny taona 2015. Inona ny amin'izao fotoana izao?

Amin'izao fotoana izao: diagram ny fifandraisan'ny singa fanaraha-maso

Voalohany indrindra, manara-maso ny rindranasa izahay: kaody PHP, rindranasa ary serivisy madinika - raha fintinina, ny zavatra rehetra soratan'ny mpamorona anay. Ny fampiharana rehetra dia mandefa metrika amin'ny alΓ lan'ny UDP mankany amin'ny aggregator Brubeck (statsd, nosoratana tamin'ny C). Izy io no haingana indrindra tamin'ny fitsapana synthetic. Ary alefany any amin'ny Graphite amin'ny alalan'ny TCP ireo metrika efa natambatra.

Misy karazana metrika antsoina hoe timer. Izany dia zavatra tena mety. Ohatra, ho an'ny fifandraisan'ny mpampiasa tsirairay amin'ny serivisy ianao dia mandefa metrika misy ny fotoana famaliana an'i Brubeck. Valiny iray tapitrisa no tonga, saingy metrika 10 monja no naverin'ilay mpanangona. Manana ny isan'ny olona tonga ianao, ny fara-tampony, ny kely indrindra ary ny salan'isa, ny mediana ary ny faha-4 isan-jato. Avy eo ny angon-drakitra dia nafindra tany amin'ny Graphite ary hitantsika mivantana daholo izany.

Izahay koa dia manana fitambarana metrika momba ny hardware, logiciel, metrika rafitra ary ny rafitra fanaraha-maso an'i Munin taloha (niasa taminay hatramin'ny 2015 izany). Manangona izany rehetra izany izahay amin'ny alΓ lan'ny C daemon CollectD (manana plugins maro isan-karazany napetraka ao anatiny, afaka manadihady ny loharanon-karena rehetra ao amin'ny rafitra fampiantranoana izay ametrahana azy, mamaritra fotsiny ao amin'ny fanamafisana ny toerana hanoratana ny data) ary Soraty amin'ny Graphite amin'ny alalan'izany ny angona. Izy io koa dia manohana ny plugins python sy ny script shell, mba hahafahanao manoratra ny vahaolana mahazatra anao: CollectD dia hanangona izany angona izany avy amin'ny mpampiantrano iray eo an-toerana na lavitra (mihevitra ny Curl) ary handefa izany any amin'ny Graphite.

Avy eo dia alefanay any amin'ny Carbon-c-relay ny metrika rehetra nangoninay. Ity no vahaolana Carbon Relay avy amin'ny Graphite, novaina tamin'ny C. Ity dia router iray izay manangona ny metrika rehetra alefanay avy amin'ny aggregators ary mitondra azy ireo mankany amin'ny nodes. Eo amin'ny sehatry ny zotra ihany koa dia manamarina ny maha-marina ny metrika. Voalohany, tsy maintsy mifanandrify amin'ny tetika prefix izay nasehoko teo aloha izy ireo ary faharoa, manan-kery amin'ny graphite izy ireo. Raha tsy izany dia hianjera izy ireo.

Ny Carbon-c-relay dia mandefa ny metrika amin'ny cluster Graphite. Mampiasa Carbon-cache izahay, naverina nosoratana ao amin'ny Go, ho fitahirizana metrika lehibe. Ny Go-carbon, noho ny multithreading, dia mihoatra lavitra noho ny Carbon-cache. Mandray angon-drakitra izy ary manoratra izany amin'ny kapila mampiasa ny fonosana bitsibitsika (manara-penitra, voasoratra amin'ny python). Mba hamakiana angona avy amin'ny fitahirizanay dia mampiasa ny Graphite API izahay. Haingana lavitra noho ny mahazatra Graphite WEB. Inona no mitranga amin'ny angona manaraka?

Nankany Grafana izy ireo. Ampiasainay ho loharanon'ny angon-drakitra ny cluster graphite anay, ary manana Grafana izahay ho interface tsara amin'ny tranonkala hanehoana metrika sy fananganana dashboard. Ho an'ny serivisy tsirairay dia mamorona dashboard azy manokana ny developer. Avy eo izy ireo dia manangana grafika mifototra amin'izy ireo, izay mampiseho ny metrika soratany avy amin'ny fampiharana azy. Ankoatra ny Grafana dia manana SLAM ihany koa izahay. Ity dia demonia python izay manisa ny SLA mifototra amin'ny angona avy amin'ny graphite. Araka ny efa nolazaiko dia manana microservice am-polony izahay, izay samy manana ny fepetra takian'izy ireo. Amin'ny fampiasana SLAM, mandeha any amin'ny antontan-taratasy izahay ary mampitaha izany amin'ny zavatra ao amin'ny Graphite ary mampitaha ny mifanaraka amin'ny fepetra takiana amin'ny fisian'ny serivisy.

Andao handeha lavitra: fanairana. Izy io dia voalamina amin'ny fampiasana rafitra matanjaka - Moira. Mahaleo tena izy satria manana ny Graphite ao ambanin'ny saron-tava. Namboarin'ireo lehilahy avy amin'ny SKB "Kontur", nosoratana tamin'ny python sy Go, loharano misokatra tanteraka. Mandray ny fikorianan'ny grafita i Moira. Raha maty noho ny antony sasany ny fitahirizanao dia mbola hiasa ny fanairanao.

Nametraka an'i Moira tao amin'ny Kubernetes izahay; mampiasa andiana mpizara Redis izy io ho angon-drakitra fototra. Ny vokatr'izany dia rafitra mahazaka fahadisoana. Mampitaha ny fikorianan'ny metrika amin'ny lisitry ny trigger izy io: raha tsy misy voatonona ao dia atsaharo ny metrika. Noho izany dia afaka mandevona gigabytes ny metrika isa-minitra.

Ampifandraisinay amin'izany koa ny LDAP orinasa iray, miaraka amin'ny fanampian'ny mpampiasa tsirairay avy amin'ny rafitra orinasa afaka mamorona fampahafantarana ho azy manokana mifototra amin'ny trigger efa misy (na vao noforonina). Satria misy Graphite i Moira, dia manohana ny endri-javatra rehetra izy. Koa alao aloha ilay tsipika ary adikao amin'ny Grafana. Jereo ny fomba fanehoana ny angona eo amin'ny grafika. Ary avy eo dia maka andalana mitovy ianao ary mandika izany amin'ny Moira. Manantona azy amin'ny fetra ianao ary mahazo fanairana amin'ny vokatra. Mba hanaovana izany rehetra izany dia tsy mila fahalalana manokana ianao. Moira dia afaka mampitandrina amin'ny alΓ lan'ny SMS, mailaka, Jira, Slack ... Manohana ny fanatanterahana ny script manokana ihany koa izy io. Rehefa misy trigger mitranga aminy, ary misoratra anarana amin'ny script manokana na binary izy, dia mandehana izany ary mandefa JSON ho stdin ho an'ity binary ity. Noho izany, ny programanao dia tsy maintsy manara-maso azy. Ny zavatra hataonao amin'ity JSON ity dia miankina aminao. Raha tianao, alefaso any amin'ny Telegram, raha tianao, sokafy ny asa ao Jira, ataovy na inona na inona.

Mampiasa ny fivoarantsika manokana ihany koa izahay ho fanairana - Imagotag. Namboarinay ny tontonana, izay matetika ampiasaina amin'ny marika elektronika amin'ny fivarotana, mba hifanaraka amin'ny filanay. Nitondra trigger avy any Moira izahay. Izy io dia manondro ny fanjakana misy azy ireo ary ny fotoana nitrangan'izy ireo. Ny sasany amin'ireo lehilahy fampandrosoana dia nandao ny fampandrenesana tao amin'ny Slack ary mailaka ho an'ity tontonana ity.

Fanaraha-maso ho serivisy: rafitra modular ho an'ny maritrano microservice

Eny, satria orinasa mandroso izahay, dia nanara-maso ny Kubernetes amin'ity rafitra ity ihany koa. Nampidirinay tao amin'ny rafitra izy io tamin'ny fampiasana Heapster, izay napetrakay tao amin'ny cluster, manangona angon-drakitra ary mandefa azy any amin'ny Graphite. Vokatr'izany dia toy izao ny kisary:

Fanaraha-maso ho serivisy: rafitra modular ho an'ny maritrano microservice

Fitaovana fanaraha-maso

Ity misy lisitry ny rohy mankany amin'ireo singa nampiasainay tamin'ity asa ity. Izy rehetra dia loharano misokatra.

Graphite:

Carbon-c-relay:

github.com/grobian/carbon-c-relay

Brubeck:

github.com/github/brubeck

nangonina:

collectd.org

Moira:

github.com/moira-alert

Grafana:

grafana.com

Heapster:

github.com/kubernetes/heapster

Бтатистика

Ary ireto misy isa vitsivitsy momba ny fomba fiasan'ny rafitra ho antsika.

Aggregator (brubeck)

Isan'ny metrika: ~300/s
Elanelanelan'ny fandefasana metrika amin'ny Graphite: 30 seg
Fampiasana loharanon-tserasera: ~ 6% CPU (miresaka momba ny mpizara feno izahay); ~ 1Gb RAM; ~3 Mbps LAN

Graphite (go-carbon)

Isan'ny metrika: ~ 1 / min
Elanelan'ny fanavaozana ny metrika: 30 seg
Rafitra fitahirizana metrika: 30sec 35d, 5min 90d, 10min 365d (manome anao fahatakarana ny zava-mitranga amin'ny serivisy mandritra ny fotoana maharitra)
Fampiasana loharanon-tserasera: ~ 10% CPU; ~ 20Gb RAM; ~30 Mbps LAN

manovaova

Izahay ato amin'ny Avito dia tena manome lanja ny fahafaha-manao amin'ny serivisy fanaraha-maso. Nahoana no tena nipoitra toy izao izy? Voalohany, azo ovaina ny singa ao aminy: na ny singa tena sy ny dikan-teny. Faharoa, fanohanana. Satria loharano misokatra ny tetikasa manontolo, azonao atao ny manitsy ny kaody anao, manao fanovana ary mampihatra ireo fiasa izay tsy hita ivelan'ny boaty. Ny stack mahazatra dia ampiasaina, indrindra ny Go sy Python, noho izany dia atao tsotra izao.

Ity misy ohatra iray amin'ny tena olana. Ny metric ao amin'ny Graphite dia rakitra. Manana anarana izy io. Anaran'ny rakitra = anarana metrika. Ary misy fomba ahatongavana any. Ny anaran-drakitra amin'ny Linux dia voafetra ho 255 tarehintsoratra. Ary manana (amin'ny maha-"mpanjifa anatiny") izahay avy amin'ny departemantan'ny database. Hoy izy ireo taminay: β€œTe hanara-maso ny fanontaniantsika SQL izahay. Ary tsy tarehintsoratra 255 izy ireo, fa 8 MB avy. Te-hampiseho azy ireo amin'ny Grafana izahay, jereo ny mari-pamantarana ho an'ity fangatahana ity, ary tsara kokoa aza, te-hahita ny tampon'ny fangatahana toy izany izahay. Hahafinaritra izany raha aseho amin'ny fotoana tena izy. Tena mety ny mametraka azy ireo amin'ny fanairana. ”

Fanaraha-maso ho serivisy: rafitra modular ho an'ny maritrano microservice
Ny fangatahana SQL ohatra dia raisina ho ohatra avy amin'ny tranokala postgrespro.ru

Nanangana mpizara Redis izahay ary mampiasa ny Collectd plugins, izay mandeha any amin'ny Postgres ary maka ny angon-drakitra rehetra avy ao, mandefa metrika amin'ny Graphite. Saingy soloinay amin'ny hash ny anarana metrika. Mandefa tenifototra mitovy amin'ny Redis ho fanalahidy izahay, ary ny fangatahana SQL manontolo ho sandany. Ny hany tsy maintsy ataontsika dia ny mahazo antoka fa afaka mankany Redis i Grafana ary maka izany vaovao izany. Manokatra ny Graphite API izahay satria... Ity no interface tsara indrindra amin'ny fifandraisan'ny singa fanaraha-maso rehetra miaraka amin'ny graphite, ary miditra amin'ny fiasa vaovao antsoina hoe aliasByHash() - avy amin'ny Grafana dia mahazo ny anaran'ny metric, ary mampiasa izany amin'ny fangatahana an'i Redis ho fanalahidy, amin'ny valiny dia mahazo ny sandan'ny fanalahidy, izay ny "Query SQL" " Noho izany, nasehonay tao amin'ny Grafana ny fanehoana fangatahana SQL, izay tsy azo aseho ao amin'ny teoria, miaraka amin'ny antontan'isa momba izany (antso, laharana, total_time, ...).

vokatra

Availability. Ny serivisy fanaraha-maso dia misy 24/7 avy amin'ny fampiharana rehetra sy ny code rehetra. Raha afaka miditra amin'ny toerana fitahirizana ianao dia afaka manoratra angona amin'ny serivisy. Tsy zava-dehibe ny fiteny, tsy zava-dehibe ny fanapahan-kevitra. Ilainao ihany ny mahafantatra ny fomba fanokafana socket, asio metric eo ary hanidy ny socket.

Azo itokisana. Ny singa rehetra dia mahazaka lesoka ary mitantana tsara ny entanay.

Sakana ambany amin'ny fidirana. Raha te hampiasa an'ity rafitra ity dia tsy mila mianatra fiteny fandaharana sy fanontaniana amin'ny Grafana ianao. Sokafy fotsiny ny fampiharanao, ampidiro ao ny socket izay handefa metrika amin'ny Graphite, akatony, sokafy ny Grafana, mamorona dashboards eo ary jereo ny fihetsiky ny metrikao, mandray fampandrenesana amin'ny alΓ lan'ny Moira.

Fahaleovantena. Afaka manao izany rehetra izany ianao, tsy misy ny fanampian'ny injeniera DevOps. Ary tombony izany, satria afaka manara-maso ny tetikasanao ianao amin'izao fotoana izao, tsy mila manontany olona ianao - na hanomboka hiasa na hanao fanovana.

Inona no kendrentsika?

Ny zava-drehetra voatanisa etsy ambany dia tsy eritreritra saro-takarina fotsiny, fa zavatra iray izay farafaharatsiny ny dingana voalohany no natao.

  1. Anomaly detector. Te-hamorona serivisy handeha any amin'ny fitahirizanay Graphite izahay ary hanamarina ny metrika tsirairay amin'ny alΓ lan'ny algorithm isan-karazany. Efa misy algorithm tiana hojerena, misy angona, haintsika ny miasa aminy.
  2. Metadata. Manana serivisy maro izahay, miova izy ireo rehefa mandeha ny fotoana, toy ny olona miara-miasa aminy. Tsy safidy ny fikojakojana ny antontan-taratasy amin'ny tanana. Izany no mahatonga anay hampiditra metadata amin'ny microservices. Lazainy hoe iza no namolavola azy, ny fiteny ifaneraserany, ny fepetra takian'ny SLA, ny toerana sy ny tokony handefasana fampandrenesana. Rehefa manaparitaka serivisy iray dia noforonina tsy miankina ny angon-drakitra rehetra. Vokatr'izany dia mahazo rohy roa ianao - ny iray ho an'ny trigger, ny iray ho an'ny dashboard ao Grafana.
  3. Fanaraha-maso isan-tokantrano. Mino izahay fa tokony hampiasa rafitra toy izany ny mpamorona rehetra. Amin'ity tranga ity, azonao foana hoe aiza ny fifamoivoizanao, inona no mitranga aminy, aiza ny fianjerany, aiza ny fahalemeny. Raha toa, ohatra, misy zavatra tonga ka manimba ny serivisinao, dia hianatra momba izany ianao tsy mandritra ny antso avy amin'ny mpitantana, fa avy amin'ny fanairana, ary afaka manokatra avy hatrany ny logs farany ianao ary hijery izay nitranga tao.
  4. Fampisehoana avo lenta. Tsy mitsaha-mitombo ny tetikasanay, ary amin'izao fotoana izao dia manodina sanda metric 2 isa-minitra. Herintaona lasa izay, io tarehimarika io dia 000 000. Ary mitohy ny fitomboana, ary midika izany fa rehefa afaka kelikely dia hanomboka hameno ny subsystem kapila ny Graphite (bitsika). Araka ny efa nolazaiko, ity rafitra fanaraha-maso ity dia tena manerana izao rehetra izao noho ny fifandimbiasana ny singa. Misy olona mitazona sy manitatra hatrany ny fotodrafitrasany manokana ho an'ny Graphite, saingy nanapa-kevitra ny handeha amin'ny lalana hafa izahay: mampiasa clickhouse ho tahiry ho an'ny metrikay. Efa saika vita io tetezamita io, ary tsy ho ela dia holazaiko aminao amin'ny antsipiriany kokoa ny fomba nanaovana izany: inona ny fahasahiranana teo sy ny fomba nandreseny azy, ny fandehan'ny fifindra-monina, holazaiko ireo singa nofidina ho mamatotra sy ny fanamafisam-peo.

Misaotra anao noho ny fifantohanao! Apetraho ny fanontanianao momba ny lohahevitra, hiezaka aho hamaly eto na amin'ny lahatsoratra manaraka. Angamba misy olona manana traikefa amin'ny fananganana rafitra fanaraha-maso mitovy amin'izany na mifindra amin'ny Clickhouse amin'ny toe-javatra mitovy amin'izany - zarao amin'ny fanehoan-kevitra.

Source: www.habr.com

Add a comment