Kormeerka adeeg ahaan: hab habaysan oo loogu talagalay qaab-dhismeedka adeeg-yaraha

Maanta, marka lagu daro koodka monolithic, mashruucayagu waxa ku jira daraasiin adeeg-yaro ah. Mid kasta oo iyaga ka mid ah wuxuu u baahan yahay in la kormeero. Ku samaynta tan miisaankan oo kale iyadoo la adeegsanayo injineerada DevOps waa dhibaato. Waxaan samaynay nidaam la socodka oo u shaqeeya sidii adeeg kuwa horumariya. Waxay si madaxbanaan u qori karaan cabbirada nidaamka la socodka, isticmaalkooda, dhisi karaan dashboards iyaga ku saleysan, waxayna ku lifaaqi karaan digniinaha kuwaas oo kicin doona marka qiyamka bilowga la gaaro. Injineerada DevOps, kaliya kaabayaasha iyo dukumentiyada.

Qoraalkan waa qoraal ka mid ah hadalkayga oo aan la leeyahay qaybaha ee RIT++. Dad badan ayaa naga codsaday in aan qoraalo qoraal ah ka sameyno warbixinnada halkaas. Haddii aad joogtid shirka ama aad daawatay muuqaalka, ma heli doontid wax cusub. Iyo qof kasta oo kale - ku soo dhawow bisadda. Waxaan kuu sheegi doonaa sida aan ku nimid nidaamkan, sida uu u shaqeeyo iyo sida aan u qorsheyneyno inaan cusbooneysiinno.

Kormeerka adeeg ahaan: hab habaysan oo loogu talagalay qaab-dhismeedka adeeg-yaraha

Waagii hore: qorshayaasha iyo qorshayaasha

Sideen ku gaadhnay nidaamka la socodka ee hadda? Si aad uga jawaabto su'aashan, waxaad u baahan tahay inaad tagto 2015. Waa sida ay markaas u ekayd:

Kormeerka adeeg ahaan: hab habaysan oo loogu talagalay qaab-dhismeedka adeeg-yaraha

Waxa aanu haynay ilaa 24 qanjidh oo ka masuula la socodka. Waxa jira xidhmo dhan oo taaj oo kala duwan ah, qoraalo, daemons kuwaas oo si uun ula socda wax, dira fariimaha, oo qabta hawlo. Waxaan u maleynay in haddii aan sii soconno, uu yaraanayo nidaamka noocaas ah. Ma jirto wax faa'iido ah oo lagu horumarinayo: aad bay u dhib badan tahay.
Waxa aanu go'aansanay in aanu doorano walxaha la socodka ee aanu ilaalin doono oo aanu horumarinayno, iyo kuwa aanu ka tagi doono. Waxa jiray 19 ka mid ah. Kaliya garaafyada, isku-ururinta iyo Grafana sida dashboard-ka ayaa hadhay. Laakiin sidee buu u ekaan doonaa nidaamka cusub? Sida tan:

Kormeerka adeeg ahaan: hab habaysan oo loogu talagalay qaab-dhismeedka adeeg-yaraha

Waxaan haynaa kaydinta mitirka: kuwani waa garaafyada, kuwaas oo ku salaysnaan doona wadisyada SSDs ee degdega ah, kuwani waa isku-ururiyeyaasha qaarkood ee cabbirada. Xiga - Grafana oo soo bandhigaysa dashboards iyo Moira ee digniinta. Waxaan sidoo kale rabnay inaan sameyno nidaam lagu raadinayo cilladaha.

Heerka: Kormeerka 2.0

Tani waa sida qorshuhu u ekaa 2015. Laakiin waa inaan u diyaarino kaliya kaabayaasha iyo adeegga laftiisa, laakiin sidoo kale dukumentiyada loogu talagalay. Waxaanu u samaynay nafteena halbeeg shirkadeed, kaas oo aanu ugu yeedhno la socodka 2.0. Maxay ahaayeen shuruudaha nidaamka?

  • helitaan joogto ah;
  • dhexda kaydinta metrics = 10 ilbiriqsi;
  • kaydinta habaysan ee metrik iyo dashboards;
  • SLA > 99,99%
  • ururinta mitirka dhacdada iyada oo loo marayo UDP (!).

Waxaan u baahanahay UDP sababtoo ah waxaan haysanaa socodka gaadiidka iyo dhacdooyinka kuwaas oo soo saara qiyaaso. Haddi aad hal mar ku wada qorto garaafka, kaydku wuu dumayaa. Waxaan sidoo kale doorannay horgalayaasha heerka koowaad ee dhammaan cabbirrada.

Kormeerka adeeg ahaan: hab habaysan oo loogu talagalay qaab-dhismeedka adeeg-yaraha

Mid kasta oo ka mid ah horgalayaasha ayaa leh hanti. Waxaa jira cabbiro server-yada, shabakadaha, weelasha, agabka, codsiyada, iyo wixii la mid ah. Si cad, adag, shaandhayn teeb ah ayaa la hirgeliyay, halkaas oo aan aqbalno cabbirada heerka koowaad oo aan si fudud u tuurno inta soo hartay. Sidan ayaan u qorshaynay nidaamkan 2015-ka. Maxaa hadda jira?

Present: jaantuska isdhexgalka qaybaha kormeerka

Ugu horreyntii, waxaan la soconaa codsiyada: koodka PHP-ga, codsiyada iyo adeegaha yar-yar - marka la soo koobo, wax kasta oo horumariyayaashu qoraan. Dhammaan codsiyada waxay u diraan cabbirada UDP-ga isku-darka Brubeck (statsd, dib loogu qoray C). Waxa ay noqotay tii ugu dhaqsaha badnayd ee imtixaannada synthetic. Waxayna u dirtaa cabbirada mar hore la isku daray ee Graphite iyada oo loo sii marayo TCP.

Waxay leedahay nooc ka mid ah mitirka loo yaqaan saacadaha. Tani waa shay aad ugu habboon. Tusaale ahaan, xiriir kasta oo isticmaale ah ee adeegga, waxaad u dirtaa mitir oo leh waqtiga jawaabta Brubeck. Hal milyan oo jawaabo ayaa soo galay, laakiin isku-darka ayaa soo celiyay 10 mitir oo keliya. Waxaad haysataa tirada dadka yimid, ugu badnaan, ugu yaraan iyo celceliska wakhtiga jawaabta, dhexdhexaadka iyo 4 boqolkiiba. Kadibna xogta waxaa loo wareejiyaa Graphite waxaanan aragnaa dhammaan si toos ah.

Waxa kale oo aanu haynaa isku-darka mitirka qalabka, software-ka, nidaamka metrics iyo nidaamkayagii hore ee Munin la socodka (waxay noo shaqaynaysay ilaa 2015). Waxaas oo dhan waxaan ku soo ururinay C daemon CollectD (waxa ay leedahay farabadan oo kala duwan oo plugins ah oo lagu dhex dhisay, waxay codayn kartaa dhammaan khayraadka nidaamka martida loo yahay kaas oo lagu rakibay, kaliya ku qeex qaabeynta halka lagu qorayo xogta) iyo ku qor xogta Graphite iyada oo loo marayo. Waxa kale oo ay taageertaa plugins python iyo qoraallada qolofka, si aad u qori karto xalalkaaga caadada u ah: CollectD waxay xogtan ka ururin doontaa martigeliyaha maxalli ah ama fog (iyadoo loo malaynayo Curl) oo u diri Graphite.

Kadibna waxaan u dirnaa dhammaan cabbirada aan soo aruurinay Kaarboon-c-relay. Kani waa xalka Kaarboon Relay ka ee Graphite, lagu hagaajiyay C. Kani waa router soo ururiya dhammaan cabbirada aan ka dirno isku-ururiyeyaashayada oo u maro noodhka. Sidoo kale marxaladda dariiqa, waxay hubinaysaa ansaxnimada cabbirada. Marka hore, waa inay waafaqsan yihiin nidaamka horgalayaasha ee aan hore u muujiyay iyo, marka labaad, waxay ku ansaxayaan garaafka. Haddii kale way dhici doonaan.

Kaarboon-c-gudbinta ka dib waxay u dirtaa cabbirada kooxda Graphite. Waxaan u isticmaalnaa Kaarboon-cache, dib loogu qoray Go, sida kaydinta ugu weyn ee cabbirada. Go-carbon, sababtuna tahay taxanihiisa faraha badan, ayaa aad uga sarreeya Kaarboon-cache. Waxay helaysaa xogta waxayna ku qortaa saxanadaha iyadoo adeegsanaysa xirmada whisper (standard, oo ku qoran python). Si aan u akhrino xogta kaydkayaga, waxaan isticmaalnaa Graphite API. Aad buu uga dheereeyaa kan caadiga ah ee Graphite WEB. Maxaa ku dhacaya xogta xigta?

Waxay aadaan Grafana. Waxaan u isticmaalnaa garaafyadayada garaafyada sida isha ugu weyn ee xogta, oo lagu daray waxaan u haynaa Grafana sidii shabakad shabakad si ay u muujiso cabbirada iyo dhisidda muraayadaha. Mid kasta oo ka mid ah adeegyadooda, horumariyayaashu waxay abuuraan dashboardkooda. Kadibna waxay dhisaan garaafyo iyaga ku salaysan, kuwaas oo muujinaya cabbirada ay ka qoraan codsiyadooda. Marka lagu daro Grafana, waxaan sidoo kale leenahay SLAM. Kani waa jinni python ah oo xisaabiya SLA iyadoo lagu salaynayo xogta garaafka. Sidaan horeyba u sheegay, waxaan haynaa dhowr darsin oo adeeg yar ah, kuwaas oo mid walba uu leeyahay shuruudihiisa. Isticmaalka SLAM, waxaan aadnaa dukumeentiyada oo aan barbar dhignaa waxa ku jira Graphite oo aan isbarbar dhigno sida ugu wanaagsan ee shuruudaha u dhigmaan helitaanka adeegyadayada.

Aan sii wadno: feejignaanta. Waxaa loo habeeyey iyadoo la adeegsanayo nidaam xooggan - Moira. Way madaxbannaan tahay sababtoo ah waxay leedahay Graphite u gaar ah oo ku hoos jira daboolka. Waxaa soo saaray ragga ka socda SKB "Kontur", oo ku qoran Python iyo Go, oo gebi ahaanba furan. Moira waxay helaysaa isla socodka garaafyada. Haddii sabab qaar ka mid ah kaydintaadu u dhinto, ka digistaada weli way shaqayn doontaa.

Waxaan geynay Moira gudaha Kubernetes; waxay isticmaashaa koox ka mid ah server-yada Redis sida xogta ugu weyn. Natiijadu waxay ahayd nidaam khalad-dulqaad ah. Waxay is barbardhigtaa qulqulka mitirka iyo liiska kiciyeyaasha: haddii aysan jirin wax lagu sheegay, ka dibna waxay hoos u dhigtaa mitirka. Markaa waxay awood u leedahay inay dheefshiido gigabytes ee mitirka daqiiqaddii.

Waxaan sidoo kale ku lifaaqnay LDAP-ga shirkadeed, iyadoo la kaashanayo taas oo isticmaale kasta oo nidaamka shirkadu uu naftiisa u abuuri karo ogeysiisyo ku salaysan kiciyeyaasha jira (ama cusub ee la abuuray). Maadaama Moira ay ka kooban tahay Graphite, waxay taageertaa dhammaan sifooyinkiisa. Markaa marka hore qaado xariiqda oo ku koobiye Grafana. Eeg sida xogta loogu muujiyo garaafyada. Kadibna isla xariiq isku mid ah qaado oo ku koobiyeeyo Moira. Waxaad ku laadlaad gelisaa xadka oo waxaad ka heleysaa digniin marka la soo saaro. Si aad waxan oo dhan u samayso, uma baahnid aqoon gaar ah. Moira waxa uu ku baraarujin karaa SMS, iimaylka, Jira, Slack...Waxa kale oo ay taageertaa fulinta qoraalada gaarka ah. Marka uu kiciya ku dhaco iyada, oo ay ku biirto qoraal caadadii ah ama binary, way maamulaysaa oo u dirtaa JSON si ay u stdin binarykan. Sidaas awgeed, barnaamijkaagu waa inuu kala qaybiyaa. Waxa aad ku samayn doonto JSON-kan adiga ayay ku xidhan tahay. Haddii aad rabto, u dir Telegram, haddii aad rabto, ku fur hawlo Jira, wax kasta samee.

Waxaan sidoo kale u isticmaalnaa horumarkayaga si aan u feejignaano - Imagotag. Waxaan la jaanqaadnay guddiga, kaas oo inta badan loo isticmaalo qiimaha elektiroonigga ah ee dukaamada, si ay ugu habboonaato baahidayada. Waxa aanu Moira ka keennay kiciyeyaasha. Waxay tilmaamaysaa xaaladda ay ku sugan yihiin iyo goorta ay dhaceen. Qaar ka mid ah raggii horumarka ayaa ka tagay ogaysiisyada Slack oo iimaylka u doortay guddigan.

Kormeerka adeeg ahaan: hab habaysan oo loogu talagalay qaab-dhismeedka adeeg-yaraha

Hagaag, maadaama aanu nahay shirkad horumarsan, waxaanu sidoo kale la soconay Kubernetes nidaamkan. Waxaan ku darnay nidaamka anagoo adeegsanayna Heapster, oo aan ku rakibnay kooxda, waxay aruurisaa xogta waxayna u dirtaa Graphite. Natiijo ahaan, jaantusku wuxuu u eg yahay sidan:

Kormeerka adeeg ahaan: hab habaysan oo loogu talagalay qaab-dhismeedka adeeg-yaraha

Qaybaha la socodka

Halkan waxaa ah liiska isku xirka qaybaha aan u isticmaalnay hawshan. Dhammaantood waa il furan.

Garaaf:

Kaarboon-c-gudbinta:

github.com/grobian/carbon-c-relay

Brubeck:

github.com/github/brubeck

La ururiyay:

ururiyay.org

Moira:

github.com/moira-alert

Grafana:

grafana.com

Heapster:

github.com/kubernetes/heapster

Tirakoob

Oo halkan waxaa ah tirooyin ku saabsan sida nidaamku noogu shaqeeyo.

Isku-dariyaha (brubeck)

Tirada halbeegyada: ~ 300/sec
Muddada u dirida cabbirada Graphite: 30 ilbiriqsi
Isticmaalka kheyraadka serverka: ~ 6% CPU (waxaan ka hadleynaa adeegayaal buuxa); 1Gb RAM; ~ 3 Mbps LAN

Graphite (go-carbon)

Tirada halbeegyada: ~ 1 / daq
Muddada cusboonaysiinta cabbirada: 30 ilbiriqsi
Nidaamka kaydinta cabbirada: 30s 35d, 5min 90d, 10min 365d (waxay ku siinaysaa fahanka waxa ku dhacaya adeega mudo dheer)
Isticmaalka kheyraadka serverka: ~ 10% CPU; ~ 20Gb RAM; ~ 30 Mbps LAN

Fududeyn

Annagu haddaan nahay Avito runtii waxay qiimeeyaan dabacsanaanta adeeggayaga la socodka. Muxuu dhab ahaantii sidan ku noqday? Ugu horrayn, qaybaha ay ka kooban tahay waa la is beddeli karaa: labadaba laftooda iyo noocyadooda. Marka labaad, taageerada. Maadaama mashruuca oo dhami uu yahay il furan, waxaad adigu wax ka beddeli kartaa koodka, samayn kartaa isbeddello, oo aad hirgelin kartaa hawlaha aan laga heli karin sanduuqa dhexdiisa. Xirmooyinka caadiga ah ayaa la isticmaalaa, gaar ahaan Go iyo Python, marka tan si fudud ayaa loo sameeyaa.

Halkan waxaa ah tusaale dhibaato dhab ah. Halbeegga Graphite waa fayl. Waxay leedahay magac. Magaca faylka = metric name. Oo waxaa jirta waddo loo maro halkaas. Magacyada faylalka Linux waxay ku kooban yihiin 255 xaraf. Oo waxaan leenahay (sida "macaamiisha gudaha") rag ka socda waaxda xogta. Waxay noo sheegaan: "Waxaan rabnaa inaan la soconno weydiimahayada SQL. Oo ma aha 255 characters, laakiin 8 MB midkiiba. Waxaan rabnaa inaan ku soo bandhigno Grafana, aragno xuduudaha codsigan, iyo xitaa si ka sii fiican, waxaan rabnaa inaan aragno meesha ugu sarreysa codsiyadaas. Way fiicnaan doontaa haddii la soo bandhigo waqtiga dhabta ah. Runtii way fiicnaan lahayd in la geliyo heeganka. "

Kormeerka adeeg ahaan: hab habaysan oo loogu talagalay qaab-dhismeedka adeeg-yaraha
Tusaalaha weydiinta SQL waxa loo soo qaatay tusaale ahaan goobta postgrespro.ru

Waxaan dejinay server-ka Redis oo aan isticmaalno plugins-yadayada la ururiyay, kuwaas oo aadaya Postgres oo ka qaadaya dhammaan xogta halkaas, iyaga oo u diraya cabbirro Graphite. Laakiin waxaan ku bedelnaa magaca mitirka leh hashes. Isla mar ahaantaana waxaan u dirnaa xashiish isku mid ah Redis furaha ahaan, iyo dhammaan weydiinta SQL qiimo ahaan. Waxa kaliya ee aan sameyno waa inaan hubinno in Grafana ay aadi karto Redis oo ay qaadan karto macluumaadkan. Waxaan furaynaa Graphite API sababtoo ah... Kani waa isdhexgalka ugu weyn ee isdhexgalka dhammaan qaybaha kormeerka ee garaafka, waxaanan galeynaa shaqo cusub oo loo yaqaan aliasByHash () - laga bilaabo Grafana waxaan helnaa magaca mitirka, waxaana u isticmaalnaa codsi ku saabsan Redis sida furaha, jawaabta waxaan helnaa qiimaha furaha, kaas oo ah "Su'aal SQL" Sidaa darteed, waxaan ku soo bandhignay Grafana bandhig su'aal SQL ah, taas oo aragti ahaan aan suurtagal ahayn in lagu soo bandhigo halkaas, oo ay la socoto tirakoobyada (wacitaannada, safafka, total_time, ...).

Natiijooyinka

Helitaanka Adeegeena la socodka waxa laga heli karaa 24/7 codsi kasta iyo kood kasta. Haddii aad marin u leedahay tas-hiilaadka kaydinta, waxaad u qori kartaa xogta adeegga. Afku muhiim maaha, go'aanadu muhiim maaha. Kaliya waxaad u baahan tahay inaad ogaato sida loo furo godka, dhig mitirka halkaas oo xidh godka.

Kalsooni Dhammaan qaybaha waa u dulqaadan karaan khaladaadka waxayna si fiican u maareeyaan culayskayaga.

Caqabad hooseeya ee gelitaanka Si aad u isticmaasho nidaamkan, uma baahnid inaad ku barato luuqadaha barnaamijyada iyo su'aalaha gudaha Grafana. Kaliya fur arjigaaga, geli bareesada u diri doona mitirka Graphite, xidhi doona, furi doona Grafana, ka samee dashboards oo fiiri hab-dhaqanka cabbirka, ogaysiisyada ka helaya Moira.

Madaxbanaanida. Waxaas oo dhan waad samayn kartaa laftaadu, adoon la'aanteed injineerada DevOps. Tanina waa faa'iido, sababtoo ah waxaad la socon kartaa mashruucaaga hadda, uma baahnid inaad qofna weydiiso - ama inaad bilowdo shaqo ama inaad isbedel sameyso.

Maxaynu hiigsanaynaa?

Wax kasta oo hoos ku taxan maaha oo kaliya fikradaha aan la taaban karin, laakiin waa wax ugu yaraan la qaaday tillaabooyinka ugu horreeya.

  1. Anomaly detector. Waxaan rabnaa inaan abuurno adeeg aadi doona kaydinta Graphite-ka oo aan hubinno mitir kasta anagoo adeegsanayna algorithms kala duwan. Waxaa jira algorithms-ka aan rabno inaan aragno, waxaa jira xog, waan ognahay sida loola shaqeeyo.
  2. Xogta badan Waxaan haynaa adeegyo badan, way isbedelaan waqti ka dib, sida dadka iyaga la shaqeeya. In si joogta ah loo ilaaliyo dukumeentiyada gacanta maahan ikhtiyaar. Taasi waa sababta aan hadda ugu dhex galno xogta badan ee adeegyadeena yaryar. Waxay sheegaysaa cidda soo saartay, luqadaha ay la falgasho, shuruudaha SLA, meesha iyo cidda ogeysiisyada loo diri karo. Marka la dirayo adeegga, dhammaan xogta cidda waxa loo abuuray si madaxbannaan. Natiijo ahaan, waxaad heleysaa laba xiriiriye - mid kiciya, kan kalena dashboards gudaha Grafana.
  3. La socodka guri kasta. Waxaan aaminsanahay in dhammaan horumariyayaashu ay tahay inay isticmaalaan nidaamkan. Xaaladdan oo kale, waxaad had iyo jeer fahamtaa halka uu taraafikadaagu yahay, waxa ku dhacaya, meesha uu ku dhaco, halka ay daciifto. Haddii, tusaale ahaan, shay yimaado oo burburo adeeggaaga, markaa waxaad baran doontaa wax ku saabsan ma aha inta lagu jiro wicitaan ka yimid maamulaha, laakiin ka digtoonow, oo isla markiiba waxaad furi kartaa diiwaanadii ugu dambeeyay oo aad aragto wixii halkaas ka dhacay.
  4. Waxqabad sare. Mashruucayagu si joogto ah ayuu u korayaa, maantana waxa uu ku shaqeeyaa qiyaastii 2 oo mitir ah daqiiqaddii. Sannad ka hor, tiradani waxay ahayd 000. Kobacana wuu sii socdaa, tani waxay la macno tahay in muddo ka dib Graphite (sharaf) ay bilaabi doonto inay si xoog leh u buuxiso nidaamka hoose ee diskka. Sidaan horeyba u sheegay, nidaamkan la socodka waa mid caalami ah sababtoo ah isweydaarsiga qaybaha. Qof ayaa ilaaliya oo si joogto ah u ballaariya kaabayaashiisa gaar ahaan Graphite, laakiin waxaan go'aansanay inaan qaadno waddo kale: isticmaal GujiHouse kayd ahaan qiyaasahayada. Kala-guurkaani wuxuu ku dhow yahay inuu dhammaado, dhawaanna waxaan si faahfaahsan kuugu sheegi doonaa sida arrintan loo sameeyay: dhibaatooyinkii jiray iyo sida looga gudbay, habka socdaalka, waxaan ku tilmaami doonaa qaybaha loo doortay inay yihiin kuwo isku xidhan iyo habayntooda.

Waad ku mahadsan tahay dareenkaaga! Weydii su'aalahaaga mawduuca, waxaan isku dayi doonaa inaan ka jawaabo halkan ama qoraalada soo socda. Waxaa laga yaabaa in qof uu khibrad u leeyahay dhisidda nidaam la mid ah ama u beddelashada Clickhouse xaalad la mid ah - ku wadaag faallooyinka.

Source: www.habr.com

Add a comment