PieteikŔanās Kubernetes: EFK vs PLG

PieteikŔanās Kubernetes: EFK vs PLG

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:

PieteikŔanās Kubernetes: EFK vs PLG

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;
  • koordinācijas mezgls - marÅ”rutÄ“Å”anas pieprasÄ«jumi, meklÄ“Å”anas apstrādes fāzes samazināŔana, masu indeksācijas koordinÄ“Å”ana;
  • alerting node ā€” trauksmes uzdevumu palaiÅ”ana;
  • maŔīnmācÄ«bas mezgls ā€” apstrādā maŔīnmācÄ«bas uzdevumus.

Tālāk redzamajā diagrammā parādÄ«ts, kā dati tiek glabāti un replicēti mezglos, lai nodroÅ”inātu lielāku datu pieejamÄ«bu.

PieteikŔanās Kubernetes: EFK vs PLG

Katras kopijas dati tiek glabāti apgrieztā rādītājā. Tālāk redzamā diagramma parāda, kā tas notiek:

PieteikŔanās Kubernetes: EFK vs PLG

UzstādīŔana

Sīkāk var apskatīties Ŕeit, izmantoŔu stūres diagrammu:

$ helm install efk-stack stable/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elastics

PLG kaudze

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.

PieteikŔanās Kubernetes: EFK vs PLG

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.

PieteikŔanās Kubernetes: EFK vs PLG

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.

ApskatÄ«sim žurnālu savākÅ”anas sistēmas arhitektÅ«ru, neiedziļinoties detaļās:

PieteikŔanās Kubernetes: EFK vs PLG

Un Ŕeit ir apraksts (mikropakalpojumu arhitektūra):

PieteikŔanās Kubernetes: EFK vs PLG

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.

PieteikŔanās Kubernetes: EFK vs PLG

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)

Pievienojiet repozitoriju un instalējiet steku.

$ helm repo add loki https://grafana.github.io/loki/charts
$ helm repo update
$ helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false

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.

PieteikŔanās Kubernetes: EFK vs PLG

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ē.

Saites:

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)

Avots: www.habr.com

Pievieno komentāru