Nleba anya dị ka ọrụ: usoro modular maka ụlọ ọrụ microservice

Taa, na mgbakwunye na koodu monolithic, ọrụ anyị gụnyere ọtụtụ microservices. Onye ọ bụla n'ime ha chọrọ ka a nyochaa ya. Ime nke a n'ogo dị otú ahụ site na iji ndị injinia DevOps bụ nsogbu. Anyị emepụtala usoro nlekota nke na-arụ ọrụ dị ka ọrụ maka ndị mmepe. Ha nwere ike dee metrik n'onwe ha n'ime sistemụ nleba anya, jiri ha, wuo dashboards dabere na ha, ma tinye aka na ha nke ga-akpalite mgbe ruru ụkpụrụ oke. Maka ndị injinia DevOps, naanị akụrụngwa na akwụkwọ.

Edemede a bụ ederede okwu m na anyị ngalaba na RIT++. Ọtụtụ ndị mmadụ gwara anyị ka anyị si ebe ahụ mee nsụgharị ederede nke akụkọ. Ọ bụrụ na ị nọ na ogbako ma ọ bụ lelee vidiyo, ị gaghị ahụ ihe ọhụrụ. Na onye ọ bụla ọzọ - nabata na pusi. M ga-agwa gị ka anyị si bịa na usoro dị otú ahụ, otú o si arụ ọrụ na otú anyị si eme atụmatụ imelite ya.

Nleba anya dị ka ọrụ: usoro modular maka ụlọ ọrụ microservice

Oge gara aga: atụmatụ na atụmatụ

Kedu ka anyị siri rute na sistemụ nleba anya ugbu a? Iji zaa ajụjụ a, ị ga-aga 2015. Nke a bụ ka ọ dị mgbe ahụ:

Nleba anya dị ka ọrụ: usoro modular maka ụlọ ọrụ microservice

Anyị nwere ihe dị ka ọnụ ọnụ 24 bụ ndị na-ahụ maka nlekota. Enwere mkpọ okpueze dị iche iche, scripts, daemons nke na-enyocha ihe n'ụzọ ụfọdụ, zipu ozi ma rụọ ọrụ. Anyị chere na ka anyị na-aga n'ihu, usoro dị otú ahụ ga-adị obere. Ọ baghị uru ịzụlite ya: ọ dị oke egwu.
Anyị kpebiri ịhọrọ ihe nleba anya ndị anyị ga-edobe ma mepụta, yana ndị anyị ga-ahapụ. Ha dị 19. Naanị graphites, aggregators na Grafana dị ka dashboard ka fọdụrụ. Ma olee otú usoro ọhụrụ ahụ ga-adị ka? Dị ka nke a:

Nleba anya dị ka ọrụ: usoro modular maka ụlọ ọrụ microservice

Anyị nwere ebe nchekwa metrik: ndị a bụ eserese, nke ga-adabere na draịva SSD ngwa ngwa, ndị a bụ ụfọdụ nchịkọta maka metrik. Ọzọ - Grafana maka igosipụta dashboards yana Moira maka ịdọ aka ná ntị. Anyị chọkwara ịmepụta usoro maka ịchọ ihe na-adịghị mma.

Ọkọlọtọ: Nleba anya 2.0

Nke a bụ ihe atụmatụ ahụ dị ka 2015. Ma anyị aghaghị ịkwadebe ọ bụghị naanị akụrụngwa na ọrụ n'onwe ya, kamakwa akwụkwọ maka ya. Anyị ewepụtala ụkpụrụ ụlọ ọrụ maka onwe anyị, nke anyị na-akpọ nlekota 2.0. Kedu ihe ndị a chọrọ maka usoro ahụ?

  • ịdị adị mgbe niile;
  • metrics etiti oge nchekwa = 10 sekọnd;
  • nchekwa ahaziri ahazi nke metrik na dashboard;
  • SLA> 99,99%
  • nchịkọta ihe omume metrics site na UDP (!).

Anyị chọrọ UDP n'ihi na anyị nwere nnukwu okporo ụzọ na ihe omume na-emepụta metrik. Ọ bụrụ na ị dee ha niile na graphite ozugbo, nchekwa ahụ ga-ada. Anyị họrọkwara prefixes ọkwa mbụ maka metrik niile.

Nleba anya dị ka ọrụ: usoro modular maka ụlọ ọrụ microservice

Nke ọ bụla n'ime prefixes nwere ụfọdụ ihe onwunwe. Enwere metrik maka sava, netwọkụ, arịa, akụrụngwa, ngwa, na ndị ọzọ. Emejuputala nzacha doro anya, siri ike, pịnye, ebe anyị na-anabata metrik ọkwa nke mbụ wee tufuo ndị ọzọ. Otu a ka anyị siri hazie usoro a na 2015. Kedu ihe dị ugbu a?

Ugbu a: eserese nke mmekọrịta nke ihe nleba anya

Nke mbụ, anyị na-enyocha ngwa: koodu PHP anyị, ngwa na microservices - na nkenke, ihe niile ndị mmepe anyị na-ede. Ngwa niile na-eziga metrik site na UDP gaa na mkpokọta Brubeck (statsd, edegharịrị na C). Ọ tụgharịrị bụrụ nke kachasị ọsọ na nyocha sịntetik. Ọ na-eziga metrik achịkọtalarị na Graphite site na TCP.

Ọ nwere ụdị metrics a na-akpọ oge. Nke a bụ ihe dị mma nke ukwuu. Dịka ọmụmaatụ, maka njikọ onye ọrụ ọ bụla na ọrụ ahụ, ị ​​na-eziga metrik nwere oge nzaghachi na Brubeck. Nzaghachi otu nde batara, mana nchịkọta weghachiri naanị metric 10. Ị nwere ọnụ ọgụgụ ndị bịara, kacha, kacha nta na nkezi oge nzaghachi, etiti na 4 percentiles. Mgbe ahụ, a na-ebufe data ahụ na Graphite ma anyị na-ahụ ya niile dị ndụ.

Anyị nwekwara nchịkọta maka metrics na ngwaike, ngwanrọ, metrics sistemu na usoro nlekota Munin ochie anyị (ọ na-arụ ọrụ maka anyị ruo 2015). Anyị na-anakọta ihe a niile site na C's CollectD daemon (o nwere ụyọkọ plugins dị iche iche arụnyere n'ime ya, ọ nwere ike ịme ntuli aka niile nke sistemu nnabata nke etinyere ya, kọwaa naanị na nhazi ebe ị ga-ede data) na dee data na Graphite site na ya. Ọ na-akwado plugins Python na scripts shei, yabụ ị nwere ike dee azịza omenala nke gị: Anakọta ga-anakọta data a n'aka onye ọbịa mpaghara ma ọ bụ nke dịpụrụ adịpụ (na-eche Curl) wee ziga ya na Graphite.

Mgbe ahụ, anyị na-eziga metrik niile anyị chịkọtara na Carbon-c-relay. Nke a bụ ihe ngwọta Carbon Relay sitere na Graphite, emegharịrị na C. Nke a bụ rawụta na-anakọta metrik niile anyị na-eziga site na nchịkọta anyị wee duru ha gaa n'ọnụ ọnụ. N'ebe a na-eme njem, ọ na-enyocha ịdị irè nke metrik ahụ. Nke mbụ, ha ga-edebanye aha na atụmatụ prefix nke m gosipụtara na mbụ na, nke abụọ, ha bara uru maka graphite. Ma ọ bụghị ya, ha ga-ada.

Carbon-c-relay wee zipu metrik ahụ na ụyọkọ Graphite. Anyị na-eji Carbon-cache, nke edegharịrị na Go, dị ka isi nchekwa metrik. Go-carbon, n'ihi multithreading ya, karịrị nke Carbon-cache. Ọ na-enweta data wee dee ya na diski site na iji ngwugwu ntanye (ọkọlọtọ, edere na python). Iji gụọ data sitere na ebe nchekwa anyị, anyị na-eji API Graphite. Ọ dị ngwa ngwa karịa WEB Graphite ọkọlọtọ. Kedu ihe ga-eme data na-esote?

Ha na-aga Grafana. Anyị na-eji ụyọkọ graphite anyị dị ka isi iyi data, gbakwunyere na anyị nwere Grafana dị ka webụsaịtị maka igosipụta metrik na iwu dashboards. Maka ọrụ ha ọ bụla, ndị mmepe na-emepụta dashboard nke ha. Mgbe ahụ, ha na-arụpụta eserese dabere na ha, nke na-egosipụta metrik ha na-ede na ngwa ha. Na mgbakwunye na Grafana, anyị nwekwara SLAM. Nke a bụ mmụọ ọjọọ python na-agbakọ SLA dabere na data sitere na graphite. Dịka m kwurula, anyị nwere ọtụtụ microservices iri na abuo, nke ọ bụla nwere ihe ọ chọrọ. N'iji SLAM, anyị na-aga na akwụkwọ ahụ wee jiri ya tụnyere ihe dị na Graphite wee tulee otú ihe ndị a chọrọ si kwekọọ na nnweta nke ọrụ anyị.

Ka anyị gaa n'ihu: ịmụrụ anya. A haziri ya site na iji usoro siri ike - Moira. Ọ nọọrọ onwe ya n'ihi na o nwere Graphite nke ya n'okpuru mkpuchi. Mepụtara site na ụmụ okorobịa si SKB "Kontur", nke e dere na Python na Go, kpamkpam mepere emepe. Moira na-enweta otu mgbaba na-abanye na eserese. Ọ bụrụ n'ihi ihe ụfọdụ nchekwa gị anwụọ, nleba anya gị ka ga-arụ ọrụ.

Anyị wepụrụ Moira na Kubernetes; ọ na-eji ụyọkọ nke sava Redis dị ka isi nchekwa data. Ihe si na ya pụta bụ usoro na-anabata mmejọ. Ọ na-atụnyere iyi nke metrics na ndepụta nke ndị na-akpali akpali: ọ bụrụ na ọ nweghị aha ọ bụla na ya, mgbe ahụ ọ na-adaba metric. Yabụ na ọ nwere ike igbari gigabytes nke metrik kwa nkeji.

Anyị tinyekwara LDAP ụlọ ọrụ na ya, site n'enyemaka nke onye ọrụ ọ bụla nke sistemụ ụlọ ọrụ nwere ike ịmepụta ọkwa maka onwe ha dabere na ihe ndị dị adị (ma ọ bụ emepụtara ọhụrụ). Ebe Moira nwere Graphite, ọ na-akwado atụmatụ ya niile. Yabụ na ị buru ụzọ buru ahịrị wee detuo ya na Grafana. Hụ ka esi egosipụta data na eserese. Ma were otu ahịrị ahụ wee detuo ya na Moira. Ị kpọgidere ya na oke ma nweta njikere na mmepụta. Iji mee ihe ndị a niile, ị chọghị ihe ọmụma akọwapụtara. Moira nwere ike mara site na SMS, email, Jira, Slack... Ọ na-akwado mmezu nke script omenala. Mgbe ihe mkpali mere ya, ma denye aha ya na edemede omenala ma ọ bụ ọnụọgụ abụọ, ọ na-agba ya ma ziga JSON na stdin maka ọnụọgụ abụọ a. N'ihi ya, mmemme gị ga-atụgharịrịrị ya. Ihe ị ga-eme na JSON a bụ nke gị. Ọ bụrụ na ịchọrọ, ziga ya na Telegram, ọ bụrụ na ịchọrọ, mepee ọrụ na Jira, mee ihe ọ bụla.

Anyị na-ejikwa mmepe nke onwe anyị maka ịdọ aka ná ntị - Imagotag. Anyị na-emegharị panel ahụ, nke a na-ejikarị eme ihe maka mkpado ọnụahịa eletrọnịkị na ụlọ ahịa, iji kwado mkpa anyị. Anyị wetara ihe mkpali sitere na Moira na ya. Ọ na-egosi ọnọdụ ha nọ na mgbe ha mere. Ụfọdụ n'ime ndị mmepe hapụrụ ọkwa ọkwa na Slack na email maka nkwado nke panel a.

Nleba anya dị ka ọrụ: usoro modular maka ụlọ ọrụ microservice

Ọfọn, ebe anyị bụ ụlọ ọrụ na-aga n'ihu, anyị na-enyocha Kubernetes na usoro a. Anyị tinyere ya na sistemụ site na iji Heapster, nke anyị rụnyere na ụyọkọ, ọ na-anakọta data wee ziga ya na Graphite. N'ihi ya, eserese ahụ dị ka nke a:

Nleba anya dị ka ọrụ: usoro modular maka ụlọ ọrụ microservice

Ngwa nlekota oru

Nke a bụ ndepụta njikọ nke akụrụngwa anyị ji rụọ ọrụ a. Ha niile bụ isi mmalite mepere emepe.

Eserese:

Carbon-c-relay:

github.com/grobian/carbon-c-relay

Brubeck:

github.com/github/brubeck

Anakọtara:

anakọtara.org

Moira:

github.com/moira-alert

Grafana:

grafana.com

Heapster:

github.com/kubernetes/heapster

Ọnụ ọgụgụ

Na ebe a bụ ụfọdụ ọnụọgụgụ gbasara otu sistemụ si arụ ọrụ maka anyị.

Aggregator (brubeck)

Ọnụọgụ nke metrik: ~ 300 / sk
Oghere maka izipu metrik na Graphite: 30 sk
Ojiji nke ihe nkesa: ~ 6% CPU (anyị na-ekwu maka sava zuru oke); 1 GB nke RAM; ~ 3 Mbps LAN

Graphite (go-carbon)

Ọnụọgụ nke metrik: ~ 1 / min
Ogologo oge mmelite metrik: 30 sk
Atụmatụ nchekwa metrik: 30sec 35d, 5min 90d, 10min 365d (na-enye gị nghọta nke ihe na-eme ọrụ ahụ ogologo oge)
Ojiji ihe nkesa: ~ 10% CPU; 20GB RAM; ~ 30Mbps LAN

Ike mgbanwe

Anyị nọ na Avito ji mgbanwe n'ezie na ọrụ nlekota oru anyị. Gịnị mere o ji mee otú a n'ezie? Nke mbụ, ihe mejupụtara ya na-agbanwe agbanwe: ma akụkụ ahụ n'onwe ya na ụdị ha. Nke abuo, nkwado. Ebe ọ bụ na ọrụ ahụ dum bụ oghere mepere emepe, ị nwere ike dezie koodu ahụ n'onwe gị, mee mgbanwe ma mejuputa ọrụ ndị na-adịghị na igbe ahụ. A na-eji nchịkọta ndị a na-ahụkarị, tumadi Go na Python, ya mere a na-eme nke a n'ụzọ dị mfe.

Nke a bụ ihe atụ nke ezigbo nsogbu. Otu metrik na Graphite bụ faịlụ. O nwere aha. Aha faịlụ = aha metrik. E nwekwara ụzọ isi ruo ebe ahụ. Aha faịlụ na Linux bụ naanị mkpụrụedemede 255. Na anyị nwere (dị ka "ndị ahịa ime") ụmụ okorobịa sitere na ngalaba nchekwa data. Ha na-agwa anyị: “Anyị chọrọ inyocha ajụjụ SQL anyị. Ma ha abụghị mkpụrụedemede 255, mana 8 MB nke ọ bụla. Anyị chọrọ igosi ha na Grafana, hụ parampat maka arịrịọ a, na nke ka mma, anyị chọrọ ịhụ elu nke arịrịọ ndị dị otú ahụ. Ọ ga-adị mma ma ọ bụrụ na egosipụtara ya ozugbo. Ọ ga-adị mma itinye ha na nche. "

Nleba anya dị ka ọrụ: usoro modular maka ụlọ ọrụ microservice
A na-ewere ajụjụ SQL dịka ọmụmaatụ site na saịtị postgrespro.ru

Anyị na-edozi ihe nkesa Redis ma jiri plugins anyị anakọtara, nke na-aga na Postgres wee wepụ data niile n'ebe ahụ, na-eziga metrics na Graphite. Mana anyị na-eji hashes dochie aha metrik. Anyị na-ezigara otu hash n'otu oge na Redis dị ka igodo, yana ajụjụ SQL niile dị ka uru. Naanị ihe anyị ga-eme bụ ijide n'aka na Grafana nwere ike ịga na Redis were ozi a. Anyị na-emepe Graphite API n'ihi na... Nke a bụ isi interface maka mmekọrịta nke ihe nlekota niile na graphite, anyị na-abanyekwa ọrụ ọhụrụ ebe ahụ a na-akpọ aliasByHash () - site na Grafana anyị na-enweta aha nke metric, ma jiri ya na arịrịọ Redis dị ka igodo, na nzaghachi anyị na-enweta uru nke igodo ahụ, nke bụ "ajụjụ SQL" anyị. Ya mere, anyị gosipụtara na Grafana ihe ngosi nke ajụjụ SQL, nke na tiori agaghị ekwe omume igosipụta ebe ahụ, yana ọnụ ọgụgụ dị na ya (oku, ahịrị, ngụkọta_oge, ...).

Nsonaazụ

Nnweta Ọrụ nlekota anyị dị 24/7 site na ngwa ọ bụla na koodu ọ bụla. Ọ bụrụ na ị nwere ohere ịnweta akụrụngwa nchekwa, ị nwere ike ide data na ọrụ ahụ. Asụsụ ahụ adịghị mkpa, mkpebi ndị ahụ adịghị mkpa. Naanị ị ga-achọ ịma ka esi emepe oghere, tinye metric n'ebe ahụ ma mechie oghere.

Ịdabere. Ngwa niile na-anabata mmejọ ma na-ejikwa ibu anyị nke ọma.

Ihe mgbochi dị ala na ntinye. Iji jiri usoro a, ịkwesighi ịmụ asụsụ mmemme na ajụjụ na Grafana. Naanị mepee ngwa gị, tinye oghere n'ime ya nke ga-eziga metrik na Graphite, mechie ya, mepee Grafana, mepụta dashboards ebe ahụ wee lelee omume nke metrik gị, na-enweta ọkwa site na Moira.

Nnwere onwe. Ị nwere ike ime ihe a niile n'onwe gị, na-enweghị enyemaka nke ndị injinia DevOps. Ma nke a bụ uru, n'ihi na ị nwere ike nyochaa ọrụ gị ugbu a, ị gaghị ajụ onye ọ bụla - ma malite ọrụ ma ọ bụ ime mgbanwe.

Kedu ihe anyị na-achọ?

Ihe niile e depụtara n'okpuru abụghị naanị echiche nkịtị, kama ọ bụ ihe e mere na ọ dịkarịa ala nzọụkwụ mbụ.

  1. Ihe nchọpụta anomaly. Anyị chọrọ ịmepụta ọrụ ga-aga na nchekwa Graphite anyị wee lelee metric ọ bụla site na iji algọridim dị iche iche. Enwerelarị algọridim nke anyị chọrọ ilele, enwere data, anyị maara ka esi arụ ọrụ na ya.
  2. metadata. Anyị nwere ọtụtụ ọrụ, ha na-agbanwe ka oge na-aga, dị ka ndị na-arụkọ ọrụ na ha. Iji aka na-edobe akwụkwọ mgbe niile abụghị nhọrọ. Ọ bụ ya mere anyị ji etinye metadata ugbu a n'ime microservices anyị. Ọ na-ekwu onye mepụtara ya, asụsụ ndị ọ na-emekọrịta ihe, ihe SLA chọrọ, ebe na onye ekwesịrị iziga ozi. Mgbe ị na-ebuga ọrụ, a na-emepụta data ụlọ ọrụ niile n'onwe ya. N'ihi ya, ị ga-enweta njikọ abụọ - otu na-akpalite, nke ọzọ na dashboards na Grafana.
  3. Nleba anya n'ụlọ ọ bụla. Anyị kwenyere na ndị mmepe niile kwesịrị iji usoro dị otú ahụ. N'okwu a, ị na-aghọta mgbe niile ebe okporo ụzọ gị dị, ihe na-eme ya, ebe ọ dara, ebe adịghị ike ya dị. Ọ bụrụ na, dịka ọmụmaatụ, ihe na-abịa ma mebie ọrụ gị, mgbe ahụ, ị ​​​​ga-amụta banyere ya ọ bụghị n'oge oku sitere na onye njikwa, kama site na njikere, ị nwere ike mepee ndekọ ọhụrụ ozugbo wee hụ ihe mere ebe ahụ.
  4. Ịrụ ọrụ dị elu. Ọrụ anyị na-eto eto mgbe niile, ma taa ọ na-eme ihe dị ka ụkpụrụ metric 2 kwa nkeji. Otu afọ gara aga, ọnụ ọgụgụ a bụ 000. Na uto na-aga n'ihu, nke a pụtara na mgbe oge ụfọdụ gasịrị, Graphite (ịta ụta) ga-amalite ibu ibu diski subsystem. Dị ka m kwuru na mbụ, a nlekota oru usoro bụ nnọọ eluigwe na ala n'ihi na interchangeability nke components. Otu onye na-akwado ma na-agbasawanye akụrụngwa ha kpọmkwem maka Graphite, mana anyị kpebiri ịga ụzọ dị iche: jiri. Pịa olọ dị ka ebe nchekwa maka metrik anyị. Ntugharị a fọrọ nke nta ka ọ bụrụ nke zuru oke, n'oge na-adịghị anya, m ga-agwa gị n'ụzọ zuru ezu otú e si mee nke a: ihe isi ike ndị e nwere na otú e si emeri ha, otú usoro njem ahụ si gaa, m ga-akọwa ihe ndị a họọrọ dị ka njide na nhazi ha.

Daalụ maka itinye uche gị! Jụọ ajụjụ gị na isiokwu a, m ga-agbalị ịza ebe a ma ọ bụ na-esonụ posts. Ikekwe onye nwere ahụmahụ na-ewu usoro nlekota oru yiri ya ma ọ bụ na-atụgharị na Clickhouse na ọnọdụ yiri ya - kesaa ya na nkwupụta.

isi: www.habr.com

Tinye a comment