Prijava v Kubernetes: EFK proti PLG

Prijava v Kubernetes: EFK proti PLG

Spremljanje je postalo zelo pomembna komponenta rastočih rešitev v oblaku, saj se kompleksnost porazdeljenih sistemov povečuje. Treba je razumeti njihovo vedenje. Potrebujemo razširljiva orodja, ki lahko zbirajo podatke iz vseh storitev - in strokovnjakom zagotovijo enoten vmesnik z analizo delovanja, prikazom napak, razpoložljivostjo in dnevniki.

Ta ista orodja morajo biti učinkovita in produktivna. V tem članku si bomo ogledali dva priljubljena tehnološka sklopa: EFK (Elasticsearch) in PLG (Loki) ter preučili njuni arhitekturi in razlike.

sklad EFK

Morda ste že slišali za zelo priljubljena ELK ali EFK. Sklad je sestavljen iz več različnih delov: Elasticsearch (shranjevanje predmetov), ​​Logstash ali FluentD (zbiranje in združevanje dnevnikov) in Kibana za vizualizacijo.

Tipičen potek dela izgleda takole:

Prijava v Kubernetes: EFK proti PLG

Elastično iskanje — porazdeljeno shranjevanje objektov z iskanjem in analitiko v realnem času. Odlična rešitev za polstrukturirane podatke, kot so dnevniki. Informacije so shranjene kot dokumenti JSON, indeksirani v realnem času in porazdeljeni po vozliščih gruče. Za iskanje po celotnem besedilu se uporablja obrnjen indeks, ki vsebuje vse edinstvene besede in povezane dokumente, ki temelji na iskalniku Apache Lucene.

FluentD je zbiralnik podatkov, ki poenoti podatke pri zbiranju in porabi. Poskuša čim bolj organizirati podatke v JSON. Njegova arhitektura je razširljiva, obstaja še več na stotine različnih razširitev, s podporo skupnosti, za vse priložnosti.

Kibana - orodje za vizualizacijo podatkov za Elasticsearch z različnimi dodatnimi zmožnostmi, na primer analizo časovnih vrst, analizo grafov, strojno učenje in drugo.

Elasticsearch arhitektura

Podatki gruče Elasticsearch so shranjeni razpršeno po vseh njenih vozliščih. Grozd je sestavljen iz več vozlišč za izboljšanje razpoložljivosti in odpornosti. Vsako vozlišče lahko opravlja vse vloge gruče, vendar so v velikih razširjajočih uvedbah vozliščem običajno dodeljene posamezne naloge.

Vrste vozlišč gruče:

  • glavno vozlišče - upravlja gručo, potrebni so vsaj trije, eno je vedno aktivno;
  • podatkovno vozlišče - shranjuje indeksirane podatke in z njimi izvaja različne naloge;
  • vozlišče za vnos - organizira cevovode za preoblikovanje podatkov pred indeksiranjem;
  • koordinacijsko vozlišče - usmerjanje zahtev, zmanjšanje faze obdelave iskanja, koordinacija množičnega indeksiranja;
  • opozorilno vozlišče — zagon opozorilnih nalog;
  • vozlišče strojnega učenja - obdelava nalog strojnega učenja.

Spodnji diagram prikazuje, kako se podatki shranjujejo in podvajajo med vozlišči, da se doseže večja razpoložljivost podatkov.

Prijava v Kubernetes: EFK proti PLG

Podatki vsake replike so shranjeni v obrnjenem indeksu, spodnji diagram prikazuje, kako se to zgodi:

Prijava v Kubernetes: EFK proti PLG

Namestitev

Podrobnosti si lahko ogledate tukaj, uporabil bom shemo krmila:

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

sklad PLG

Ne bodite presenečeni, če te kratice ne najdete, saj je bolj znana kot Grafana Loki. Vsekakor ta sklad postaja vse bolj priljubljen, ker uporablja preverjene tehnične rešitve. Morda ste že slišali za Grafano, priljubljeno orodje za vizualizacijo. Njegovi ustvarjalci so po navdihu Prometheusa razvili Loki, vodoravno razširljiv, visoko zmogljiv sistem združevanja dnevnikov. Loki indeksira le metapodatke, ne pa tudi samih revij, kar je tehnična rešitev, ki omogoča enostavno uporabo in stroškovno učinkovitost.

Promtail - agent za pošiljanje dnevnikov iz operacijskega sistema v gručo Loki. grafana je orodje za vizualizacijo, ki temelji na podatkih iz Lokija.

Prijava v Kubernetes: EFK proti PLG

Loki je zgrajen na enakih principih kot Prometheus, zaradi česar je zelo primeren za shranjevanje in analizo dnevnikov Kubernetes.

Loki arhitektura

Loki je mogoče izvajati kot en sam proces ali kot več procesov, kar omogoča vodoravno skaliranje.

Prijava v Kubernetes: EFK proti PLG

Deluje lahko tudi kot monolitna aplikacija ali kot mikrostoritev. Izvajanje kot en sam proces je lahko koristno za lokalni razvoj ali za manjše spremljanje. Za industrijsko izvedbo in razširljivo delovno obremenitev je priporočljiva uporaba možnosti mikrostoritve. Poti za pisanje in branje podatkov sta ločeni, tako da jih je mogoče po potrebi natančno prilagoditi in prilagoditi.

Oglejmo si arhitekturo sistema za zbiranje dnevnikov, ne da bi se spuščali v podrobnosti:

Prijava v Kubernetes: EFK proti PLG

In tukaj je opis (arhitektura mikrostoritve):

Prijava v Kubernetes: EFK proti PLG

Sestavine:

Promtail — agent, nameščen na vozliščih (kot niz storitev), odstrani dnevnike iz nalog in dostopa do Kubernetes API za pridobitev metapodatkov, ki bodo označili dnevnike. Nato pošlje dnevnik glavni storitvi Loki. Preslikava metapodatkov podpira ista pravila označevanja kot Prometheus.

Distributer — servisni distributer, ki deluje kot medpomnilnik. Za obdelavo milijonov zapisov pakira dohodne podatke in jih stisne v bloke, ko prispejo. Več ponorov podatkov deluje hkrati, vendar se morajo dnevniki, ki pripadajo enemu dohodnemu podatkovnemu toku, pojaviti samo v enem od njih za vse njegove bloke. To je organizirano v obroč ponorov in zaporednega zgoščevanja. Za toleranco napak in redundanco se to izvede n-krat (3, če ni konfigurirano).

Ingester — servisni sprejemnik. Podatkovni bloki prispejo stisnjeni z dodanimi dnevniki. Ko je blok dovolj velik, se blok odplakne v bazo podatkov. Metapodatki gredo v indeks, podatki iz bloka dnevnika pa v kose (običajno shranjevanje objektov). Po ponastavitvi sprejemnik ustvari nov blok, v katerega bodo dodani novi vnosi.

Prijava v Kubernetes: EFK proti PLG

Kazalo - baza podatkov, DynamoDB, Cassandra, Google BigTable itd.

Koščki — bloki dnevnikov v stisnjeni obliki, običajno shranjeni v objektni shrambi, na primer S3.

Querier - bralna pot, ki opravi vse umazano delo. Pogleda časovni obseg in časovni žig, nato pa pogleda indeks, da najde ujemanja. Nato prebere bloke podatkov in jih filtrira, da dobi rezultat.

Zdaj pa poglejmo vse v akciji.

Namestitev

Najlažji način za namestitev v Kubernetes je uporaba helm. Predvidevamo, da ste ga že namestili in konfigurirali (in tretja verzija! pribl. prevajalec)

Dodajte repozitorij in namestite sklad.

$ 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

Spodaj je primer nadzorne plošče, ki prikazuje podatke iz Prometheusa za meritve Etcd in Loki za dnevnike Etcd pod.

Prijava v Kubernetes: EFK proti PLG

Zdaj pa razpravljajmo o arhitekturi obeh sistemov in primerjajmo njune zmogljivosti med seboj.

Primerjava

Poizvedbeni jezik

Elasticsearch uporablja poizvedbeni jezik Query DSL in Lucene za zagotavljanje zmožnosti iskanja po celotnem besedilu. Je uveljavljen, močan iskalnik s široko podporo operaterjev. Z njim lahko iščete po kontekstu in razvrščate po pomembnosti.

Na drugi strani obroča je LogQL, ki se uporablja v Lokiju, nasledniku PromQL (Prometheus query language). Za filtriranje in izbiro dnevniških podatkov uporablja oznake dnevnika. Možno je uporabiti nekatere operatorje in aritmetiko, kot je opisano tukaj, po zmogljivostih pa zaostaja za jezikom Elastic.

Ker so poizvedbe v Lokiju povezane z oznakami, jih je enostavno povezati z metrikami in posledično z njimi lažje organizirati operativno spremljanje.

Razširljivost

Oba sklada sta vodoravno razširljiva, vendar Loki olajša, ker ima ločene poti za branje in pisanje ter arhitekturo mikrostoritev. Loki lahko prilagodite svojim potrebam in ga lahko uporabite za zelo velike količine podatkov dnevnika.

Več najemno

Večnajemništvo gruče je pogosta tema v kratici OPEX, oba sklada zagotavljata večnajemništvo. Obstaja več za Elasticsearch načine ločevanje odjemalcev: ločen indeks za vsakega odjemalca, usmerjanje na podlagi odjemalca, edinstvena polja odjemalca, iskalni filtri. Loki ima podporo v obliki glave HTTP X-Scope-OrgID.

Stroški

Loki je precej stroškovno učinkovit zaradi dejstva, da ne indeksira podatkov, ampak samo metapodatke. To doseže prihranek pri skladiščenju in pomnilnik (predpomnilnik), saj je shranjevanje objektov cenejše od shranjevanja blokov, ki se uporablja v gručah Elasticsearch.

Zaključek

Sklad EFK se lahko uporablja za različne namene, kar zagotavlja največjo prilagodljivost in s funkcijami bogat vmesnik Kibana za analitiko, vizualizacijo in poizvedbe. Dodatno ga je mogoče izboljšati z zmogljivostmi strojnega učenja.

Sklad Loki je uporaben v ekosistemu Kubernetes zaradi mehanizma za odkrivanje metapodatkov. Enostavno lahko povežete podatke za spremljanje na podlagi časovnih vrst v Grafani in dnevnikih.

Ko gre za stroške in dolgoročno shranjevanje dnevnikov, je Loki odlična vstopna točka v rešitve v oblaku.

Na trgu je več alternativ – nekatere so morda boljše za vas. GKE ima na primer integracijo Stackdriver, ki zagotavlja odlično rešitev za spremljanje. Nismo jih vključili v analizo v tem članku.

Reference:

Članek so za Habr prevedli in pripravili zaposleni Slurm trening center — intenzivni tečaji, video tečaji in korporativno usposabljanje strokovnjakov v praksi (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Vir: www.habr.com

Dodaj komentar