Prijava Kubernetes: EFK vs. PLG

Prijava Kubernetes: EFK vs. PLG

Monitoring je postao veoma važna komponenta rastućih cloud rešenja sa sve većom složenošću distribuiranih sistema. Potrebno je razumjeti njihovo ponašanje. Potrebni su nam skalabilni alati koji mogu prikupljati podatke iz svih usluga - i pružiti stručnjacima jedno sučelje sa analizom performansi, demonstracijom grešaka, dostupnošću i evidencijama.

Ti isti alati moraju biti efikasni i produktivni. U ovom članku ćemo pogledati dva popularna tehnološka steka: EFK (Elasticsearch) i PLG (Loki) i analizirati njihove arhitekture i razlike.

EFK Stack

Možda ste već čuli za veoma popularne ELK ili EFK. Stog se sastoji od nekoliko odvojenih dijelova: Elasticsearch (skladištenje objekata), Logstash ili FluentD (sakupljanje i agregacija dnevnika) i Kibana za vizualizaciju.

Tipičan tok posla izgleda ovako:

Prijava Kubernetes: EFK vs. PLG

Elasticsearch — distribuirano skladištenje objekata sa pretragom i analitikom u realnom vremenu. Odlično rješenje za polustrukturirane podatke kao što su dnevniki. Informacije se pohranjuju kao JSON dokumenti, indeksiraju u realnom vremenu i distribuiraju po čvorovima klastera. Koristi se obrnuti indeks koji sadrži sve jedinstvene riječi i srodne dokumente za pretraživanje cijelog teksta, koji je zauzvrat baziran na pretraživaču Apache Lucene.

FluentD je sakupljač podataka koji objedinjuje podatke kako se prikupljaju i konzumiraju. Pokušava da organizuje podatke u JSON što je više moguće. Njegova arhitektura je proširiva, ima ih više stotine različitih ekstenzija, uz podršku zajednice, za sve prilike.

Kibana je alat za vizualizaciju podataka za Elasticsearch sa raznim dodatnim funkcijama, kao što su analiza vremenskih serija, grafikoni, mašinsko učenje i još mnogo toga.

Elasticsearch Architecture

Podaci klastera Elasticsearch pohranjeni su 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, skalabilnim implementacijama, čvorovima se obično dodjeljuju pojedinačni zadaci.

Tipovi čvorova klastera:

  • glavni čvor - upravlja klasterom, potrebna su vam najmanje tri, jedan je uvijek aktivan;
  • čvor podataka - pohranjuje indeksirane podatke i obavlja različite zadatke s njima;
  • ingest node - organizira cjevovode za transformaciju podataka prije indeksiranja;
  • koordinirajući čvor - rutiranje zahtjeva, smanjenje faze obrade pretraživanja, koordinacija masovnog indeksiranja;
  • čvor za uzbunjivanje - pokretanje zadataka obavještavanja;
  • Čvor mašinskog učenja - obrada zadataka mašinskog učenja.

Dijagram ispod pokazuje kako se podaci zadržavaju i repliciraju na čvorovima da bi se postigla veća dostupnost podataka.

Prijava Kubernetes: EFK vs. PLG

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

Prijava Kubernetes: EFK vs. PLG

postavljanje

Detalje možete pogledati ovdje, koristit ću kormilarsku shemu:

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

PLG stack

Nemojte se iznenaditi ako ne možete pronaći ovaj akronim, jer je poznatiji kao Grafana Loki. U svakom slučaju, ovaj stek postaje sve popularniji jer koristi provjerena tehnička rješenja. Možda ste već čuli za Grafanu, popularni alat za vizualizaciju. Njegovi kreatori, inspirisani Prometejem, razvili su Loki, horizontalno skalabilan sistem agregacije dnevnika visokih performansi. Loki indeksira samo metapodatke, a ne same časopise, ovo tehničko rješenje ga je učinilo lakim za korištenje i isplativim.

Promtail - agent za slanje dnevnika iz operativnog sistema u Loki klaster. grafana je alat za vizualizaciju zasnovan na podacima iz Lokija.

Prijava Kubernetes: EFK vs. PLG

Loki je izgrađen na istim principima kao i Prometheus, tako da je vrlo pogodan za pohranjivanje i raščlanjivanje Kubernetes dnevnika.

Loki arhitektura

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

Prijava Kubernetes: EFK vs. PLG

Takođe može raditi i kao monolitna aplikacija i kao mikroservis. Pokretanje kao jedan proces može biti korisno za lokalni razvoj ili za detaljno praćenje. Za industrijsku implementaciju i skalabilno radno opterećenje, preporučuje se korištenje mikroservisne opcije. Putevi pisanja i čitanja podataka su razdvojeni, tako da se mogu fino podesiti i skalirati po potrebi.

Pogledajmo arhitekturu sistema prikupljanja dnevnika bez detalja:

Prijava Kubernetes: EFK vs. PLG

A evo i opisa (mikroservisne arhitekture):

Prijava Kubernetes: EFK vs. PLG

Komponente:

Promtail - agent instaliran na čvorovima (kao skup usluga), uklanja dnevnike iz zadataka i pristupa Kubernetes API-ju kako bi dobio metapodatke koji će se koristiti za označavanje dnevnika. Zatim šalje dnevnik glavnom Loki servisu. Za podudaranje metapodataka, podržana su ista pravila označavanja kao u Prometheusu.

Distributer - servis-distributer, radi kao bafer. Za obradu miliona zapisa, on pakuje dolazne podatke, komprimirajući ih u blokove kako stignu. Više prijemnika podataka radi u isto vrijeme, ali zapisnici koji pripadaju istom dolaznom toku podataka trebali bi završiti samo u jednom od njih za sve njegove blokove. Ovo je organizirano kao prsten prijemnika i sekvencijalno heširanje. Za toleranciju grešaka i redundantnost, to se radi n puta (3 ako nije konfigurisano).

ingester — prijemnik usluge. Blokovi podataka dolaze komprimirani s dodanim zapisnicima. Čim blok bude dovoljne veličine, blok se ispušta u bazu podataka. Metapodaci idu u indeks, a podaci iz bloka dnevnika idu u komade (obično za skladištenje objekata). Nakon resetiranja, prijemnik kreira novi blok u koji će se dodati novi zapisi.

Prijava Kubernetes: EFK vs. PLG

indeks - baza podataka, DynamoDB, Cassandra, Google BigTable i još mnogo toga.

Chunks - blokovi dnevnika u komprimiranom obliku, obično pohranjeni u skladištu objekata, na primjer, S3.

Querier je put za čitanje koji obavlja sav prljavi posao. Gleda vremenski raspon i vremensku oznaku, a zatim gleda u indeks kako bi potražio podudaranja. Zatim čita blokove podataka i filtrira ih kako bi dobio rezultat.

Sad da vidimo sve na poslu.

postavljanje

Najlakši način za instalaciju na Kubernetes je korištenje helm-a. Pretpostavljamo da ste ga već instalirali i konfigurisali (i treća verzija! cca. prevodilac)

Dodamo spremište i stavimo stek.

$ 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 Prometheus za Etcd i Loki metrike za Etcd pod loge.

Prijava Kubernetes: EFK vs. PLG

A sada hajde da razgovaramo o arhitekturi oba sistema, kao i da uporedimo njihove mogućnosti međusobno.

Upoređivanje

Jezik upita

Elasticsearch koristi Query DSL i Lucene jezik upita za pružanje mogućnosti pretraživanja punog teksta. To je uspostavljena 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 Lokijev LogQL, nasljednik PromQL-a (Prometheusov jezik upita). Koristi oznake dnevnika za filtriranje i odabir podataka dnevnika. Moguće je koristiti neke operatore i aritmetiku kako je opisano ovdje, ali po mogućnostima zaostaje za Elastic jezikom.

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

Skalabilnost

Oba steka su horizontalno skalabilna, ali sa Lokijem je to lakše jer ima odvojene staze za čitanje i upisivanje i ima mikroservisnu arhitekturu. Loki se može prilagoditi vašim potrebama i može se koristiti za vrlo velike količine podataka dnevnika.

Multitenancy

Multi-zakupništvo klastera je uobičajena tema za smanjenje OPEX-a, oba steka pružaju multi-zakupništvo. Postoji nekoliko za Elasticsearch načine odvajanje korisnika: poseban indeks po korisniku, rutiranje zasnovano na klijentu, jedinstvena polja korisnika, filteri za pretragu. Loki ima podrška kao HTTP zaglavlje X-Scope-OrgID.

trošak

Loki je vrlo isplativ zbog činjenice da ne indeksira podatke, već samo metapodatke. dakle, uštede na skladištenju i memoriju (cache), budući da je pohrana objekata jeftinija od blok memorije, koja se koristi u Elasticsearch klasterima.

zaključak

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

Loki stack je koristan u Kubernetes ekosistemu zbog mehanizma otkrivanja metapodataka. Možete jednostavno povezati podatke za praćenje na osnovu vremenskih serija u Grafani i logovima.

Kada su u pitanju troškovi i dugoročno zadržavanje dnevnika, Loki je odličan izbor za ulazak u oblak.

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

Reference:

Članak su preveli i pripremili za Habr zaposlenici Centar za obuku u slurmu — intenzivni, video kursevi i korporativna obuka od praktičara (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

izvor: www.habr.com

Dodajte komentar