Ki jan priyorite gous nan Kubernetes te lakòz D' nan Grafana Labs

Remak. trad.: Nou prezante nan atansyon ou detay teknik sou rezon ki fè yo pou dènye D 'nan sèvis la nwaj konsève pa créateur yo nan Grafana. Sa a se yon egzanp klasik sou fason yon karakteristik nouvo ak w pèdi trè itil ki fèt pou amelyore kalite enfrastrikti... ka lakòz mal si ou pa bay anpil nuans aplikasyon li nan reyalite pwodiksyon an. Li bon lè materyèl tankou sa a parèt ki pèmèt ou aprann pa sèlman nan erè ou yo. Detay yo nan tradiksyon tèks sa a soti nan vis prezidan an nan pwodwi nan Grafana Labs.

Ki jan priyorite gous nan Kubernetes te lakòz D' nan Grafana Labs

Vandredi 19 jiyè, sèvis Hosted Prometheus nan Grafana Cloud te sispann fonksyone pou apeprè 30 minit. Mwen eskize tout kliyan ki afekte nan pann lan. Travay nou se bay zouti siveyans ou bezwen yo, epi nou konprann ke pa genyen yo disponib ka rann lavi ou pi difisil. Nou pran ensidan sa a trè seryezman. Nòt sa a eksplike sa ki te pase, ki jan nou te reponn, ak sa n ap fè pou asire sa pa rive ankò.

pre-istwa

Grafana Cloud Hosted Prometheus sèvis baze sou Cortical — Pwojè CNCF pou kreye yon sèvis Prometheus pou plizyè lokatè, ki kapab évolutive orizontal, trè disponib. Achitekti Cortex la konsiste de yon seri mikwosèvis endividyèl, chak nan yo fè pwòp fonksyon pa yo: replikasyon, depo, demann, elatriye. Cortex se anba devlopman aktif epi li toujou ap ajoute nouvo karakteristik ak amelyore pèfòmans. Nou regilyèman deplwaye nouvo Cortex lage nan grap pou kliyan yo ka pwofite de karakteristik sa yo - erezman, Cortex ka mete ajou san D '.

Pou mizajou san pwoblèm, sèvis Ingester Cortex la mande pou yon kopi Ingester adisyonèl pandan pwosesis aktyalizasyon an. (Remak. trad.: Enjester - eleman debaz nan Cortex la. Travay li se kolekte yon kouran konstan echantiyon, gwoupe yo an fragman Prometheus epi estoke yo nan yon baz done tankou DynamoDB, BigTable oswa Cassandra.) Sa a pèmèt ansyen Ingesters voye done aktyèl yo bay nouvo Ingesters. Li se vo anyen ke Ingesters yo mande resous. Pou yo travay, ou bezwen gen 4 nwayo ak 15 GB memwa pou chak gous, i.e. 25% nan pouvwa a pwosesis ak memwa nan machin nan baz nan ka a nan grap Kubernetes nou an. An jeneral, anjeneral nou gen anpil plis resous ki pa itilize nan gwoup la pase 4 nwayo ak 15 GB memwa, kidonk nou ka fasilman vire moute enjèstyon adisyonèl sa yo pandan amelyorasyon.

Sepandan, li souvan rive ke pandan operasyon nòmal pa youn nan machin yo gen sa a 25% nan resous ki pa itilize yo. Wi, nou pa menm fè efò: CPU ak memwa ap toujou itil pou lòt pwosesis. Pou rezoud pwoblèm sa a, nou deside itilize Priyorite Kubernetes Pod. Lide a se bay Ingesters yon pi gwo priyorite pase lòt mikwosèvis (apatrid). Lè nou bezwen kouri yon lòt (N+1) Ingester, nou deplase tanporèman lòt gous ki pi piti yo. Sa yo gous yo transfere nan resous gratis sou lòt machin, kite yon gwo ase "twou" pou kouri yon Ingester adisyonèl.

Jedi 18 jiyè, nou te mete kat nouvo nivo priyorite nan gwoup nou yo: kritik, segondè, mwayèn и ba. Yo te teste sou yon gwoup entèn ki pa gen okenn trafik kliyan pou apeprè yon semèn. Pa default, gous san yon priyorite espesifye resevwa mwayèn priyorite, klas te fikse pou Ingesters ak segondè priyorite. Kritik te rezève pou siveyans (Prometheus, Alertmanager, node-exportater, kube-state-metrics, elatriye). Konfigirasyon nou an louvri, epi ou ka wè PR la isit la.

Aksidan

Vandredi 19 jiyè, youn nan enjenyè yo te lanse yon nouvo gwoup Cortex dedye pou yon gwo kliyan. Konfigirasyon pou gwoup sa a pa t 'gen ladann nouvo priyorite gous, kidonk tout nouvo gous yo te bay yon priyorite default - mwayèn.

Gwoup Kubernetes la pa t gen ase resous pou nouvo gwoup Cortex la, e gwoup Cortex pwodiksyon ki deja egziste a pa te mete ajou (Ingesters yo te rete san yo pa segondè priyorite). Depi Ingesters yo nan gwoup la nouvo pa default te gen mwayèn priyorite, ak gous ki egziste deja nan pwodiksyon te travay san priyorite ditou, Ingesters yo nan nouvo gwoup la ranplase Ingesters yo nan gwoup pwodiksyon Cortex ki egziste deja.

ReplicaSet pou Ingester ki te degèpi a nan gwoup pwodiksyon an te detekte gous ki te degèpi a epi li te kreye yon nouvo pou kenbe kantite kopi espesifye yo. Nouvo gous la te asiyen pa default mwayèn priyorite, ak yon lòt "fin vye granmoun" Ingester nan pwodiksyon pèdi resous li yo. Rezilta a te pwosesis lavalas, ki te mennen nan deplasman nan tout gous soti nan Ingester pou grap pwodiksyon Cortex.

Ingesters yo eta epi estoke done pou 12 èdtan anvan yo. Sa a pèmèt nou konprese yo pi efikas anvan ekri yo nan depo alontèm. Pou reyalize sa, Cortex shards done atravè seri lè l sèvi avèk yon Tablo Hash Distribiye (DHT) epi repwodui chak seri atravè twa Ingesters lè l sèvi avèk konsistans kowòm Dynamo-style. Cortex pa ekri done nan Ingesters ki andikape. Kidonk, lè yon gwo kantite Ingesters kite DHT a, Cortex pa ka bay ase replikasyon nan antre yo, epi yo aksidan.

Deteksyon ak ratrapaj

Nouvo notifikasyon Prometheus ki baze sou "bijè erè" (erè ki baze sou bidjè — detay ap parèt nan yon atik nan lavni) te kòmanse sonnen alam la 4 minit apre kòmansman fèmen an. Pandan senk minit kap vini yo oswa konsa, nou te fè kèk dyagnostik epi ogmante gwoup Kubernetes ki kache pou òganize tou de grap pwodiksyon nouvo ak ki deja egziste.

Apre yon lòt senk minit, ansyen Ingesters yo te ekri done yo avèk siksè, nouvo yo te kòmanse leve, epi grap Cortex yo te vin disponib ankò.

Yon lòt 10 minit yo te pase dyagnostik ak korije erè nan memwa (OOM) soti nan proxy ranvèse otantifikasyon ki sitiye devan Cortex. Erè OOM yo te koze pa yon ogmantasyon de fwa nan QPS (nou kwè akòz demann twò agresif ki soti nan serveurs Prometheus kliyan an).

Konsekans

Dènye total la te 26 minit. Pa gen okenn done ki te pèdi. Ingesters te chaje avèk siksè tout done nan memwa nan depo alontèm. Pandan are an, kliyan Prometheus serveurs tampon efase (elistan) anrejistreman lè l sèvi avèk nouvo API remote_write baze sou WAL (otè pa Callum Styan soti nan Grafana Labs) ak repete ekri yo echwe apre aksidan an.

Ki jan priyorite gous nan Kubernetes te lakòz D' nan Grafana Labs
Operasyon ekri nan gwoup pwodiksyon an

Jwenn

Li enpòtan pou aprann nan ensidan sa a epi pran etap ki nesesè yo pou evite li repete.

Nan retwouve, nou pa ta dwe mete default la mwayèn priyorite jiskaske tout Ingesters nan pwodiksyon yo te resevwa segondè yon priyorite. Anplis de sa, li te nesesè yo pran swen yo davans segondè priyorite. Tout bagay ranje kounye a. Nou espere eksperyans nou an pral ede lòt òganizasyon k ap konsidere itilize priyorite pod nan Kubernetes.

Nou pral ajoute yon nivo adisyonèl nan kontwòl sou deplwaman an nan nenpòt objè adisyonèl ki gen konfigirasyon global nan gwoup la. Depi kounye a, chanjman sa yo pral evalye bоplis moun. Anplis de sa, modifikasyon ki te lakòz aksidan an te konsidere kòm twò minè pou yon dokiman pwojè separe - li te sèlman diskite nan yon pwoblèm GitHub. Depi koulye a, tout chanjman sa yo nan konfigirasyon yo pral akonpaye pa dokiman pwojè apwopriye.

Finalman, nou pral otomatize redimansyon proxy ranvèse otantifikasyon an pou anpeche surcharge OOM nou te temwen, epi nou pral revize paramèt defo Prometheus ki gen rapò ak repli ak echèl pou anpeche pwoblèm menm jan an nan lavni.

Echèk la tou te gen kèk konsekans pozitif: li te resevwa resous ki nesesè yo, Cortex otomatikman refè san entèvansyon adisyonèl. Nou menm tou nou te genyen eksperyans valab travay avèk yo Grafana Loki - Nouvo sistèm agrégation boutèy demi lit nou an - ki te ede asire ke tout Ingesters konpòte yo byen pandan ak apre echèk la.

PS soti nan tradiktè

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè