pozorovatelnostmikroslužbytěžba dřevamonitorovánícloudová infrastrukturadistribuované systémy
Pozorovatelnost v mikroslužbách vs. protokolování monolitického systému
Sledovatelnost mikroslužeb nabízí distribuované trasování, metriky a protokoly napříč nezávislými službami, zatímco monolitické protokolování se zaměřuje na centralizované záznamy z jedné aplikace. Správná volba závisí na složitosti systému, jeho rozsahu a na tom, kolik informací týmy potřebují k interakcím služeb.
Zvýraznění
Pozorovatelnost mikroslužeb zachází se stopami, metrikami a protokoly jako s rovnocennými signály, zatímco monolitické protokolování se téměř výhradně opírá o textové záznamy.
Distribuované trasování umožňuje týmům přesně určit, která konkrétní služba způsobila selhání, což je něco, s čím se tradiční protokoly potýkají napříč hranicemi služeb.
Monolitická těžba dřeva vyžaduje pro zahájení mnohem méně infrastruktury a odborných znalostí, což ji činí atraktivní pro menší nebo starší systémy.
Pozorovatelnost se škáluje se složitostí systému, zatímco monolitické protokolování má tendenci se s rostoucí velikostí aplikace a provozem zhoršovat.
Co je Pozorovatelnost v mikroslužbách?
Vícerozměrný přístup kombinující trasování, metriky a protokoly pro pochopení chování napříč distribuovanými, nezávisle nasazenými službami.
Postaveno na třech pilířích: distribuované trasování, metriky a strukturované protokolování napříč službami
Používá korelační ID ke sledování jednoho požadavku při přepínání mezi desítkami nebo stovkami služeb.
Pro sběr a vizualizaci dat se spoléhá na nástroje jako OpenTelemetry, Jaeger, Prometheus a Grafana
Navrženo pro práci s dočasnou infrastrukturou, kde se kontejnery a pody neustále otáčejí nahoru a dolů.
Umožňuje týmům SRE detekovat anomálie prostřednictvím cílů na úrovni služeb a rozpočtů chyb.
Co je Monolitický systém protokolování?
Tradiční přístup, kdy jedna aplikace zapisuje položky protokolu do centralizovaných souborů nebo do jednoho úložiště protokolů pro ladění a auditování.
Protokoly pocházejí z jedné kódové základny běžící jako jeden proces, což usnadňuje sledování cest požadavků.
Obvykle používá souborové protokolování, syslog nebo jednoduché agregátory protokolů, jako je Logback nebo log4j.
Ladění obvykle zahrnuje grepping v souborech protokolu nebo dotazování na jednu instanci zásobníku ELK.
Režie výkonu je minimální, protože protokolování probíhá v rámci jednoho běhového prostředí.
Snadnější implementace korelace prostřednictvím lokálního kontextu vlákna nebo jednoduchých ID relací
Srovnávací tabulka
Funkce
Pozorovatelnost v mikroslužbách
Monolitický systém protokolování
Architektura
Distribuováno v mnoha službách
Jedna sjednocená aplikace
Primární datové typy
Trasování, metriky a protokoly
Primárně protokoly, někdy metriky
Žádost o trasování
Distribuované trasování s kontextem rozsahu
Sledování lokálně na úrovni vlákna nebo založené na relaci
Složitost nástrojů
Vysoká – vyžaduje instrumentaci napříč službami
Nízká — stačí jeden protokolovací kanál
Škálovatelnost
Horizontálně se škáluje podle počtu služeb
Omezeno propustností jedné aplikace
Diagnostika selhání
Určuje, která služba způsobila latenci nebo chyby
Snadnější v rámci jednoho procesu, těžší na hranicích
Požadavky na skladování
Vysokoobjemové, často časové řady databází
Střední, obvykle ploché soubory nebo jeden index
Náklady na implementaci
Významná počáteční investice
Nižší počáteční náklady na nastavení
Podrobné srovnání
Základní filozofie a přístup
Pozorovatelnost mikroslužeb předpokládá, že nelze předem předpovědět každý režim selhání, takže shromažďujete dostatek rozmanité telemetrie, abyste mohli klást nové otázky poté, co nastanou problémy. Monolitické protokolování zaujímá jednodušší přístup: zachytit dostatek textových záznamů k rekonstrukci toho, co se stalo během požadavku. První přístup považuje protokoly za jeden signál z mnoha, zatímco druhý považuje protokoly za primární signál pro pochopení chování systému.
Ladění a analýza hlavních příčin
Když se v nastavení mikroslužeb něco pokazí, inženýři se vrhnou do distribuovaných trasování, aby přesně zjistili, která služba způsobila latenci nebo vrátila chybu. V monolitu vývojáři obvykle otevřou soubor protokolu, vyhledají časové razítko nebo ID uživatele a pročítají sekvenční položky. Cesta monolitu se zdá být intuitivnější, ale selže, jakmile systém naroste natolik, že se jeden soubor protokolu stane nepraktickým.
Nástroje a infrastruktura
Zásobníky pozorovatelnosti obvykle kombinují instrumentační knihovnu, jako je OpenTelemetry, trasovací backend, jako je Jaeger nebo Tempo, úložiště metrik, jako je Prometheus, a vrstvu dashboardu, jako je Grafana. Monolitické logování často vyžaduje mnohem méně – framework pro logování, odesílatel logů, jako je Filebeat, a případně cluster ELK nebo OpenSearch. Řetězec nástrojů pro mikroslužby vyžaduje větší provozní vyspělost, ale vyplatí se, když se systémy stávají složitějšími.
Výkon a režijní náklady
Distribuované trasování zvyšuje náklady na síťové přeskakování a serializaci, protože se rozsahy šíří přes hranice služeb, ačkoli strategie vzorkování udržují režijní náklady zvládnutelné. Monolitické protokolování zůstává blízko aplikačního procesu, takže výkon je většinou ovlivněn vstupně-výstupními operacemi disku a formátováním protokolů. Oba přístupy mohou snížit výkon, pokud je protokolování v produkčním prostředí ponecháno na podrobné úrovni, ale prostředí mikroslužeb obvykle vyžadují pečlivější ladění.
Když každý dává smysl
Sledovatelnost vyniká v prostředích s častým nasazením, vícejazyčnými službami a týmy, které potřebují nezávislé vlastnictví komponent. Monolitické protokolování je i nadále spolehlivým řešením pro menší aplikace, starší systémy nebo scénáře, kde dodržování předpisů vyžaduje jednoduché auditní záznamy. Mnoho organizací ve skutečnosti používá obojí – uchovává tradiční protokoly pro dodržování předpisů a zároveň využívá nástroje pro sledovatelnost pro technické pochopení.
Výhody a nevýhody
Pozorovatelnost v mikroslužbách
Výhody
+Plná viditelnost požadavku
+Korelace více signálů
+Škály s komplexností
+Umožňuje postupy SRE
Souhlasím
−Vyšší náklady na nástroje
−Strmější křivka učení
−Více úložných prostor
−Vyžaduje disciplínu v oblasti instrumentace
Monolitický systém protokolování
Výhody
+Jednoduchá implementace
+Nižší provozní náklady
+Známé většině týmů
+Snadná auditní stopa
Souhlasím
−Omezený přehled napříč službami
−Špatně se přizpůsobuje velikosti
−Jediný bod selhání
−Obtížnější korelace událostí
Běžné mýty
Mýtus
Samotné protokoly stačí k ladění jakéhokoli systému.
Realita
Logy fungují dobře pro monolity, ale ztrácejí na efektivitě v distribuovaných systémech, kde se jeden požadavek dotýká mnoha služeb. Metriky a trasování vyplňují mezery tím, že ukazují vzorce a kauzální řetězce, které logy nemohou snadno odhalit.
Mýtus
Pozorovatelnost je jen efektní logování s novým názvem.
Realita
Pozorovatelnost je širší disciplína, která zahrnuje protokoly, ale také přidává metriky a trasování jako signály první třídy. Cíl se přesouvá od vyhledávání záznamů k kladení libovolných otázek o chování systému bez nutnosti odesílání nového kódu.
Mýtus
Monolitické systémy nepotřebují pozorovatelnost.
Realita
I jednotlivé aplikace těží z metrik, trasování a strukturovaných protokolů, jakmile dosáhnou smysluplného rozsahu. Pozorovatelnost spočívá v pochopení stavu systému, což platí bez ohledu na architekturu.
Mýtus
Distribuované trasování je pro produkční použití příliš drahé.
Realita
Moderní trasovací systémy používají vzorkování založené na hlavě nebo ocasu požadavků k zachycení reprezentativní podmnožiny požadavků. To udržuje nízké režijní náklady a zároveň poskytuje dostatek dat pro diagnostiku většiny problémů.
Mýtus
Přechod na mikroslužby automaticky zlepšuje sledovatelnost.
Realita
Mikroslužby ztěžují pozorovatelnost, nikoli ji usnadňují, protože nyní máte k dispozici více pohyblivých částí k monitorování. Bez řádného vybavení a nástrojů se viditelnost ve srovnání s dobře instrumentovaným monolitem ve skutečnosti snižuje.
Často kladené otázky
Jaký je rozdíl mezi pozorovatelností a protokolováním?
Protokolování je jeden typ telemetrických dat – diskrétní události zaznamenávané aplikací. Pozorovatelnost je vlastnost systému, která popisuje, jak dobře lze porozumět jeho vnitřnímu stavu z externích výstupů. Pozorovatelnost využívá protokoly, metriky a trasování společně, zatímco protokolování se zaměřuje pouze na textové záznamy.
Proč mikroslužby potřebují distribuované trasování?
Jeden uživatelský požadavek v architektuře mikroslužeb může před dokončením projít pěti, deseti nebo více službami. Distribuované trasování sleduje tento požadavek napříč hranicemi služeb pomocí korelačních ID a rozsahů, což umožňuje zjistit, kde byl stráven čas a kde vznikly chyby.
Můžete použít tradiční protokolování v prostředí mikroslužeb?
Ano, ale bez sdílených identifikátorů je obtížnější korelovat protokoly napříč službami. Většina týmů přidává strukturované protokolování s korelačními ID a poté trasování vrstev a metriky, aby získala ucelený obraz o chování systému.
Jaké jsou tři pilíře pozorovatelnosti?
Tři pilíře jsou protokoly, metriky a trasování. Protokoly zachycují jednotlivé události, metriky zaznamenávají číselná data v čase a trasování ukazuje cestu požadavku distribuovanými systémy. Společně umožňují týmům odpovídat na otázky týkající se výkonu, chyb a uživatelské zkušenosti.
Je OpenTelemetry standardem pro pozorovatelnost?
OpenTelemetry se stal de facto standardem pro instrumentaci ve většině programovacích jazyků a platforem. Sloučil projekty OpenTracing a OpenCensus a nyní je podporován nadací Cloud Native Computing Foundation s širokou podporou od dodavatelů a nástrojů s otevřeným zdrojovým kódem.
Kolik stojí pozorovatelnost ve srovnání s logováním?
Pozorovatelnost obvykle stojí více kvůli dodatečnému úložišti, licencím na nástroje a času potřebnému k inženýrství instrumentace. Často však zkracuje průměrnou dobu do řešení a zabraňuje nákladným výpadkům, což může vyvážit počáteční investice organizací provozujících složité systémy.
Mají monolity prospěch z nástrojů pro pozorování?
Rozhodně. I jednotlivé aplikace získávají hodnotu z distribuovaného trasování v rámci svého vlastního procesu, z metrik, které odhalují trendy výkonu, a ze strukturovaných protokolů, které se snáze dotazují. Nástroje pro sledování nejsou výhradně určeny pro mikroslužby.
Co je to rozsah (span) v distribuovaném trasování?
Rozsah představuje jednu jednotku práce v rámci trasování, například databázový dotaz nebo HTTP volání mezi službami. Rozsahy mají název, čas zahájení, trvání a metadata a jsou propojeny prostřednictvím vztahů rodič-potomek a tvoří tak kompletní trasování.
Jak korelujete protokoly napříč mikroslužbami?
Týmy obvykle vkládají ID korelace na okraj systému a šíří ho prostřednictvím záhlaví HTTP, metadat zpráv nebo kontextu vláken. Každá služba toto ID zahrnuje do svých záznamů protokolu, takže jedno vyhledávání napříč všemi službami vrátí úplnou cestu požadavku.
Měly by startupy používat pozorovatelnost, nebo se držet protokolování?
Startupy v rané fázi obvykle začínají se strukturovaným protokolováním a základními metrikami, protože se dodávají rychleji a stojí méně. S růstem systému a násobením týmů se pro udržení rychlosti vývoje vyplatí přidat trasování a jednotnou platformu pro sledovatelnost.
Rozhodnutí
Pokud váš systém zahrnuje mnoho nezávislých služeb a potřebujete v reálném čase porozumět interakcím mezi službami, zvolte pozorovatelnost mikroslužeb. Pro jednodušší aplikace, kde centralizované záznamy poskytují dostatečný přehled a provozní režie je důležitější než detailní informace, se držte monolitického protokolování. V praxi zralé systémy často kombinují oba přístupy, místo aby se plně zavázaly k jednomu.