Pieaugot izplatÄ«to sistÄmu sarežģītÄ«bai, uzraudzÄ«ba ir kļuvusi par ļoti svarÄ«gu pieaugoÅ”o mÄkoÅrisinÄjumu sastÄvdaļu. Ir nepiecieÅ”ams saprast viÅu uzvedÄ«bu. Mums ir nepiecieÅ”ami mÄrogojami rÄ«ki, kas var apkopot datus no visiem pakalpojumiem un nodroÅ”inÄt speciÄlistiem vienu saskarni ar veiktspÄjas analÄ«zi, kļūdu demonstrÄciju, pieejamÄ«bu un žurnÄliem.
Å iem paÅ”iem instrumentiem jÄbÅ«t efektÄ«viem un produktÄ«viem. Å ajÄ rakstÄ mÄs apskatÄ«sim divas populÄras tehnoloÄ£iju kopas: EFK (Elasticsearch) un PLG (Loki) un izpÄtÄ«sim to arhitektÅ«ru un atŔķirÄ«bas.
EFK kaudze
IespÄjams, esat jau dzirdÄjuÅ”i par ļoti populÄro ELK vai EFK. KaudzÄ«te sastÄv no vairÄkÄm atŔķirÄ«gÄm daļÄm: Elasticsearch (objektu krÄtuve), Logstash vai FluentD (baļķu vÄkÅ”ana un apkopoÅ”ana) un Kibana vizualizÄcijai.
Tipiska darbplÅ«sma izskatÄs Å”Ädi:
Elastikas meklÄÅ”ana ā izplatÄ«ta objektu krÄtuve ar meklÄÅ”anu un reÄllaika analÄ«zi. Lielisks risinÄjums daļÄji strukturÄtiem datiem, piemÄram, žurnÄliem. InformÄcija tiek saglabÄta kÄ JSON dokumenti, indeksÄta reÄllaikÄ un izplatÄ«ta pa kopu mezgliem. Tiek izmantots apgriezts indekss, kas satur visus unikÄlos vÄrdus un saistÄ«tos dokumentus pilna teksta meklÄÅ”anai, kas savukÄrt ir balstÄ«ts uz Apache Lucene meklÄtÄjprogrammu.
BrÄ«vi D ir datu savÄcÄjs, kas apvieno datus, tos vÄcot un patÄrÄjot. Tas mÄÄ£ina pÄc iespÄjas vairÄk sakÄrtot datus JSON. TÄs arhitektÅ«ra ir paplaÅ”inÄma, ir vairÄk simtiem dažÄdu paplaÅ”inÄjumu, kopienas atbalstÄ«ts, visiem gadÄ«jumiem.
Kibana - datu vizualizÄcijas rÄ«ks Elasticsearch ar dažÄdÄm papildu iespÄjÄm, piemÄram, laikrindu analÄ«zi, grafiku analÄ«zi, maŔīnmÄcÄ«Å”anos un daudz ko citu.
Elasticsearch arhitektūra
Elasticsearch klastera dati tiek glabÄti izkliedÄti visos tÄ mezglos. Klasteris sastÄv no vairÄkiem mezgliem, lai uzlabotu pieejamÄ«bu un noturÄ«bu. JebkurÅ” mezgls var veikt visas klastera lomas, taÄu liela mÄroga izvietoÅ”anÄ mezgliem parasti tiek pieŔķirti atseviŔķi uzdevumi.
Klasteru mezglu veidi:
galvenais mezgls - pÄrvalda klasteri, ir nepiecieÅ”ami vismaz trÄ«s, viens vienmÄr ir aktÄ«vs;
datu mezgls - glabÄ indeksÄtos datus un veic ar tiem dažÄdus uzdevumus;
pÄrÅemÅ”anas mezgls - organizÄ konveijerus datu pÄrveidoÅ”anai pirms indeksÄÅ”anas;
NebrÄ«nieties, ja nevarat atrast Å”o akronÄ«mu, jo tas ir labÄk pazÄ«stams kÄ Grafana Loki. JebkurÄ gadÄ«jumÄ Å”Ä« kaudze kļūst arvien populÄrÄka, jo tajÄ tiek izmantoti pÄrbaudÄ«ti tehniskie risinÄjumi. JÅ«s, iespÄjams, jau esat dzirdÄjuÅ”i par Grafana, populÄru vizualizÄcijas rÄ«ku. TÄs veidotÄji, iedvesmojoties no Prometheus, izstrÄdÄja Loki ā horizontÄli mÄrogojamu, augstas veiktspÄjas baļķu apkopoÅ”anas sistÄmu. Loki indeksÄ tikai metadatus, nevis paÅ”us žurnÄlus, kas ir tehnisks risinÄjums, kas ļauj to viegli lietot un rentabli.
Promtail - aÄ£ents žurnÄlu nosÅ«tÄ«Å”anai no operÄtÄjsistÄmas uz Loki klasteru. grafana ir vizualizÄcijas rÄ«ks, kura pamatÄ ir Loki dati.
Loki ir veidots pÄc tÄdiem paÅ”iem principiem kÄ Prometheus, tÄpÄc tas ir labi piemÄrots Kubernetes baļķu uzglabÄÅ”anai un analÄ«zei.
Loki arhitektūra
Loki var palaist kÄ vienu procesu vai kÄ vairÄkus procesus, kas ļauj veikt horizontÄlu mÄrogoÅ”anu.
Tas var darboties arÄ« kÄ monolÄ«ts lietojums vai kÄ mikropakalpojums. DarbÄ«ba kÄ viens process var bÅ«t noderÄ«ga vietÄjai attÄ«stÄ«bai vai nelielai uzraudzÄ«bai. RÅ«pnieciskai ievieÅ”anai un mÄrogojamai darba slodzei ieteicams izmantot mikroservisa iespÄju. Datu rakstÄ«Å”anas un lasÄ«Å”anas ceļi ir atdalÄ«ti, tÄpÄc tos var precÄ«zi pielÄgot un mÄrogot pÄc vajadzÄ«bas.
Un Ŕeit ir apraksts (mikropakalpojumu arhitektūra):
SastÄvdaļas:
Promtail ā mezglos instalÄts aÄ£ents (kÄ pakalpojumu kopa), tas noÅem žurnÄlus no uzdevumiem un piekļūst Kubernetes API, lai iegÅ«tu metadatus, kas atzÄ«mÄs žurnÄlus. PÄc tam tas nosÅ«ta žurnÄlu galvenajam Loki pakalpojumam. Metadatu kartÄÅ”ana atbalsta tos paÅ”us marÄ·ÄÅ”anas noteikumus kÄ Prometheus.
izplatÄ«tÄjs ā pakalpojumu izplatÄ«tÄjs, kas darbojas kÄ buferis. Lai apstrÄdÄtu miljoniem ierakstu, tas iesaiÅo ienÄkoÅ”os datus, saspiežot tos blokos, kad tie tiek saÅemti. VienlaicÄ«gi darbojas vairÄkas datu izlietnes, taÄu žurnÄliem, kas pieder vienai ienÄkoÅ”ajai datu straumei, ir jÄparÄdÄs tikai vienÄ no tiem visos tÄ blokos. Tas ir sakÄrtots izlietÅu gredzenÄ un secÄ«gÄ jaukÅ”anÄ. Lai nodroÅ”inÄtu kļūdu toleranci un dublÄÅ”anu, tas tiek darÄ«ts n reizes (3, ja tas nav konfigurÄts).
Ingester ā pakalpojumu uztvÄrÄjs. Datu bloki tiek saspiesti ar pievienotiem žurnÄliem. Kad bloks ir pietiekami liels, bloks tiek izskalots datu bÄzÄ. Metadati tiek novirzÄ«ti uz indeksu, un dati no žurnÄla bloka tiek novirzÄ«ti uz gabaliem (parasti objektu krÄtuvi). PÄc atiestatÄ«Å”anas uztvÄrÄjs izveido jaunu bloku, kurÄ tiks pievienoti jauni ieraksti.
Indekss - datu bÄze, DynamoDB, Cassandra, Google BigTable utt.
Gabali ā žurnÄlu bloki saspiestÄ formÄ, parasti glabÄjas objektu krÄtuvÄ, piemÄram, S3.
VaicÄtÄjs - lasÄ«Å”anas ceļŔ, kas veic visus netÄ«ros darbus. Tas aplÅ«ko laika diapazonu un laika zÄ«mogu un pÄc tam apskata rÄdÄ«tÄju, lai atrastu atbilstÄ«bas. PÄc tam tas nolasa datu blokus un filtrÄ tos, lai iegÅ«tu rezultÄtu.
Tagad redzÄsim visu darbÄ«bÄ.
UzstÄdÄ«Å”ana
VienkÄrÅ”Äkais veids, kÄ instalÄt Kubernetes, ir izmantot stÅ«ri. MÄs pieÅemam, ka esat to jau instalÄjis un konfigurÄjis (un treÅ”Ä versija!apm. tulkotÄjs)
TÄlÄk ir parÄdÄ«ts informÄcijas paneļa piemÄrs, kurÄ tiek rÄdÄ«ti dati no Prometheus for Etcd metrikas un Loki for Etcd pod žurnÄliem.
Tagad apspriedÄ«sim abu sistÄmu arhitektÅ«ru, kÄ arÄ« salÄ«dzinÄsim to iespÄjas savÄ starpÄ.
SalÄ«dzinÄjums
VaicÄjuma valoda
Elasticsearch izmanto Query DSL un Lucene vaicÄjumu valodu, lai nodroÅ”inÄtu pilna teksta meklÄÅ”anas iespÄjas. TÄ ir izveidota, jaudÄ«ga meklÄtÄjprogramma ar plaÅ”u operatora atbalstu. Izmantojot to, varat meklÄt pÄc konteksta un kÄrtot pÄc atbilstÄ«bas.
Gredzena otrÄ pusÄ ir LogQL, ko izmanto Loki, kas ir PromQL (Prometheus vaicÄjumu valoda) pÄctecis. Tas izmanto žurnÄla tagus, lai filtrÄtu un atlasÄ«tu žurnÄla datus. Ir iespÄjams izmantot dažus operatorus un aritmÄtiku, kÄ aprakstÄ«ts Å”eit, taÄu iespÄju ziÅÄ atpaliek no ElastÄ«gÄs valodas.
TÄ kÄ vaicÄjumi programmÄ Loki ir saistÄ«ti ar tagiem, tos ir viegli saistÄ«t ar metriku, kÄ rezultÄtÄ ar tiem ir vieglÄk organizÄt darbÄ«bas uzraudzÄ«bu.
MÄrogojamÄ«ba
Abi skursteÅi ir horizontÄli mÄrogojami, taÄu Loki to atvieglo, jo tam ir atseviŔķi lasÄ«Å”anas un rakstÄ«Å”anas ceļi un mikropakalpojumu arhitektÅ«ra. Loki var pielÄgot atbilstoÅ”i jÅ«su vajadzÄ«bÄm, un to var izmantot ļoti liela apjoma žurnÄldatiem.
Daudzdzīvokļu īre
Klasteru vairÄku Ä«res iespÄjas ir izplatÄ«ta tÄma OPEX saÄ«sinÄjumÄ, abas steks nodroÅ”ina vairÄku nomu. Ir vairÄki Elasticsearch veidus klientu atdalÄ«Å”ana: atseviŔķs indekss katram klientam, uz klientu balstÄ«ta marÅ”rutÄÅ”ana, unikÄli klienta lauki, meklÄÅ”anas filtri. Loki ir atbalstÄ«t HTTP X-Scope-OrgID galvenes veidÄ.
IzmaksÄt
Loki ir diezgan rentabls, jo tas neindeksÄ datus, tikai metadatus. Tas panÄk ietaupÄ«jumi uzglabÄÅ”anÄ un atmiÅa (keÅ”atmiÅa), jo objektu glabÄÅ”ana ir lÄtÄka nekÄ bloku krÄtuve, kas tiek izmantota Elasticsearch klasteros.
SecinÄjums
EFK steku var izmantot dažÄdiem mÄrÄ·iem, nodroÅ”inot maksimÄlu elastÄ«bu un ar funkcijÄm bagÄtu Kibana interfeisu analÄ«zei, vizualizÄcijai un vaicÄjumiem. To var vÄl vairÄk uzlabot ar maŔīnmÄcÄ«Å”anÄs iespÄjÄm.
Loki kaudze ir noderÄ«ga Kubernetes ekosistÄmÄ tÄ metadatu atklÄÅ”anas mehÄnisma dÄļ. Varat viegli korelÄt datus pÄrraudzÄ«bai, pamatojoties uz Grafana laika rindÄm un žurnÄliem.
RunÄjot par izmaksÄm un ilgtermiÅa žurnÄlu glabÄÅ”anu, Loki ir lielisks sÄkumpunkts mÄkoÅrisinÄjumos.
TirgÅ« ir vairÄk alternatÄ«vu ā dažas var bÅ«t jums labÄkas. PiemÄram, GKE ir Stackdriver integrÄcija, kas nodroÅ”ina lielisku uzraudzÄ«bas risinÄjumu. MÄs tos neiekļÄvÄm mÅ«su Ŕī raksta analÄ«zÄ.
Rakstu tulkoja un sagatavoja HÄbram darbinieki Slurm mÄcÄ«bu centrs ā intensÄ«vi kursi, video kursi un korporatÄ«vÄs apmÄcÄ«bas no praktizÄjoÅ”iem speciÄlistiem (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)