Kuberneteses logimine: EFK vs PLG

Kuberneteses logimine: EFK vs PLG

JĂ€lgimine on muutunud jĂ€rjest olulisemaks komponendiks pilvandmetöötluse lahendustes, kuna jaotatud sĂŒsteemide keerukus kasvab. See on vajalik nende kĂ€itumise mĂ”istmiseks. Vajame skaleeritavaid tööriistu, mis suudavad andmeid kĂ”igist teenustest koguda — ja pakkuda spetsialistidele ĂŒhtset liidest, millel on jĂ”udluse analĂŒĂŒs, veateated, saadavus ja pĂ€evikud.

Need tööriistad peavad olema tÔhusad ja jÔudlusrikkad. Selles artiklis uurime kahte populaarset tehnoloogiakomplekti: EFK (Elasticsearch) ja PLG (Loki) ning kÀsitleme nende arhitektuuri ja erinevusi.

EFK komplekt

VÔib-olla olete juba kuulnud vÀga populaarsest ELK vÔi EFK-st. Komplekt koosneb mitmest eraldi osast: Elasticsearch (objektide ladustamine), Logstash vÔi FluentD (andmete kogumine ja agregatsioon) ja Kibana visualiseerimiseks.

TĂŒĂŒpiline töövoog nĂ€eb vĂ€lja jĂ€rgmine:

Kuberneteses logimine: EFK vs PLG

Elasticsearch — jaotatud objektide ladustamine reaalajas analĂŒĂŒsi ja otsimisega. SuurepĂ€rane lahendus osaliselt struktureeritud andmete, nĂ€iteks pĂ€evikute, jaoks. Teave salvestatakse JSON-dokumentidena, indekseeritakse reaalajas ja jaotatakse klastrite vahel. Kasutatakse pööratud indeksi, mis sisaldab kĂ”iki unikaalseid sĂ”nu ja nendega seotud dokumente tĂ€isteksti otsinguks, mis pĂ”hineb Apache Lucene'i otsingumootoril.

FluentD — andmete kogumise tööriist, mis ĂŒhtlustab andmeid kogumise ja tarbimise ajal. See pĂŒĂŒab andmeid JSON-is nii palju korraldada, kui vĂ”imalik. Selle arhitektuur on laiendatav, olemas on ĂŒle saja erineva laienduse, mida toetab kogukond, igaks juhuks.

Kibana — andmete visualiseerimiseks mĂ”eldud tööriist Elasticsearchi jaoks, millel on erinevaid lisavĂ”imalusi, nagu ajas jĂ€rjestamise analĂŒĂŒs, graafid, masinĂ”pe jms.

Elasticsearchi arhitektuur

Elasticsearchi klastri andmed on jaotatud kĂ”igi sĂ”lmede vahel. Klastrit moodustavad mitmed sĂ”lmed, et parandada saadavust ja resistentsust. Iga sĂ”lm vĂ”ib tĂ€ita kĂ”iki klastri rollisid, kuid suurtes skaleeritavates juurutustes mÀÀratakse sĂ”lmedele tavaliselt eraldi ĂŒlesanded.

Klastri sÔlmed:

  • master node — haldab klastrit, vajatakse vĂ€hemalt kolme, millest ĂŒks on alati aktiivne;
  • data node — hoiab indekseeritud andmeid ja teostab erinevaid ĂŒlesandeid nende kohta;
  • ingest node — korraldab torustikke andmete töötlemiseks enne indekseerimist;
  • coordinating node — suunab pĂ€ringud, vĂ€hendab otsinguprotsessi etappe, koordineerib massindu indekseerimist;
  • alerting node — kĂ€ivitab teavituste ĂŒlesandeid;
  • machine learning node — töötleb masinĂ”ppe ĂŒlesandeid.

Alloleval diagrammil on nÀidatud, kuidas andmed salvestatakse ja replikatsioonitakse sÔlmede vahel, et saavutada suurem andmete saadavus.

Kuberneteses logimine: EFK vs PLG

Iga koopia andmed hoitakse pööratud indeksis, allolev skeem nÀitab, kuidas see toimub:

Kuberneteses logimine: EFK vs PLG

Installimine

Andmete ĂŒksikasju saab vaadata siit, ma kasutan helm charti:

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

PLG komplekt

Ärge muretsege, kui te ei leia seda akronĂŒĂŒmi, kuna seda tuntakse rohkem kui Grafana Loki. Igatahes, see komplekt on populaarsust kogumas, kuna kasutab vĂ€rskeid tehnilisi lahendusi. VĂ”ib-olla olete juba kuulnud Grafanast, populaarset visualiseerimistööriista. Selle loojaid, inspiratsiooni saades Prometheusest, arendasid vĂ€lja Loki, horisontaalselt skaleeritava ja kĂ”rgelt jĂ”udlusrikka logide agregatsiooni sĂŒsteemi. Loki indekseerib ainult metaandmeid, kuid mitte logisid ise, see tehniline lahendus on vĂ”imaldanud tal olla lihtne kasutada ja majanduslikult tasuv.

Promtail — agent logide saatmiseks operatsioonisĂŒsteemist Loki klastrisse. Grafana — visualiseerimistööriist, mis pĂ”hineb Loki andmetel.

Kuberneteses logimine: EFK vs PLG

Loki on ĂŒles ehitatud samadele pĂ”himĂ”tetele nagu Prometheus, mistĂ”ttu sobib see hĂ€sti Kubernetes'i logide salvestamiseks ja analĂŒĂŒsimiseks.

Loki arhitektuur

Loki saab kĂ€ivitada nii ĂŒhe protsessi reĆŸiimis kui ka mitme protsessi reĆŸiimis, tagades horisontaalse skaleeritavuse.

Kuberneteses logimine: EFK vs PLG

See vĂ”ib töötada nii monoliitse rakendusena kui ka mikroteenusena. Ühe protsessi reĆŸiim vĂ”ib osutuda kasulikuks lokaalseteks arendusteks vĂ”i vĂ€iksemateks jĂ€lgimistöödeks. TootmisettevĂ”tte juurutamiseks ja skaleeritava koormuse korral on soovitatav kasutada mikroteenuse varianti. Andmete kirjutamise ja lugemise teed on eraldatud, nii et seda saab piisavalt tĂ€pselt konfigureerida ja skaleerida vastavalt vajadusele.

Vaadakem logide kogumise sĂŒsteemi arhitektuuri ilma detailideta:

Kuberneteses logimine: EFK vs PLG

Siin on kirjeldus (mikroteenuse arhitektuur):

Kuberneteses logimine: EFK vs PLG

Koostisosad:

Promtail — agent, mis paigaldatakse sĂ”lmedesse (teenuste kogumina), kogub see logisid ĂŒlesannetest ja kasutab Kubernetes API-d metainfo saamiseks, millega logisid mĂ€rgistatakse. SeejĂ€rel saadab see logi pĂ”hiteenusele Loki. Metainfo mĂ€rgistamiseks kehtivad samad reeglid nagu Prometheus'e puhul.

Jaotaja — teenus, mis toimib vahemikuna. Miljonite kirje töötlemiseks pakkib see sissetulevaid andmeid, tihendades neid plokkidena, kui need saabuvad. Samal ajal töötavad mitu andmevastuvĂ”tjat, kuid logid, mis kuuluvad ĂŒhte sissetuleva andmevoogu, peavad olema ainult ĂŒhe neist kĂ”igi oma plokkide jaoks. See on korraldatud vastuvĂ”tjate ringina ja jĂ€rjestikuse hĂ€shtimisega. TĂ”rkekindluse ja ĂŒleliigsuse vooruseks tehakse see n korda (3, kui ei seadista).

Ingester — andmevastuvĂ”tja. Andmeplokid saabuvad tihendatuna koos logidega. Kui plokk on piisavalt suur, kirjutatakse plokk andmebaasi. Metainfo lĂ€heb indeksisse ja logiplokist tulnud andmed jĂ”uavad Chunks'i (tavaliselt objektihoidlasse). PĂ€rast kirjutamist loob vastuvĂ”tja uue ploki, kuhu lisatakse uusi kirjeid.

Kuberneteses logimine: EFK vs PLG

Indeks — andmebaasid, nagu DynamoDB, Cassandra, Google BigTable jne.

Chunks — tihendatud logiplokid, mis tavaliselt salvestatakse objektihoidlasse, nĂ€iteks S3.

KĂŒĂŒrija — lugemistee, mis teeb kogu musta tööt. See vaatab ajavahemikku ja mĂ€rke, seejĂ€rel uurib indeksit vaste leidmiseks. Edasi loetakse andmeplokke ja filtreeritakse neid tulemuste saamiseks.

NĂŒĂŒd vaatame, kuidas kĂ”ik töötab.

Installimine

Kubernetesesse paigaldamine on kÔige lihtsam helm'i kasutamisel. Eeldame, et olete selle juba installinud ja seadistanud (ja kolmandat versiooni! tÔlkija mÀrk.)

Lisame hoidla ja installime stacki.

$ 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

Allpool on nÀide juhtpaneelist, kus kuvatakse Prometheus'e andmed Etcd ja Loki jaoks podide logide kohta.

Kuberneteses logimine: EFK vs PLG

NĂŒĂŒd arutame mĂ”lema sĂŒsteemi arhitektuuri ja vĂ”rreldame nende vĂ”imalusi.

VÔrdlus

KĂŒsimise keel

Elasticsearchis kasutatakse Query DSL-i ja Lucene pÀringukeelt, mis vÔimaldab tÀisteksti otsingut. See on hÀsti tuntud ja vÔimas otsingumootor, millel on ulatuslik toetamine operaatorite osas. Selle abil saab otsida konteksti jÀrgi ja sorteerida asjakohasuse pÔhjal.

Teisest kĂŒljest on LogQL, mida rakendatakse Lokis, PromQL-i (Prometheus pĂ€ringukeel) jĂ€rglane. See kasutab logide mĂ€rke andmete filtreerimiseks ja valimiseks. On vĂ”imalik kasutada teatud operaatorite ja aritmeetika, nagu on kirjeldatud siit, kuid vĂ”imaluste poolest jÀÀb see Elastic keelele alla.

Kuna pĂ€ringud Lokis on seotud mĂ€rkidega — need on lihtsad siduda mÔÔtmistega, mistĂ”ttu on nende abil lihtsam korraldada operatiivset jĂ€lgimist.

Skaleeritavus

MÔlemad virnad on horisontaalselt skaleeritavad, kuid Lokiga on see lihtsam, kuna tal on eraldatud andmete lugemise ja kirjutamise teed ning tal on mikroteenuste arhitektuur. Loki saab konfigureerida vastavalt teie vajadustele ja seda saab kasutada vÀga suurte logide andmemahtude jaoks.

MitmeĂŒhingulisus

Klastri mitmeĂŒhingulisus on ĂŒldine teema OPEX-i vĂ€hendamiseks, mĂ”lemad virnad pakuvad mitmeĂŒhingulisust. Elasticsearchi jaoks on mitu vĂ”imalust klientide jagamiseks: iga kliendi jaoks eraldi indeks, klientide pĂ”hine marsruutimine, kliendi ainulaadsed vĂ€ljad, otsingu filtrid. Lokis on see toetamine HTTP pĂ€ises X-Scope-OrgID.

Hind

Loki on vÀga efektiivne kulude osas, kuna see ei indekseeri andmeid, vaid ainult metainfot. Nii saavutatakse salvestuskulude ja mÀlu (vahemÀlu) kokkuhoid, kuna objektide hoidmine on odavam kui plokki kasutav salvestus, mida kasutatakse Elasticsearchi klastrites.

KokkuvÔte

EFK virna saab kasutada erinevatel eesmĂ€rkidel, pakkudes maksimaalset paindlikkust ja mitmeotstarbelist Kibana liidest analĂŒĂŒtikaks, visualiseerimiseks ja pĂ€ringuteks. Seda saab tĂ€iendavalt tĂ€iendada masinĂ”ppe vĂ”imalustega.

Loki virn on kasulik Kubernetes'e ökosĂŒsteemis metainfot avastava mehhanismi tĂ”ttu. Andmeid on lihtne siduda ajas jĂ€rgneva jĂ€lgimise jaoks Grafanas ja logides.

Kuna tegemist on logide hinna ja pikaajalise sÀilitamisega, on Loki suurepÀrane valik pilvelahenduste sissejuhatamiseks.

Turul on rohkem alternatiive — mĂ”ned vĂ”ivad teile paremini sobida. NĂ€iteks GKE jaoks on Stackdriveri integreerimine, mis pakub suurepĂ€rast lahendust jĂ€lgimiseks. Me ei lisanud neid oma analĂŒĂŒsi selle artikli jooksul.

Lingid:

Artikkel on tĂ”lgitud ja ette valmistatud Habr'i töötajate poolt Slörmi koolituskeskus — intensiivkursused, videokursused ja ettevĂ”tte koolitus praktiseerivatelt spetsialistidelt (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster