Abanye na Kubernetes (ma ọ bụghị naanị) taa: atụmanya na eziokwu

Abanye na Kubernetes (ma ọ bụghị naanị) taa: atụmanya na eziokwu

Ọ bụ 2019, ma anyị enweghị usoro ọkọlọtọ maka nchịkọta log na Kubernetes. N'isiokwu a, anyị ga-achọ, na-eji ihe atụ sitere na ezigbo omume, ịkọrọ anyị ọchụchọ, nsogbu ndị zutere na ngwọta ha.

Agbanyeghị, nke mbụ, m ga-eme ndoputa na ndị ahịa dị iche iche ghọtara ihe dị iche iche site na ịnakọta ndekọ:

  • onye chọrọ ịhụ ndekọ nchekwa na nyocha;
  • onye - centralized osisi nke dum akụrụngwa;
  • na ụfọdụ, ọ bụ iji na-anakọta naanị ngwa ndekọ, ewezuga, ọmụmaatụ, balancers.

N'okpuru ebe a bụ ịkpụ n'okpuru banyere otu anyị siri mejuputa "ndepụta ọchịchọ" dị iche iche na ihe isi ike anyị zutere.

Theory: gbasara ngwaọrụ osisi

Ihe ndabere na akụkụ nke sistemu osisi

Ịkụ osisi abịala ogologo oge, n'ihi nke a na-emepụta usoro maka ịnakọta na nyochaa ndekọ, nke bụ ihe anyị na-eji taa. Laa azụ na 1950s, Fortran webatara analogue nke ọkọlọtọ ntinye/ iyi iyi, nke nyeere onye mmemme aka imezi mmemme ya. Ndị a bụ ndekọ kọmputa mbụ mere ka ndụ dịrị ndị na-eme mmemme n’oge ahụ mfe. Taa, anyị na-ahụ n'ime ha akụkụ mbụ nke usoro osisi - isi iyi ma ọ bụ "onye na-emepụta ihe" nke ndekọ.

Sayensị kọmputa akwụsịghị otu ebe: netwọk kọmputa pụtara, ụyọkọ nke mbụ ... Usoro mgbagwoju anya nke nwere ọtụtụ kọmputa malitere ịrụ ọrụ. Ugbu a, a manyere ndị na-ahụ maka sistemụ ịnakọta ndekọ site na igwe dị iche iche, na n'ọnọdụ pụrụ iche, ha nwere ike itinye ozi kernel OS ma ọ bụrụ na ha chọrọ nyocha ọdịda sistemụ. Iji kọwa usoro nchịkọta ndekọ nke etiti, na mmalite 2000s e bipụtara ya RFC 3164, nke kwadoro remote_syslog. Nke a bụ ka akụrụngwa ọzọ dị mkpa siri pụta: onye na-anakọta osisi na nchekwa ha.

Site na mmụba nke ndekọ ndekọ na ntinye mgbasa ozi nke teknụzụ weebụ, ajụjụ bilitere maka ihe ndekọ kwesịrị igosi ndị ọrụ nke ọma. Ngwá ọrụ njikwa dị mfe (awk/sed/grep) ejirila ndị ka dị elu dochie ya ndị na-ekiri ihe ndekọ - akụkụ nke atọ.

N'ihi mmụba nke olu ndekọ, ihe ọzọ bịara doo anya: a chọrọ ndekọ, ma ọ bụghị ha niile. Na ndekọ dị iche iche na-achọ ọkwa dị iche iche nke nchekwa: ụfọdụ nwere ike ịla n'iyi n'otu ụbọchị, ebe ndị ọzọ kwesịrị ịchekwa maka afọ 5. Yabụ, agbakwunyere akụrụngwa maka nzacha na ntụgharị data na sistemụ ndekọ - ka anyị kpọọ ya iyo.

Nchekwa emewokwa nnukwu mmụba: site na faịlụ oge niile gaa na ọdụ data mmekọrịta, wee ruo na nchekwa dabere na akwụkwọ (dịka ọmụmaatụ, Elasticsearch). Ya mere, e kewapụrụ ebe nchekwa ahụ na onye nchịkọta.

N'ikpeazụ, kpọmkwem echiche nke osisi agbasawo ruo n'ụdị ihe omume na-adịghị ahụkebe nke anyị chọrọ ichekwa maka akụkọ ihe mere eme. Ma ọ bụ kama, ọ bụrụ na ịchọrọ ịme nyocha ma ọ bụ wepụta akụkọ nyocha ...

N'ihi ya, n'ime obere oge dị mkpirikpi, nchịkọta log etolitela ka ọ bụrụ usoro dị mkpa, nke enwere ike ịkpọ nke ọma otu n'ime akụkụ dị na Big Data.

Abanye na Kubernetes (ma ọ bụghị naanị) taa: atụmanya na eziokwu
Ọ bụrụ na ọ bụrụ na mbipụta nkịtị nwere ike zuru ezu maka "usoro osisi," ugbu a ọnọdụ agbanweela nke ukwuu.

Kubernetes na ndekọ

Mgbe Kubernetes bịara na akụrụngwa, nsogbu dị adị nke ịnakọta ndekọ agaghị agabigakwa ya. N'ụzọ ụfọdụ, ọ bịara na-afụ ụfụ karị: ijikwa ikpo okwu akụrụngwa abụghị naanị dị mfe, kamakwa mgbagwoju anya n'otu oge ahụ. Ọtụtụ ọrụ ochie amalitela ịkwaga na microservices. N'ihe gbasara ndekọ ndekọ, nke a na-egosipụta na ọnụ ọgụgụ na-arịwanye elu nke isi mmalite, usoro ndụ ha pụrụ iche, na mkpa iji soro mmekọrịta nke ihe niile dị na sistemụ site na ndekọ ...

Na-ele anya n'ihu, enwere m ike ikwu na ugbu a, ọ dị mwute ikwu, ọ nweghị nhọrọ ndekọ ahaziri maka Kubernetes nke ga-atụnyere nke ọma na ndị ọzọ niile. Atụmatụ kacha ewu ewu na obodo bụ ndị a:

  • onye na-etupu ihe mkpofu EFK (Elasticsearch, Fluentd, Kibana);
  • onye na-anwale nke a tọhapụrụ nso nso a Loki ma ọ bụ eji Onye ọrụ ndekọ;
  • anyị (ma eleghị anya ọ bụghị naanị anyị? ...) Enwere m afọ ojuju maka mmepe nke m - ụlọ osisi...

Dị ka a na-achị, anyị na-eji ngwugwu ndị a na ụyọkọ K8s (maka ihe ngwọta nke onwe ya):

Agbanyeghị, agaghị m ebi na ntuziaka maka nrụnye na nhazi ha. Kama nke ahụ, m ga-elekwasị anya na adịghị ike ha na nkwubi okwu zuru ụwa ọnụ banyere ọnọdụ na ndekọ n'ozuzu.

Jiri akwụkwọ ndekọ na-eme ihe na K8s

Abanye na Kubernetes (ma ọ bụghị naanị) taa: atụmanya na eziokwu

"akwụkwọ ndekọ ụbọchị niile", ole n'ime unu nọ ebe ahụ?..

Nchịkọta ndekọ nke etiti nke sitere na nnukwu akụrụngwa chọrọ akụrụngwa buru ibu, nke a ga-eji na-anakọta, ịchekwa na nhazi ndekọ. N'oge a na-arụ ọrụ dị iche iche, anyị chere ihe dị iche iche chọrọ na nsogbu ọrụ na-esite na ha.

Ka anyị gbalịa ClickHouse

Ka anyị lelee ebe nchekwa Centralized na oru ngo nwere ngwa nke na-ewepụta ndekọ nke ọma: karịa ahịrị 5000 kwa sekọnd. Ka anyị malite ịrụ ọrụ na ndekọ ya, na-agbakwunye ha na ClickHouse.

Ozugbo achọrọ ezigbo oge, ihe nkesa 4-core nwere ClickHouse ga-ebugorịrị na sistemụ diski diski:

Abanye na Kubernetes (ma ọ bụghị naanị) taa: atụmanya na eziokwu

Ụdị nbudata a bụ n'ihi na anyị na-agbalị ide na ClickHouse ngwa ngwa o kwere mee. Na nchekwa data na-emeghachi omume na nke a na-abawanye ibu diski, nke nwere ike ịkpata njehie ndị a:

DB::Exception: Too many parts (300). Merges are processing significantly slower than inserts

Point bụ na MergeTree tebụl na ClickHouse (ha nwere data log) nwere ihe isi ike nke ha n'oge arụ ọrụ ide. Data etinyere n'ime ha na-emepụta nkebi nwa oge, nke a na-ejikọta ya na tebụl isi. N'ihi ya, ndekọ na-atụgharị na-achọsi ike na diski ahụ, ọ bụkwa n'okpuru mmachi nke anyị natara ọkwa dị n'elu: ọ dịghị ihe karịrị 1 subpartitions nwere ike merged na 300 sekọnd (n'ezie, nke a bụ 300 inserts). kwa sekọnd).

Iji zere omume a, kwesịrị idegara ClickHouse na nnukwu iberibe dị ka o kwere mee na ọ dịghị ihe karịrị 1 oge ọ bụla 2 sekọnd. Agbanyeghị, ide ihe na nnukwu mgbawa na-egosi na anyị kwesịrị ide obere oge na ClickHouse. Nke a, n'aka nke ya, nwere ike iduga n'ife ihe nchekwa na mfu nke osisi. Ihe ngwọta bụ ịbawanye ihe nchekwa Fluentd, mana mgbe ahụ oriri ebe nchekwa ga-abawanye.

Примечание: Akụkụ ọzọ nwere nsogbu nke ngwọta anyị na ClickHouse metụtara eziokwu ahụ bụ na a na-etinye nkewa n'ọnọdụ anyị (loghouse) site na tebụl mpụga jikọtara. Jikota okpokoro. Nke a na-eduga n'eziokwu ahụ bụ na mgbe ị na-enyocha nnukwu oge, a chọrọ oke RAM, ebe ọ bụ na metatable na-agafe akụkụ niile - ọbụlagodi ndị na-enweghị data dị mkpa. Agbanyeghị, ugbu a enwere ike ikwuwapụta usoro a na enweghị nchekwa maka ụdị ClickHouse dị ugbu a (c 18.16).

N'ihi ya, ọ bịara doo anya na ọ bụghị ọrụ ọ bụla nwere ihe onwunwe zuru ezu iji nakọta ndekọ na ozugbo na ClickHouse (n'ụzọ ziri ezi, nkesa ha agaghị adị mma). Na mgbakwunye, ị ga-achọ iji batrị, nke anyị ga-alaghachi ma emechaa. Okwu a kọwara n'elu bụ eziokwu. Na n'oge ahụ, anyị enweghị ike ịnye ngwọta a pụrụ ịdabere na ya ma kwụsie ike nke ga-adabara onye ahịa ahụ ma nye anyị ohere ịnakọta ndekọ na obere oge ...

Kedu maka Elasticsearch?

Amara Elasticsearch ka ọ na-ejikwa nnukwu ọrụ. Ka anyị nwalee ya n'otu ọrụ ahụ. Ugbu a ibu dị ka nke a:

Abanye na Kubernetes (ma ọ bụghị naanị) taa: atụmanya na eziokwu

Elasticsearch nwere ike igbari iyi data, agbanyeghị, idere ya ụdị mpịakọta ahụ na-eji CPU nke ukwuu. A na-ekpebi nke a site n'ịhazi ụyọkọ. Teknụzụ, nke a abụghị nsogbu, mana ọ tụgharịrị na naanị iji rụọ ọrụ usoro nchịkọta ndekọ anyị ejirila ihe dị ka cores 8 ma nwee ihe mgbakwunye agbakwunyere nke ukwuu na sistemụ…

N'okpuru ala: nhọrọ a nwere ike izi ezi, ma ọ bụrụ na ọrụ ahụ buru ibu na njikwa ya dị njikere imefu nnukwu ego na usoro nchịkọta osisi.

Mgbe ahụ ajụjụ ebumpụta ụwa na-ebilite:

Kedu ihe ndekọ dị mkpa n'ezie?

Abanye na Kubernetes (ma ọ bụghị naanị) taa: atụmanya na eziokwu Ka anyị gbalịa ịgbanwe ụzọ n'onwe ya: ndekọ kwesịrị ịbụ ihe ọmụma n'otu oge ma ghara ikpuchi ọ bụla omume na usoro.

Ka anyị kwuo na anyị nwere ụlọ ahịa ịntanetị na-aga nke ọma. Kedu akwụkwọ ndekọ dị mkpa? Ịnakọta ozi dị ka o kwere mee, dịka ọmụmaatụ, site na ọnụ ụzọ ịkwụ ụgwọ, bụ ezigbo echiche. Mana ọ bụghị ndekọ niile sitere na ọrụ slicing onyonyo dị na katalọgụ ngwaahịa dị anyị mkpa: naanị njehie na nleba anya dị elu ezuola (dịka ọmụmaatụ, pasent nke njehie 500 nke akụrụngwa a na-ewepụta).

Ya mere, anyị abịawo na nkwubi okwu Ọ bụghị mgbe niile ka a na-egbu osisi n'etiti etiti akwadoro. Ọtụtụ mgbe onye ahịa chọrọ ịnakọta ndekọ niile n'otu ebe, ọ bụ ezie na n'ezie, site na ndekọ dum, ọ bụ naanị 5% nke ozi dị oke mkpa maka azụmaahịa chọrọ:

  • Mgbe ụfọdụ, ọ na-ezuru ịhazi, sịnụ, naanị nha nke ndekọ akpa na onye na-anakọta njehie (dịka ọmụmaatụ, Sentry).
  • Ịma ọkwa njehie na nnukwu ndekọ mpaghara n'onwe ya nwere ike zuru ezu iji nyochaa ihe merenụ.
  • Anyị nwere ọrụ ndị ejiri naanị ule arụ ọrụ na sistemụ nnakọta njehie mere. Onye nrụpụta ahụ achọghị ndekọ dị ka ndị dị otú ahụ - ha hụrụ ihe niile site na akara njehie.

Ihe atụ sitere na ndụ

Akụkọ ọzọ pụrụ ịbụ ezi ihe atụ. Anyị nwetara arịrịọ sitere n'aka ndị ọrụ nchekwa nke otu n'ime ndị ahịa anyị bụ ndị na-eji ngwọta azụmahịa emepụtara ogologo oge tupu iwebata Kubernetes.

Ọ dị mkpa iji "ịme enyi" nke usoro nchịkọta ndekọ aha nke etiti na ihe mmetụta nchọpụta nsogbu ụlọ ọrụ - QRadar. Usoro a nwere ike ịnweta ndekọ site na syslog protocol wee weghachite ha na FTP. Agbanyeghị, ọ gaghị ekwe omume ozugbo ijikọ ya na remote_syslog plugin for fluentd (dị ka ọ pụtara, anyị anọghị naanị anyị). Nsogbu na ịtọlite ​​QRadar tụgharịrị bụrụ n'akụkụ ndị otu nchekwa nke onye ahịa.

N'ihi nke a, ebugoro akụkụ nke ndekọ ndekọ azụmahịa dị mkpa na FTP QRadar, ma bugharịa akụkụ nke ọzọ site na syslog dịpụrụ adịpụ ozugbo site na ọnụ. Maka nke a anyị dere ọbụna eserese dị mfe - ikekwe ọ ga - enyere mmadụ aka idozi nsogbu yiri nke ahụ ... N'ihi atụmatụ ahụ, onye ahịa ahụ n'onwe ya natara ma nyochaa ndekọ ndekọ dị egwu (iji ngwaọrụ kachasị amasị ya), anyị wee nwee ike ibelata ọnụ ahịa nke usoro ntinye akwụkwọ, na-azọpụta naanị. onwa gara aga.

Ihe atụ ọzọ na-egosi nnọọ ihe a na-agaghị eme. Otu n'ime ndị ahịa anyị maka nhazi onye obula ihe omume na-abịa site na onye ọrụ, mere multiline mmepụta enweghị nhazi ozi na log. Dị ka ị nwere ike iche, ndekọ dị otú ahụ adịghị mma ma ịgụ na ịchekwa.

Ụkpụrụ maka ndekọ

Ihe atụ ndị dị otú ahụ na-eduga ná nkwubi okwu na na mgbakwunye na ịhọrọ usoro nchịkọta log, ịkwesịrị chepụtakwa osisi n'onwe ha! Kedu ihe achọrọ ebe a?

  • Ndekọ ga-abụrịrị n'ụdị igwe nwere ike ịgụ (dịka ọmụmaatụ, JSON).
  • Ndekọ kwesịrị ịbụ kọmpat yana nwee ike ịgbanwe ogo osisi iji mebie nsogbu ndị nwere ike. N'otu oge ahụ, na mmepụta gburugburu, ị kwesịrị ị na-agba ọsọ usoro na-osisi larịị dị ka Ịdọ aka ná ntị ma ọ bụ Error.
  • A ghaghị ịhazi ndekọ ndekọ aha, ya bụ, n'ime ihe ndekọ, ahịrị niile ga-enwerịrị otu ụdị ubi.

Mpempe akwụkwọ na-enweghị nhazi nwere ike iduga nsogbu na ntinye ndekọ na nchekwa na nkwụsị zuru oke na nhazi ha. Dịka ọmụmaatụ, nke a bụ ihe atụ nwere njehie 400, nke ọtụtụ ndị zutere na ndekọ ndekọ nke ọma:

2019-10-29 13:10:43 +0000 [warn]: dump an error event: error_class=Fluent::Plugin::ElasticsearchErrorHandler::ElasticsearchError error="400 - Rejected by Elasticsearch"

Njehie ahụ pụtara na ị na-eziga ubi nke ụdị ya anaghị akwụsi ike na ndeksi nwere maapụ emebere. Ihe atụ kachasị mfe bụ ubi na nginx log nwere mgbanwe $upstream_status. Ọ nwere ike ịnwe ma nọmba ma ọ bụ eriri. Ọmụmaatụ:

{ "ip": "1.2.3.4", "http_user": "-", "request_id": "17ee8a579e833b5ab9843a0aca10b941", "time": "29/Oct/2019:16:18:57 +0300", "method": "GET", "uri": "/staffs/265.png", "protocol": "HTTP/1.1", "status": "200", "body_size": "906", "referrer": "https://example.com/staff", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36", "request_time": "0.001", "cache_status": "-", "upstream_response_time": "0.001, 0.007", "upstream_addr": "127.0.0.1:9000", "upstream_status": "200", "upstream_response_length": "906", "location": "staff"}
{ "ip": "1.2.3.4", "http_user": "-", "request_id": "47fe42807f2a7d8d5467511d7d553a1b", "time": "29/Oct/2019:16:18:57 +0300", "method": "GET", "uri": "/staff", "protocol": "HTTP/1.1", "status": "200", "body_size": "2984", "referrer": "-", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36", "request_time": "0.010", "cache_status": "-", "upstream_response_time": "0.001, 0.007", "upstream_addr": "10.100.0.10:9000, 10.100.0.11:9000", "upstream_status": "404, 200", "upstream_response_length": "0, 2984", "location": "staff"}

Ndekọ ndị ahụ na-egosi na ihe nkesa 10.100.0.10 zara njehie 404 na ezigara arịrịọ ahụ na nchekwa ọdịnaya ọzọ. N'ihi ya, uru dị na ndekọ ahụ ghọrọ nke a:

"upstream_response_time": "0.001, 0.007"

Ọnọdụ a bụ ihe a na-ahụkarị nke na o kwesịrị ịdị iche ntụaka na akwụkwọ.

Gịnị banyere ntụkwasị obi?

Enwere oge mgbe ndekọ niile na-enweghị isi dị mkpa. Na nke a, usoro nchịkọta ndekọ aha maka K8 ndị a tụrụ aro/kparịtara n'elu nwere nsogbu.

Dịka ọmụmaatụ, fluentd enweghị ike ịnakọta ndekọ site na arịa dị mkpụmkpụ. N'otu n'ime ọrụ anyị, akpa mbugharị nchekwa data biri ihe na-erughị sekọnd 4 wee kpochapụ ya - dịka nkọwa kwekọrọ na ya:

"helm.sh/hook-delete-policy": hook-succeeded

N'ihi nke a, etinyeghị ndekọ mkpochapụ ọpụpụ na nchekwa. Ọchịchị nwere ike inye aka na nke a. before-hook-creation.

Ihe atụ ọzọ bụ ntụgharị Docker log. Ka anyị kwuo na e nwere ngwa na-arụsi ọrụ ike na-ede na ndekọ. N'okpuru ọnọdụ nkịtị, anyị na-ejikwa nhazi ndekọ niile, ma ozugbo nsogbu pụtara - dịka ọmụmaatụ, dịka akọwara n'elu na usoro na-ezighi ezi - nhazi na-akwụsị, Docker na-atụgharị faịlụ ahụ. Ihe si na ya pụta bụ na ndekọ ndekọ azụmahịa dị mkpa nwere ike ịla n'iyi.

Ọ bụ ya mere ọ dị mkpa ikewapụ iyi iyi egwu, agbakwunyere izipu ndị kachasị ọnụ ahịa ozugbo na ngwa ahụ iji hụ na nchekwa ha. Na mgbakwunye, ọ gaghị abụ ihe na-enweghị atụ ịmepụta ụfọdụ "Accumulator" nke ndekọ, nke nwere ike ịlanarị enweghị nchekwa dị nkenke ka ọ na-echekwa ozi dị oke mkpa.

N'ikpeazụ, anyị agaghị echefu nke ahụ Ọ dị mkpa iji nyochaa usoro ọ bụla nke ọma. Ma ọ bụghị ya, ọ dị mfe ịbanye n'ọnọdụ nke onye na-asụ asụsụ dị na steeti CrashLoopBackOff ma ọ dịghị eziga ihe ọ bụla, na nke a na-ekwe nkwa na ọnwụ nke ozi dị mkpa.

Nchoputa

N'isiokwu a, anyị anaghị ele anya ngwọta SaaS dị ka Datadog. Ọtụtụ n'ime nsogbu ndị a kọwara ebe a ka edozilarị n'otu ụzọ ma ọ bụ ọzọ site na ụlọ ọrụ azụmahịa ndị ọkachamara na-achịkọta ndekọ, ma ọ bụghị onye ọ bụla nwere ike iji SaaS maka ihe dị iche iche. (ndị bụ isi bụ ọnụ ahịa na nnabata na 152-FZ).

Nchịkọta ndekọ aha nke etiti na mbụ dị ka ọrụ dị mfe, mana ọ bụghị ma ọlị. Ọ dị mkpa icheta na:

  • Naanị ihe ndị dị oke mkpa kwesịrị ịbanye n'ụzọ zuru ezu, ebe nlekota na nchịkọta njehie nwere ike ịhazi maka usoro ndị ọzọ.
  • Ekwesịrị idobe ndekọ na mmepụta ihe ka ọ ghara itinye ibu na-adịghị mkpa.
  • Ndekọ ga-abụrịrị igwe enwere ike ịgụ, hazie ya ma nwee usoro siri ike.
  • Ekwesịrị izipu ndekọ ndekọ dị oke egwu na iyi dị iche, nke a ga-ekewapụ na ndị isi.
  • Ọ bara uru ịtụle nchịkọta log, nke nwere ike ịzọpụta gị site na mgbawa nke ibu dị elu ma mee ka ibu dị na nchekwa ahụ bụrụ otu.

Abanye na Kubernetes (ma ọ bụghị naanị) taa: atụmanya na eziokwu
Iwu ndị a dị mfe, ọ bụrụ na etinyere ya n'ebe niile, ga-ekwe ka sekit ndị a kọwara n'elu rụọ ọrụ - ọ bụ ezie na ha na-efunahụ ihe ndị dị mkpa (batrị). Ọ bụrụ na ị naghị agbaso ụkpụrụ ndị dị otú ahụ, ọrụ ahụ ga-eduga gị na akụrụngwa n'ụzọ dị mfe na akụkụ ọzọ nke ukwuu (ma n'otu oge ahụ na-adịghị arụ ọrụ) nke usoro.

PS

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Tinye a comment