Prihlásenie Kubernetes: EFK vs PLG

Prihlásenie Kubernetes: EFK vs PLG

Monitorovanie sa stalo veľmi dôležitou súčasťou rastúcich cloudových riešení, pretože zložitosť distribuovaných systémov sa zvyšuje. Je potrebné pochopiť ich správanie. Potrebujeme škálovateľné nástroje, ktoré dokážu zbierať údaje zo všetkých služieb – a poskytujú špecialistom jednotné rozhranie s analýzou výkonu, demonštráciou chýb, dostupnosťou a protokolmi.

Tie isté nástroje musia byť efektívne a produktívne. V tomto článku sa pozrieme na dva populárne technologické zásobníky: EFK (Elasticsearch) a PLG (Loki) a preskúmame ich architektúry a rozdiely.

zásobník EFK

Možno ste už počuli o veľmi obľúbenom ELK alebo EFK. Zásobník pozostáva z niekoľkých samostatných častí: Elasticsearch (ukladanie objektov), ​​Logstash alebo FluentD (zber a agregácia protokolov) a Kibana na vizualizáciu.

Typický pracovný postup vyzerá takto:

Prihlásenie Kubernetes: EFK vs PLG

ElasticSearch — distribuované ukladanie objektov s vyhľadávaním a analýzou v reálnom čase. Vynikajúce riešenie pre pološtruktúrované dáta, ako sú protokoly. Informácie sa ukladajú ako dokumenty JSON, indexujú sa v reálnom čase a distribuujú sa medzi uzlami klastra. Používa sa invertovaný index, ktorý obsahuje všetky jedinečné slová a súvisiace dokumenty pre fulltextové vyhľadávanie, ktoré je zase založené na vyhľadávači Apache Lucene.

FluentD je dátový kolektor, ktorý zjednocuje dáta pri ich zbere a spotrebe. Snaží sa čo najviac usporiadať dáta v JSON. Jeho architektúra je rozšíriteľná, je ich viac stovky rôznych rozšírení, podporované komunitou, pre všetky príležitosti.

Kibana - nástroj na vizualizáciu dát pre Elasticsearch s rôznymi doplnkovými funkciami, napríklad analýzou časových radov, grafovou analýzou, strojovým učením a ďalšími.

Architektúra elastického vyhľadávania

Údaje o klastri Elasticsearch sú uložené vo všetkých jeho uzloch. Klaster pozostáva z viacerých uzlov na zlepšenie dostupnosti a odolnosti. Každý uzol môže vykonávať všetky úlohy klastra, ale vo veľkých nasadeniach sú uzlom zvyčajne priradené jednotlivé úlohy.

Typy uzlov klastra:

  • master node - spravuje klaster, sú potrebné aspoň tri, jeden je vždy aktívny;
  • dátový uzol - ukladá indexované dáta a vykonáva s nimi rôzne úlohy;
  • prijímací uzol - organizuje kanály na transformáciu údajov pred indexovaním;
  • koordinačný uzol - smerovanie požiadaviek, skrátenie fázy spracovania vyhľadávania, koordinácia hromadného indexovania;
  • varovný uzol — spustenie varovných úloh;
  • uzol strojového učenia – spracovanie úloh strojového učenia.

Nižšie uvedený diagram ukazuje, ako sa údaje ukladajú a replikujú medzi uzlami, aby sa dosiahla vyššia dostupnosť údajov.

Prihlásenie Kubernetes: EFK vs PLG

Údaje každej repliky sú uložené v invertovanom indexe, nižšie uvedený diagram ukazuje, ako sa to stane:

Prihlásenie Kubernetes: EFK vs PLG

Inštalácia

Podrobnosti je možné zobraziť tu, použijem tabuľku kormidla:

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

zásobník PLG

Nebuďte prekvapení, ak túto skratku nenájdete, keďže je známejšia ako Grafana Loki. V každom prípade si tento zásobník získava na popularite, pretože využíva osvedčené technické riešenia. Možno ste už počuli o Grafane, populárnom vizualizačnom nástroji. Jeho tvorcovia, inšpirovaní Prometheusom, vyvinuli Loki, horizontálne škálovateľný, vysoko výkonný systém agregácie protokolov. Loki indexuje iba metadáta, nie samotné žurnály, čo je technické riešenie, ktoré umožňuje jednoduché používanie a nákladovo efektívne.

Promtail - agent na odosielanie protokolov z operačného systému do klastra Loki. grafana je vizualizačný nástroj založený na údajoch od Loki.

Prihlásenie Kubernetes: EFK vs PLG

Loki je postavený na rovnakých princípoch ako Prometheus, vďaka čomu je vhodný na ukladanie a analýzu protokolov Kubernetes.

Loki architektúra

Loki môže byť spustený buď ako jeden proces alebo ako viacero procesov, čo umožňuje horizontálne škálovanie.

Prihlásenie Kubernetes: EFK vs PLG

Môže tiež fungovať buď ako monolitická aplikácia alebo ako mikroslužba. Beh ako jeden proces môže byť užitočný pre miestny rozvoj alebo pre menšie monitorovanie. Pre priemyselnú implementáciu a škálovateľné pracovné zaťaženie sa odporúča použiť možnosť mikroservisu. Cesty pre zápis a čítanie dát sú oddelené, takže ho možno jemne doladiť a škálovať podľa potreby.

Pozrime sa na architektúru systému zberu protokolov bez toho, aby sme zachádzali do detailov:

Prihlásenie Kubernetes: EFK vs PLG

A tu je popis (architektúra mikroslužieb):

Prihlásenie Kubernetes: EFK vs PLG

Komponenty:

Promtail — agent nainštalovaný na uzloch (ako sada služieb), odstraňuje protokoly z úloh a pristupuje k Kubernetes API, aby získal metadáta, ktoré budú protokoly označovať. Potom odošle protokol do hlavnej služby Loki. Mapovanie metadát podporuje rovnaké pravidlá označovania ako Prometheus.

Distribútor — distribútor služieb, ktorý funguje ako nárazník. Na spracovanie miliónov záznamov zbalí prichádzajúce údaje a po príchode ich komprimuje do blokov. Súbežne je spustených niekoľko dátových záchytiek, ale denníky patriace do jedného prichádzajúceho dátového toku by sa mali objaviť iba v jednom z nich pre všetky jeho bloky. Toto je organizované do kruhu umývadiel a sekvenčného hashovania. Kvôli odolnosti voči chybám a redundancii sa to robí n-krát (3, ak nie je nakonfigurované).

Ingester — servisný prijímač. Dátové bloky prichádzajú komprimované s pridanými protokolmi. Keď má blok dostatočnú veľkosť, blok sa vyprázdni do databázy. Metadáta idú do indexu a údaje z bloku protokolu idú do Chunks (zvyčajne objektové úložisko). Po resete prijímač vytvorí nový blok, do ktorého budú pridané nové položky.

Prihlásenie Kubernetes: EFK vs PLG

index - databáza, DynamoDB, Cassandra, Google BigTable atď.

kúsky — protokolové bloky v komprimovanej forme, zvyčajne uložené v objektovom úložisku, napríklad S3.

Querier - čítacia cesta, ktorá robí všetku špinavú prácu. Pozerá sa na časový rozsah a časovú pečiatku a potom sa pozrie na index, aby našiel zhody. Ďalej číta bloky údajov a filtruje ich, aby získal výsledok.

Teraz sa pozrime na všetko v akcii.

Inštalácia

Najjednoduchší spôsob inštalácie v Kubernetes je použiť kormidlo. Predpokladáme, že ste ho už nainštalovali a nakonfigurovali (a tretia verzia! približne. prekladateľ)

Pridajte úložisko a nainštalujte zásobník.

$ 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

Nižšie je uvedený príklad dashboardu zobrazujúci údaje z Prometheus pre metriky Etcd a Loki pre protokoly pod Etcd.

Prihlásenie Kubernetes: EFK vs PLG

Teraz poďme diskutovať o architektúre oboch systémov a tiež porovnajme ich schopnosti navzájom.

Сравнение

Jazyk dopytu

Elasticsearch využíva dotazovací jazyk Query DSL a Lucene na poskytovanie možností fulltextového vyhľadávania. Je to zavedený, výkonný vyhľadávač so širokou podporou operátorov. Pomocou neho môžete vyhľadávať podľa kontextu a triediť podľa relevantnosti.

Na druhej strane kruhu je LogQL, používaný v Loki, nástupcovi PromQL (Prometheus dotazovací jazyk). Používa značky denníka na filtrovanie a výber údajov denníka. Je možné použiť niektoré operátory a aritmetiku, ako je opísané tu, ale z hľadiska schopností zaostáva za jazykom Elastic.

Keďže dopyty v Loki sú spojené so značkami, dajú sa ľahko korelovať s metrikami a v dôsledku toho sa s nimi ľahšie organizuje prevádzkové monitorovanie.

Škálovateľnosť

Oba zásobníky sú horizontálne škálovateľné, ale Loki to uľahčuje, pretože má oddelené cesty na čítanie a zápis a architektúru mikroslužieb. Loki môže byť prispôsobený vašim potrebám a môže byť použitý pre veľmi veľké objemy log dát.

Viacnásobný nájom

Cluster multitenancy je spoločná téma v skratke OPEX, oba zásobníky poskytujú multitenancy. Pre Elasticsearch je ich niekoľko spôsoby oddelenie klientov: samostatný index pre každého klienta, smerovanie na základe klienta, jedinečné polia klienta, filtre vyhľadávania. Loki má podpora vo forme hlavičky HTTP X-Scope-OrgID.

Štát

Loki je pomerne nákladovo efektívny, pretože neindexuje údaje, ale iba metadáta. Tým sa dosiahne úspory na skladovaní a pamäť (cache), keďže ukladanie objektov je lacnejšie ako blokové úložisko, ktoré sa používa v klastroch Elasticsearch.

Záver

Zásobník EFK možno použiť na rôzne účely, pričom poskytuje maximálnu flexibilitu a rozhranie Kibana bohaté na funkcie pre analýzy, vizualizáciu a dotazy. Môže byť ďalej vylepšený schopnosťami strojového učenia.

Zásobník Loki je užitočný v ekosystéme Kubernetes kvôli mechanizmu zisťovania metadát. Dáta pre sledovanie môžete jednoducho korelovať na základe časových radov v Grafane a protokoloch.

Pokiaľ ide o náklady a dlhodobé ukladanie protokolov, Loki je vynikajúcim vstupným bodom do cloudových riešení.

Na trhu je viac alternatív – niektoré môžu byť pre vás lepšie. Napríklad GKE má integráciu Stackdriver, ktorá poskytuje vynikajúce riešenie monitorovania. Do našej analýzy v tomto článku sme ich nezahrnuli.

odkazy:

Článok preložili a pre Habra pripravili zamestnanci Tréningové centrum slurmu — intenzívne kurzy, video kurzy a firemné školenia od praktizujúcich špecialistov (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Zdroj: hab.com

Pridať komentár