Prijava u Kubernetes: EFK vs PLG

Prijava u Kubernetes: EFK vs PLG

Praćenje je postalo vrlo važna komponenta rastućih rješenja u oblaku kako se povećava složenost distribuiranih sustava. Potrebno je razumjeti njihovo ponašanje. Trebamo skalabilne alate koji mogu prikupiti podatke sa svih usluga - i pružiti stručnjacima jedinstveno sučelje s analizom performansi, demonstracijom pogrešaka, dostupnošću i zapisnicima.

Ti isti alati moraju biti učinkoviti i produktivni. U ovom ćemo članku pogledati dva popularna tehnološka skupa: EFK (Elasticsearch) i PLG (Loki) te ispitati njihove arhitekture i razlike.

EFK stog

Možda ste već čuli za vrlo popularne ELK ili EFK. Stog se sastoji od nekoliko različitih dijelova: Elasticsearch (pohrana objekata), Logstash ili FluentD (prikupljanje i agregacija dnevnika) i Kibana za vizualizaciju.

Tipičan tijek rada izgleda ovako:

Prijava u Kubernetes: EFK vs PLG

Elasticsearch — distribuirano skladištenje objekata s pretraživanjem i analitikom u stvarnom vremenu. Izvrsno rješenje za polustrukturirane podatke kao što su dnevnici. Informacije se spremaju kao JSON dokumenti, indeksiraju u stvarnom vremenu i distribuiraju po čvorovima klastera. Koristi se obrnuti indeks koji sadrži sve jedinstvene riječi i pridružene dokumente za pretraživanje cijelog teksta, koje se pak temelji na tražilici Apache Lucene.

TečnoD je prikupljač podataka koji objedinjuje podatke prilikom prikupljanja i konzumiranja. Pokušava organizirati podatke u JSON-u što je više moguće. Njegova je arhitektura proširiva, ima ih još stotine različitih proširenja, uz podršku zajednice, za sve prilike.

kibana - alat za vizualizaciju podataka za Elasticsearch s raznim dodatnim mogućnostima, na primjer, analiza vremenskih serija, analiza grafikona, strojno učenje i više.

Elasticsearch arhitektura

Podaci klastera Elasticsearch pohranjuju se raspoređeni po svim njegovim čvorovima. Klaster se sastoji od više čvorova radi poboljšanja dostupnosti i otpornosti. Svaki čvor može obavljati sve uloge klastera, ali u velikim scale-out implementacijama, čvorovima se obično dodjeljuju pojedinačni zadaci.

Vrste čvorova klastera:

  • glavni čvor - upravlja klasterom, potrebna su najmanje tri, jedan je uvijek aktivan;
  • podatkovni čvor - pohranjuje indeksirane podatke i obavlja različite zadatke s njima;
  • čvor za unos - organizira cjevovode za transformaciju podataka prije indeksiranja;
  • koordinirajući čvor - usmjeravanje zahtjeva, smanjenje faze obrade pretraživanja, koordiniranje masovnog indeksiranja;
  • čvor upozorenja — pokretanje zadataka upozorenja;
  • čvor strojnog učenja - obrada zadataka strojnog učenja.

Donji dijagram pokazuje kako se podaci pohranjuju i repliciraju na čvorovima kako bi se postigla veća dostupnost podataka.

Prijava u Kubernetes: EFK vs PLG

Podaci svake replike pohranjeni su u obrnutom indeksu, dijagram u nastavku pokazuje kako se to događa:

Prijava u Kubernetes: EFK vs PLG

Instalacija

Detalji se mogu pogledati здесь, upotrijebit ću dijagram kormila:

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

PLG stog

Nemojte se iznenaditi ako ne možete pronaći ovu kraticu, jer je poznatija kao Grafana Loki. U svakom slučaju, ovaj skup dobiva na popularnosti jer koristi provjerena tehnička rješenja. Možda ste već čuli za Grafanu, popularni alat za vizualizaciju. Njegovi tvorci, nadahnuti Prometejem, razvili su Loki, horizontalno skalabilan sustav za agregaciju dnevnika visokih performansi. Loki indeksira samo metapodatke, ne i same časopise, što je tehničko rješenje koje omogućuje jednostavno korištenje i isplativost.

Promtail - agent za slanje logova iz operativnog sustava u Loki klaster. grafana je alat za vizualizaciju temeljen na podacima iz Lokija.

Prijava u Kubernetes: EFK vs PLG

Loki je izgrađen na istim principima kao i Prometheus, što ga čini prikladnim za pohranu i analizu Kubernetes dnevnika.

Lokijeva arhitektura

Loki se može pokrenuti kao jedan proces ili kao više procesa, što omogućuje horizontalno skaliranje.

Prijava u Kubernetes: EFK vs PLG

Također može raditi ili kao monolitna aplikacija ili kao mikroservis. Vođenje kao jedinstvenog procesa može biti korisno za lokalni razvoj ili za manji nadzor. Za industrijsku implementaciju i skalabilno radno opterećenje preporučuje se korištenje opcije mikroservisa. Putovi za pisanje i čitanje podataka su odvojeni, tako da se mogu fino podešavati i skalirati prema potrebi.

Pogledajmo arhitekturu sustava za prikupljanje dnevnika bez ulaska u detalje:

Prijava u Kubernetes: EFK vs PLG

A evo i opisa (arhitektura mikroservisa):

Prijava u Kubernetes: EFK vs PLG

Komponente:

Promtail — agent instaliran na čvorovima (kao skup usluga), on uklanja zapise iz zadataka i pristupa Kubernetes API-ju za dobivanje metapodataka koji će označavati zapise. Zatim šalje zapisnik glavnoj usluzi Loki. Mapiranje metapodataka podržava ista pravila označavanja kao Prometheus.

Distributer — servisni distributer koji radi kao međuspremnik. Za obradu milijuna zapisa, pakira dolazne podatke, sažimajući ih u blokove kako stignu. Nekoliko odvodnika podataka radi istovremeno, ali zapisnici koji pripadaju jednom dolaznom toku podataka trebali bi se pojaviti samo u jednom od njih za sve njegove blokove. To je organizirano u prsten odvodnika i sekvencijalnog raspršivanja. Za toleranciju grešaka i redundanciju, ovo se radi n puta (3 ako nije konfigurirano).

Ingester — poslužni prijemnik. Podatkovni blokovi stižu komprimirani s dodanim zapisima. Nakon što je blok dovoljne veličine, blok se ispire u bazu podataka. Metapodaci idu u indeks, a podaci iz bloka dnevnika idu u dijelove (obično pohrana objekata). Nakon resetiranja, prijamnik stvara novi blok u koji će se dodati novi unosi.

Prijava u Kubernetes: EFK vs PLG

indeks - baza podataka, DynamoDB, Cassandra, Google BigTable itd.

Komadići — blokovi dnevnika u komprimiranom obliku, obično pohranjeni u objektnu pohranu, na primjer, S3.

upitnik - put čitanja koji obavlja sav prljavi posao. Gleda vremenski raspon i vremensku oznaku, a zatim gleda indeks kako bi pronašao podudaranja. Zatim čita blokove podataka i filtrira ih kako bi dobio rezultat.

Sada da vidimo sve na djelu.

Instalacija

Najlakši način za instalaciju u Kubernetes je korištenje helma. Pretpostavljamo da ste ga već instalirali i konfigurirali (i treća verzija! cca. prevoditelj)

Dodajte spremište i instalirajte hrpu.

$ 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

Ispod je primjer nadzorne ploče koja prikazuje podatke iz Prometheusa za Etcd metriku i Loki za Etcd pod zapisnike.

Prijava u Kubernetes: EFK vs PLG

Raspravljajmo sada o arhitekturi oba sustava i usporedimo njihove mogućnosti.

usporedba

Jezik upita

Elasticsearch koristi Query DSL i jezik upita Lucene za pružanje mogućnosti pretraživanja cijelog teksta. To je etablirana, moćna tražilica sa širokom podrškom operatera. Pomoću njega možete pretraživati ​​po kontekstu i sortirati po relevantnosti.

S druge strane prstena je LogQL, koji se koristi u Lokiju, nasljedniku PromQL-a (Prometheus query language). Koristi oznake dnevnika za filtriranje i odabir podataka dnevnika. Moguće je koristiti neke operatore i aritmetiku kako je opisano здесь, ali po mogućnostima zaostaje za Elastic languageom.

Budući da su upiti u Lokiju povezani s oznakama, lako ih je povezati s metrikom, a kao rezultat toga, s njima je lakše organizirati operativni nadzor.

Skalabilnost

Oba skupa su horizontalno skalabilna, ali Loki to olakšava jer ima odvojene staze za čitanje i pisanje i mikroservisnu arhitekturu. Loki se može prilagoditi vašim potrebama i može se koristiti za vrlo velike količine podataka dnevnika.

Višestanarstvo

Multitenancy klastera je uobičajena tema u OPEX kratici, oba skupa pružaju multitenancy. Postoji nekoliko za Elasticsearch načine odvajanje klijenta: zasebni indeks za svakog klijenta, usmjeravanje temeljeno na klijentu, jedinstvena polja klijenta, filtri pretraživanja. Loki ima podržati u obliku HTTP X-Scope-OrgID zaglavlja.

trošak

Loki je prilično isplativ zbog činjenice da ne indeksira podatke, već samo metapodatke. Ovim se postiže uštede na skladištenju i memorije (cache), budući da je pohrana objekata jeftinija od pohrane blokova, koja se koristi u Elasticsearch klasterima.

Zaključak

EFK stog može se koristiti u razne svrhe, pružajući maksimalnu fleksibilnost i Kibana sučelje bogato značajkama za analitiku, vizualizaciju i upite. Može se dodatno poboljšati mogućnostima strojnog učenja.

Loki stack je koristan u ekosustavu Kubernetes zbog svog mehanizma za otkrivanje metapodataka. Možete jednostavno povezati podatke za praćenje na temelju vremenskih serija u Grafani i zapisima.

Kada je riječ o cijeni i dugoročnom skladištenju dnevnika, Loki je izvrsna ulazna točka u rješenja u oblaku.

Postoji više alternativa na tržištu - neke bi mogle biti bolje za vas. Na primjer, GKE ima integraciju Stackdrivera koja pruža izvrsno rješenje za nadzor. Nismo ih uključili u našu analizu u ovom članku.

reference:

Članak su za Habr preveli i pripremili djelatnici Slurm trening centar — intenzivni tečajevi, videotečajevi i korporativna obuka stručnjaka iz prakse (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Izvor: www.habr.com

Dodajte komentar