Přihlášení Kubernetes: EFK vs. PLG

Přihlášení Kubernetes: EFK vs. PLG

Monitoring se stal velmi důležitou součástí rostoucích cloudových řešení s rostoucí složitostí distribuovaných systémů. Je nutné pochopit jejich chování. Potřebujeme škálovatelné nástroje, které dokážou shromažďovat data ze všech služeb – a poskytují specialistům jediné rozhraní s analýzou výkonu, demonstrací chyb, dostupností a protokoly.

Tyto stejné nástroje musí být účinné a produktivní. V tomto článku se podíváme na dva oblíbené technologické zásobníky: EFK (Elasticsearch) a PLG (Loki) a analyzujeme jejich architektury a rozdíly.

Zásobník EFK

Možná jste již slyšeli o velmi oblíbeném ELK nebo EFK. Zásobník se skládá z několika samostatných částí: Elasticsearch (ukládání objektů), Logstash nebo FluentD (sběr a agregace protokolů) a Kibana pro vizualizaci.

Typický pracovní postup vypadá takto:

Přihlášení Kubernetes: EFK vs. PLG

Elastickýsearch — distribuované úložiště objektů s vyhledáváním a analýzou v reálném čase. Vynikající řešení pro polostrukturovaná data, jako jsou protokoly. Informace jsou uloženy jako dokumenty JSON, indexovány v reálném čase a distribuovány mezi uzly clusteru. Používá se invertovaný index obsahující všechna jedinečná slova a související dokumenty pro fulltextové vyhledávání, který je zase založen na vyhledávači Apache Lucene.

FluentD je sběrač dat, který sjednocuje data při jejich shromažďování a spotřebě. Snaží se co nejvíce uspořádat data v JSON. Jeho architektura je rozšiřitelná, je jich více stovky různých rozšíření, podporované komunitou, pro všechny příležitosti.

Kibana je nástroj pro vizualizaci dat pro Elasticsearch s různými doplňkovými funkcemi, jako je analýza časových řad, grafy, strojové učení a další.

Architektura Elasticsearch

Data clusteru Elasticsearch jsou uložena napříč všemi jeho uzly. Cluster se skládá z více uzlů pro zlepšení dostupnosti a odolnosti. Každý uzel může vykonávat všechny role clusteru, ale ve velkých, škálovatelných nasazeních jsou uzlům obvykle přiřazeny jednotlivé úkoly.

Typy uzlů clusteru:

  • master node - spravuje cluster, potřebujete alespoň tři, jeden je vždy aktivní;
  • datový uzel - ukládá indexovaná data a provádí s nimi různé úkoly;
  • ingest uzel - organizuje potrubí pro transformaci dat před indexováním;
  • koordinační uzel - směrování požadavků, snížení fáze zpracování vyhledávání, koordinace hromadného indexování;
  • varovný uzel - spouštění oznamovacích úloh;
  • uzel strojového učení - zpracování úloh strojového učení.

Níže uvedený diagram ukazuje, jak se data uchovávají a replikují mezi uzly, aby se dosáhlo vyšší dostupnosti dat.

Přihlášení Kubernetes: EFK vs. PLG

Data každé repliky jsou uložena v obráceném indexu, níže uvedený diagram ukazuje, jak se to stane:

Přihlášení Kubernetes: EFK vs. PLG

Instalace

Podrobnosti lze zobrazit zde, použiji tabulku kormidla:

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

Zásobník PLG

Nedivte se, že tuto zkratku nenajdete, protože je známější jako Grafana Loki. V každém případě si tento stack získává na oblibě, protože využívá dobře nastavená technická řešení. Možná jste již slyšeli o Grafaně, oblíbeném vizualizačním nástroji. Jeho tvůrci, inspirovaní Prometheem, vyvinuli Loki, horizontálně škálovatelný, vysoce výkonný systém agregace protokolů. Loki indexuje pouze metadata, nikoli samotné časopisy, toto technické řešení umožnilo snadné použití a nákladově efektivní.

Promtail - agent pro odesílání protokolů z operačního systému do clusteru Loki. grafana je vizualizační nástroj založený na datech od Loki.

Přihlášení Kubernetes: EFK vs. PLG

Loki je postaven na stejných principech jako Prometheus, takže se dobře hodí pro ukládání a analýzu protokolů Kubernetes.

Loki architektura

Loki lze spustit jako jeden proces nebo jako více procesů, což umožňuje horizontální škálování.

Přihlášení Kubernetes: EFK vs. PLG

Může také fungovat jako monolitická aplikace i jako mikroslužba. Běh jako jediný proces může být užitečný pro místní rozvoj nebo pro jemnozrnné monitorování. Pro průmyslovou implementaci a škálovatelné pracovní zatížení se doporučuje použít možnost mikroslužby. Cesty pro zápis a čtení dat jsou odděleny, takže je lze podle potřeby jemně ladit a škálovat.

Podívejme se na architekturu systému sběru protokolů bez podrobností:

Přihlášení Kubernetes: EFK vs. PLG

A zde je popis (architektura mikroslužeb):

Přihlášení Kubernetes: EFK vs. PLG

Složky:

Promtail - agent nainstalovaný na uzlech (jako sada služeb), odstraňuje protokoly z úloh a přistupuje k rozhraní Kubernetes API, aby získal metadata, která budou použita k označení protokolů. Poté odešle protokol do hlavní služby Loki. Pro shodu metadat jsou podporována stejná pravidla označování jako v Prometheus.

Distributor - distributor služeb, pracující jako vyrovnávací paměť. Pro zpracování milionů záznamů balí příchozí data a při příchodu je komprimuje do bloků. Ve stejnou dobu běží více datových jímek, ale protokoly patřící ke stejnému příchozímu datovému toku by měly končit pouze v jednom z nich pro všechny jeho bloky. To je organizováno jako kruh přijímačů a sekvenční hashování. Pro odolnost proti chybám a redundanci se to provádí nkrát (3, pokud není nakonfigurováno).

požírat — servisní přijímač. Datové bloky jsou komprimovány s přidanými protokoly. Jakmile má blok dostatečnou velikost, blok se vyprázdní do databáze. Metadata jdou do indexu a data z bloku protokolu jdou do Chunks (obvykle úložiště objektů). Po resetu přijímač vytvoří nový blok, do kterého budou přidány nové záznamy.

Přihlášení Kubernetes: EFK vs. PLG

index - databáze, DynamoDB, Cassandra, Google BigTable a další.

Kusy - bloky protokolů v komprimované podobě, obvykle uložené v úložišti objektů, například S3.

Dotazovatel je čtecí cesta, která dělá všechnu špinavou práci. Podívá se na časový rozsah a časové razítko a poté se podívá do indexu a hledá shody. Dále čte bloky dat a filtruje je, aby získal výsledek.

Nyní se podívejme, jak vše funguje.

Instalace

Nejjednodušší způsob instalace na Kubernetes je použít helm. Předpokládáme, že jste jej již nainstalovali a nakonfigurovali (a třetí verze! Cca. překladatel)

Přidáme úložiště a vložíme 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

Níže je ukázkový řídicí panel zobrazující data z Prometheus pro Etcd a metriky Loki pro protokoly Etcd pod.

Přihlášení Kubernetes: EFK vs. PLG

A nyní pojďme diskutovat o architektuře obou systémů a také porovnat jejich možnosti mezi sebou.

Porovnání

Dotazovací jazyk

Elasticsearch používá dotazovací jazyk Query DSL a Lucene k poskytování možnosti fulltextového vyhledávání. Jde o zavedený výkonný vyhledávač s širokou podporou operátorů. S ním můžete vyhledávat podle kontextu a třídit podle relevance.

Na druhé straně kruhu je Lokiho LogQL, nástupce PromQL (Prometheus dotazovací jazyk). K filtrování a výběru dat protokolu používá štítky protokolů. Je možné použít některé operátory a aritmetiku, jak je popsáno zde, ale ve schopnostech zaostává za jazykem Elastic.

Vzhledem k tomu, že požadavky v Loki jsou spojeny se štítky, lze je snadno korelovat s metrikami, v důsledku toho je snazší s nimi organizovat provozní monitorování.

Škálovatelnost

Oba zásobníky jsou horizontálně škálovatelné, ale s Loki je to jednodušší, protože má oddělené cesty pro čtení a zápis a má architekturu mikroslužeb. Loki lze přizpůsobit vašim potřebám a lze jej použít pro velmi velké objemy dat protokolu.

Vícenájem

Cluster multi-tenancy je společným tématem pro snížení OPEX, oba zásobníky poskytují multi-tenancy. Existuje několik pro Elasticsearch způsoby oddělení zákazníků: samostatný index na zákazníka, směrování podle zákazníka, jedinečná pole zákazníka, filtry vyhledávání. Loki má podpora jako HTTP hlavička X-Scope-OrgID.

Stát

Loki je velmi nákladově efektivní díky skutečnosti, že neindexuje data, pouze metadata. Tím pádem, úspory skladování a paměť (cache), protože objektové úložiště je levnější než blokové úložiště, které se používá v clusterech Elasticsearch.

Závěr

Zásobník EFK lze použít pro různé účely, poskytuje maximální flexibilitu a bohaté rozhraní Kibana pro analýzy, vizualizaci a dotazy. Lze jej dále vylepšit pomocí možností strojového učení.

Zásobník Loki je užitečný v ekosystému Kubernetes kvůli mechanismu zjišťování metadat. Data pro sledování můžete snadno korelovat na základě časových řad v Grafaně a protokolů.

Pokud jde o náklady a dlouhodobé uchovávání protokolů, Loki je vynikající volbou pro vstup do cloudu.

Na trhu je více alternativ – některé mohou být pro vás lepší. Například GKE má integraci Stackdriver, která poskytuje skvělé řešení monitorování. Do naší analýzy v tomto článku jsme je nezahrnuli.

Odkazy:

Článek přeložili a pro Habra připravili zaměstnanci Tréninkové centrum slurmu — intenzivní, video kurzy a firemní školení od praktiků (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Zdroj: www.habr.com

Přidat komentář