Logimine Kuberneteses: EFK versus PLG

Logimine Kuberneteses: EFK versus PLG

JĂ€lgimine on muutunud vĂ€ga oluliseks komponendiks kasvavatesse pilve lahendustesse, kuna jaotatud sĂŒsteemide keerukus suureneb. See on vajalik nende kĂ€itumise mĂ”istmiseks. On vaja skaleeritavaid tööriistu, mis suudavad koguda andmeid kĂ”ikidest teenustest ja pakkuda spetsialistidele ĂŒhtset liidest jĂ”udluse analĂŒĂŒsimiseks, vigade tuvastamiseks, kĂ€tte saadavuse jĂ€lgimiseks ja logide haldamiseks.

Need tööriistad peavad olema tĂ”husad ja tootlikud. KĂ€esolevas artiklis vaatleme kahte populaarset tehnoloogeograafiat: EFK (Elasticsearch) ja PLG (Loki) ning analĂŒĂŒsime nende arhitektuure ja erinevusi.

EFK tehnoloogeograafia

VÔimalik, et olete juba kuulnud vÀga populaarsest ELK vÔi EFK-st. Tehnoloogeograafia koosneb mitmest eraldi osast: Elasticsearch (objektide salvestamine), Logstash vÔi FluentD (logide kogumine ja agregatsioon) ning Kibana visualiseerimiseks.

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

Logimine Kuberneteses: EFK versus PLG

Elasticsearch — jaotatud objektide salvestamine, reaalajas otsingu ja analĂŒĂŒsi vĂ”imalustega. SuurepĂ€rane lahendus osaliselt struktureeritud andmete, nagu logide, jaoks. Teave salvestatakse JSON dokumentidena, indekseeritakse reaalajas ja jagatakse klastrite sĂ”lmede vahel. Kasutatakse pöördsĂ”nastikku, mis sisaldab kĂ”iki unikaalseid sĂ”nu ja nendega seotud dokumente tĂ€isteksti otsingu jaoks, mis pĂ”hineb Apache Lucene'i otsingumootoril.

FluentD — andmete kogumiseks mĂ”eldud tööriist, mis ĂŒhtlustab andmeid nende kogumise ja kasutamise ajal. See pĂŒĂŒab andmeid JSON formaadis vĂ”imalikult korralikult struktureerida. Selle arhitektuur on laiendatav ning olemas on ĂŒle saja erineva laienduse, mida toetavad kogukonnad iga olukorra jaoks.

Kibana — Elasticsearchi andmete visualiseerimise tööriist koos erinevate tĂ€iendavate funktsioonidega, nagu ajaread, graafikud, masinĂ”pe ja muud.

Elasticsearchi arhitektuur

Elasticsearchi klastrite andmed on jaotatud kĂ”ikide selle sĂ”lmede vahel. Klastril on mitu sĂ”lme, et parandada kĂ€tte saadavust ja vastupidavust. Iga sĂ”lm vĂ”ib tĂ€ita kĂ”iki klastritöid, kuid suurtel skaleeritavatel juurutustel mÀÀratakse tavaliselt sĂ”lmedele erinevad ĂŒlesanded.

Klastri sĂ”lmede tĂŒĂŒbid:

  • master node — haldab klastrit, vajab vĂ€hemalt kolme, ĂŒks neist on alati aktiivne;
  • data node — salvestab indekseeritud andmeid ja sooritab nendega erinevaid ĂŒlesandeid;
  • ingest node — korraldab andmete töötlemise torusid enne indekseerimist;
  • coordinating node — suunab pĂ€ringud, lĂŒhendab otsingu töötlemise etappi, koordineerib massindekseerimist;
  • alerting node — kĂ€ivitab teavitamise ĂŒlesandeid;
  • machine learning node — töötleb masinĂ”ppe ĂŒlesandeid.

Alloleval diagrammil on nÀidatud, kuidas andmeid salvestatakse ja kopeeritakse sÔlmedes, et saavutada suurem andmete kÀttesaadavus.

Logimine Kuberneteses: EFK versus PLG

Iga replikatsiooni andmed salvestatakse pöördindeksis, allolev skeem nÀitab, kuidas see toimub:

Logimine Kuberneteses: EFK versus PLG

Paigaldamine

Detailide vaatamiseks kliki siia siin, ma kasutan helm chart'i:

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

PLG stack

Ärge muretsege, kui te ei leia seda akronĂŒĂŒmi, kuna seda tuntakse paremini kui Grafana Loki. Igal juhul on see stack populaarsust kogumas, kuna rakendab lĂ€bimĂ”eldud tehnilisi lahendusi. Olete vĂ”ib-olla juba kuulnud Grafanast, populaarsest visualiseerimise tööriistast. Selle loojad, vĂ”ttes inspiratsiooni Prometheusest, arendasid vĂ€lja Loki, horisontaalselt skaleeritava ja kĂ”rge jĂ”udlusega logide kogumise sĂŒsteemi. Loki indekseerib ainult metaandmeid, mitte logisid endid, see tehniline lahendus on vĂ”imaldanud sellel olla lihtne kasutada ja kulutĂ”hus.

Promtail — agent, mis saadab logisid opsĂŒsteemist Loki klastrisse. Grafana — visualiseerimise tööriist, mis pĂ”hineb Loki andmetel.

Logimine Kuberneteses: EFK versus PLG

Loki on ĂŒles ehitatud samadel pĂ”himĂ”tetel kui Prometheus, seega sobib see hĂ€sti logide sĂ€ilitamiseks ja analĂŒĂŒsimiseks Kuberneteses.

Loki arhitektuur

Loki saab tööle panna nii ĂŒhes protsessis kui ka mitmes protsessis, mis tagab horisontaalse skaleeritavuse.

Logimine Kuberneteses: EFK versus PLG

Samuti vĂ”ib see töötada kas monoliitse rakendusena vĂ”i mikroteenusena. Ühes protsessis töötamine vĂ”ib olla kasulik kohaliku arenduse vĂ”i vĂ€ikese jĂ€lgimise jaoks. Tööstuslikuks rakendamiseks ja skaleeritava koormuse jaoks on soovitatav kasutada mikroteenuse varianti. Andmete kirjutamise ja lugemise teed on eraldatud, nii et seda saab piisavalt peenelt seadistada ja vajadusel skaleerida.

Vaatame logide kogumise sĂŒsteemi arhitektuuri ilma detailideta:

Logimine Kuberneteses: EFK versus PLG

Ja siin on kirjeldus (mikroteenuse arhitektuur):

Logimine Kuberneteses: EFK versus PLG

Koostisosad:

Promtail — agent, mis paigaldatakse sĂ”lmedesse (teenuste kogumina), mis salvestab ĂŒlesannete logid ja suhtleb Kubernetes API-ga logide mĂ€rgistamiseks vajalike metadate saamiseks. SeejĂ€rel saadab see logi pĂ”hiteenusele Loki. Metadatee mĂ€rgistamiseks kehtivad samad reeglid nagu Prometheuses.

Jaotaja — jaotusteenus, mis töötab puhvri pĂ”himĂ”ttel. Miljonite kirje töötlemiseks pakib see sissetulevaid andmeid, surudes need blotina kokku nende saabumise ajal. Samal ajal töötab mitu andmete vastuvĂ”tjat, kuid ĂŒhe sissetuleva andmevoo logid peavad olema ainult ĂŒhes neist kĂ”ikides tema blotides. See on korraldatud vastuvĂ”tjate ringina ja jĂ€rjestikuse hĂ€shetimisega. Veatuks ja ĂŒleliigseks rakendatakse seda n korda (3, kui seda ei seadistata).

AndmevastuvĂ”tja — vastuvĂ”tja teenus. Andmeblokid tulevad kokku surutud koos lisatud logidega. Kui blokil on piisavalt suurus, tehakse selle blokeerimine andmebaasi. Metadatee lĂ€heb indeksisse, samas kui logiblokist saadud andmed jĂ”uavad Chunks'isse (tavaliselt objektihoidlas). PĂ€rast blokeerimist loob vastuvĂ”tja uue bloki, kuhu lisatakse uusi kirjeid.

Logimine Kuberneteses: EFK versus PLG

Index — andmebaas, nĂ€iteks DynamoDB, Cassandra, Google BigTable jne.

Chunks — kompaktsed logiblokid, mis on tavaliselt salvestatud objektihoidlas, nagu S3.

KĂŒsija — lugemistee, mis teeb kogu musta töö. See vaatab ajavahemikku ja silte, seejĂ€rel vaatab indeksist vastete leidmiseks. SeejĂ€rel loeb andmeblokke ja filtreerib neid, et saada tulemus.

NĂŒĂŒd vaatame kĂ”ike töös.

Paigaldamine

Kubernetesesse seadistamiseks on kÔige lihtsam kasutada helm'i. Eeldame, et olete selle juba paigaldanud ja seadistatud (ja kolmandat versiooni! tÔlkija mÀrkus)

Lisame hoidla ja paigaldame steigi.

$ 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 andmed Prometheusest Etcd-i mÔÔtmete ja Loki logide jaoks.

Logimine Kuberneteses: EFK versus PLG

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

VÔrdlus

KĂŒsimuste keel

Elasticsearch kasutab Query DSL-i ja Lucene pÀringukeelt, mis vÔimaldavad tÀisteksti otsingut. See on vÀljakujunenud vÔimas otsimootor, millel on lai toetavate operaatorete tugi. Selle abil saab otsida konteksti jÀrgi ja jÀrjekorrastada vastavuse alusel.

Ringis teisel pool on LogQL, mida kasutatakse Lokis, PromQL-i (Prometheuse pÀringukeel) jÀreltulija. See kasutab logimÀrksÔnu logide filterimiseks ja andmete valimiseks. On vÔimalik kasutada mÔningaid operaatorite ja aritmeetika, nagu on kirjeldatud, siin, kuid omaduste poolest jÀÀb see Elasticu keelele alla.

Kuna Loki pÀringud on seotud mÀrksÔnadega, on neid lihtne seostada mÔÔdikute tÔttu, mis teeb operatiivse jÀlgimise korraldamise lihtsamaks.

Skaleeritavus

MÔlemad tehnoloogiad on horisontaalselt skaleeritavad, kuid Loki puhul on see lihtsam, kuna sellel on eraldi andmete lugemise ja kirjutamise teed ning mikroteenuste arhitektuur. Lokit saab kohandada vastavalt teie vajadustele ja seda saab kasutada vÀga suurte logiandmete mahtude jaoks.

MitmeĂŒĂŒrilisus

Klastri mitmeĂŒĂŒrilisus on ĂŒldine teema OPEX-i vĂ€hendamiseks, mĂ”lemad tehnoloogiad toetavad mitmeĂŒĂŒrilisust. Elasticsearchi jaoks on mitmeid viise klientide eraldamiseks: eraldi indeks igale kliendile, kliendi pĂ”hjal navigeerimine, unikaalsed kliendi vĂ€ljad, otsingufiltrid. Lokis on olemas toetamine HTTP pĂ€ises X-Scope-OrgID.

Hind

Loki on majanduslikult vÀga efektiivne, kuna see ei indekseeri andmeid, vaid ainult metaandmeid. Nii saavutatakse salvestusruumi ja mÀlu (vahemÀlu) kokkuhoid, kuna objektide salvestamine on odavam kui plokis, mida kasutatakse Elasticsearchi klastrites.

KokkuvÔte

EFK tehnoloogiat saab kasutada erinevateks eesmĂ€rkideks, pakkudes maksimaalset paindlikkust ja mitmeotstarbelist Kibana liidest analĂŒĂŒtikaks, visualiseerimiseks ja pĂ€ringuteks. Seda saab veelgi tĂ€iustada masinĂ”ppe vĂ”imalustega.

Loki tehnoloogia on Kubernetes'i ökosĂŒsteemis kasulik seoses metaandmete avastamise mehhanismiga. Andmeid on lihtne seostada ajajoonte jĂ€lgimise ja logide pĂ”hjal Grafanas.

Kui rÀÀkida logide sÀilitamise maksumusest ja pikkadest sÀilitamisperioodidest, on Loki suurepÀrane valik pilve lahendustesse sisenemiseks.

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

Lingid:

Artikkel on tĂ”lgitud ja koostatud Habra töötajate poolt Sljörmi koolituskeskusest — intensiivkursused, videokursused ja ettevĂ”tte koolitus praktiseerivatelt spetsialistidelt (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster