pozorovateľnosťmikroslužbyťažba drevamonitorovaniecloudová infraštruktúradistribuované systémy
Pozorovateľnosť v mikroslužbách vs. monolitické systémové protokolovanie
Pozorovateľnosť mikroslužieb ponúka distribuované sledovanie, metriky a protokoly naprieč nezávislými službami, zatiaľ čo monolitické protokolovanie sa zameriava na centralizované záznamy z jednej aplikácie. Správna voľba závisí od zložitosti systému, rozsahu a toho, koľko informácií tímy potrebujú o interakciách služieb.
Zvýraznenia
Pozorovateľnosť mikroslužieb považuje stopy, metriky a protokoly za rovnocenné signály, zatiaľ čo monolitické protokolovanie sa takmer výlučne opiera o textové záznamy.
Distribuované sledovanie umožňuje tímom presne určiť, ktorá konkrétna služba spôsobila zlyhanie, s čím majú tradičné protokoly problémy naprieč hranicami služieb.
Monolitická ťažba dreva vyžaduje na spustenie oveľa menej infraštruktúry a odborných znalostí, čo ju robí atraktívnou pre menšie alebo staršie systémy.
Pozorovateľnosť sa škáluje so zložitosťou systému, zatiaľ čo monolitické protokolovanie má tendenciu sa zhoršovať s rastúcou veľkosťou aplikácie a prevádzkou.
Čo je Pozorovateľnosť v mikroslužbách?
Viacrozmerný prístup kombinujúci sledovania, metriky a protokoly na pochopenie správania v rámci distribuovaných, nezávisle nasadených služieb.
Postavené na troch pilieroch: distribuované sledovanie, metriky a štruktúrované protokolovanie naprieč službami
Používa korelačné ID na sledovanie jednej požiadavky pri prepínaní medzi desiatkami alebo stovkami služieb
Na zber a vizualizáciu údajov sa spolieha na nástroje ako OpenTelemetry, Jaeger, Prometheus a Grafana
Navrhnuté na spracovanie prchavej infraštruktúry, kde sa kontajnery a pody neustále otáčajú hore a dole
Umožňuje tímom SRE odhaľovať anomálie prostredníctvom cieľov na úrovni služieb a rozpočtov chýb.
Čo je Monolitické systémové protokolovanie?
Tradičný prístup, kde jedna aplikácia zapisuje položky protokolu do centralizovaných súborov alebo do jedného úložiska protokolov na ladenie a auditovanie.
Záznamy pochádzajú z jednej kódovej základne spustenej ako jeden proces, vďaka čomu je sledovanie ciest požiadaviek jednoduché.
Zvyčajne používa protokolovanie založené na súboroch, syslog alebo jednoduché agregátory protokolov ako Logback alebo log4j
Ladenie zvyčajne zahŕňa prehľadávanie protokolových súborov alebo dotazovanie jednej inštancie zásobníka ELK
Režijné náklady na výkon sú minimálne, pretože protokolovanie prebieha v rámci jedného prostredia runtime.
Jednoduchšia implementácia korelácie prostredníctvom lokálneho kontextu vlákna alebo jednoduchých ID relácie
Tabuľka porovnania
Funkcia
Pozorovateľnosť v mikroslužbách
Monolitické systémové protokolovanie
Architektúra
Distribuované v mnohých službách
Jedna zjednotená aplikácia
Primárne dátové typy
Trasovanie, metriky a protokoly
Primárne protokoly, niekedy metriky
Žiadosť o sledovanie
Distribuované sledovanie s kontextom rozsahu
Sledovanie lokálne na úrovni vlákna alebo na základe relácie
Zložitosť nástrojov
Vysoká – vyžaduje si inštrumentáciu naprieč službami
Nízka — postačuje jeden protokolový kanál
Škálovateľnosť
Horizontálne škálovanie podľa počtu služieb
Obmedzené priepustnosťou jednej aplikácie
Diagnostika zlyhania
Identifikuje, ktorá služba spôsobila latenciu alebo chyby
Jednoduchšie v rámci jedného procesu, ťažšie na hraniciach
Požiadavky na skladovanie
Vysokoobjemové, často časové radové databázy
Stredne veľké, zvyčajne ploché súbory alebo jeden index
Náklady na implementáciu
Významná počiatočná investícia
Nižšie počiatočné náklady na nastavenie
Podrobné porovnanie
Základná filozofia a prístup
Pozorovateľnosť mikroslužieb predpokladá, že nemôžete vopred predpovedať každý režim zlyhania, takže zhromažďujete dostatok rozmanitej telemetrie, aby ste mohli klásť nové otázky po výskyte problémov. Monolitické protokolovanie zaujíma jednoduchší prístup: zachytiť dostatok textových záznamov na rekonštrukciu toho, čo sa stalo počas požiadavky. Prvý prístup považuje protokoly za jeden signál z mnohých, zatiaľ čo druhý považuje protokoly za primárny signál pre pochopenie správania systému.
Ladenie a analýza základných príčin
Keď sa v nastavení mikroslužieb niečo pokazí, inžinieri sa pustia do distribuovaných sledovaní, aby presne zistili, ktorá služba spôsobila latenciu alebo vrátila chybu. V monolite vývojári zvyčajne otvoria súbor denníka, vyhľadajú časovú pečiatku alebo ID používateľa a prečítajú si postupné položky. Monolitná cesta sa zdá byť intuitívnejšia, ale prestane fungovať, keď systém narastie natoľko, že jeden súbor denníka sa stane nepraktickým.
Nástroje a infraštruktúra
Zásobníky pozorovateľnosti zvyčajne kombinujú inštrumentačnú knižnicu ako OpenTelemetry, sledovací backend ako Jaeger alebo Tempo, úložisko metrík ako Prometheus a vrstvu dashboardu ako Grafana. Monolitické logovanie často vyžaduje oveľa menej – framework pre logovanie, odosielateľ logov ako Filebeat a možno klaster ELK alebo OpenSearch. Reťazec nástrojov pre mikroslužby vyžaduje vyššiu operačnú zrelosť, ale oplatí sa, keď sa systémy stanú zložitejšími.
Výkon a réžia
Distribuované sledovanie zvyšuje náklady na sieťové skoky a serializáciu, pretože rozsahy sa šíria cez hranice služieb, hoci stratégie vzorkovania udržiavajú réžiu zvládnuteľnú. Monolitické protokolovanie zostáva blízko aplikačného procesu, takže výkon je ovplyvnený najmä vstupno-výstupnými operáciami disku a formátovaním protokolov. Oba prístupy môžu znížiť výkon, ak sa protokolovanie v produkčnom prostredí ponechá na podrobnej úrovni, ale prostredia mikroslužieb zvyčajne vyžadujú starostlivejšie ladenie.
Keď každé dáva zmysel
Pozorovateľnosť vyniká v prostrediach s častým nasadením, viacjazyčnými službami a tímami, ktoré potrebujú nezávislé vlastníctvo komponentov. Monolitické protokolovanie zostáva skvelou voľbou pre menšie aplikácie, staršie systémy alebo scenáre, kde dodržiavanie predpisov vyžaduje jednoduché audítorské záznamy. Mnohé organizácie v skutočnosti používajú oboje – tradičné protokoly uchovávajú na účely dodržiavania predpisov a zároveň používajú nástroje na sledovanie pre inžiniersky prehľad.
Výhody a nevýhody
Pozorovateľnosť v mikroslužbách
Výhody
+Úplná viditeľnosť žiadosti
+Korelácia viacerých signálov
+Škály s komplexnosťou
+Umožňuje postupy SRE
Cons
−Vyššie náklady na nástroje
−Strmšia krivka učenia
−Vyššie réžie úložiska
−Vyžaduje si disciplínu v oblasti prístrojového vybavenia
Monolitické systémové protokolovanie
Výhody
+Jednoduchá implementácia
+Nižšie prevádzkové náklady
+Známe väčšine tímov
+Jednoduchá audítorská stopa
Cons
−Obmedzený prehľad o viacerých službách
−Zle sa prispôsobuje veľkosti
−Jediný bod zlyhania
−Ťažšie korelovať udalosti
Bežné mylné predstavy
Mýtus
Samotné protokoly stačia na ladenie akéhokoľvek systému.
Realita
Záznamy fungujú dobre pre monolity, ale strácajú na účinnosti v distribuovaných systémoch, kde sa jedna požiadavka dotýka mnohých služieb. Metriky a stopy vypĺňajú medzery tým, že zobrazujú vzory a kauzálne reťazce, ktoré záznamy nedokážu ľahko odhaliť.
Mýtus
Pozorovateľnosť je len efektné logovanie s novým názvom.
Realita
Pozorovateľnosť je širšia disciplína, ktorá zahŕňa protokoly, ale pridáva aj metriky a stopy ako prvotriedne signály. Cieľ sa presúva z vyhľadávania záznamov na kladenie ľubovoľných otázok o správaní systému bez dodania nového kódu.
Mýtus
Monolitické systémy nevyžadujú pozorovateľnosť.
Realita
Aj jednotlivé aplikácie profitujú z metrík, sledovaní a štruktúrovaných protokolov, keď dosiahnu zmysluplný rozsah. Pozorovateľnosť sa týka pochopenia stavu systému, čo platí bez ohľadu na architektúru.
Mýtus
Distribuované sledovanie je príliš drahé na produkčné použitie.
Realita
Moderné sledovacie systémy používajú vzorkovanie založené na hlave alebo chvoste požiadaviek na zachytenie reprezentatívnej podmnožiny požiadaviek. To udržiava nízke réžijné náklady a zároveň poskytuje dostatok údajov na diagnostiku väčšiny problémov.
Mýtus
Prechod na mikroslužby automaticky zlepšuje pozorovateľnosť.
Realita
Mikroslužby sťažujú pozorovateľnosť, nie ju uľahčujú, pretože teraz máte viac pohyblivých častí na monitorovanie. Bez správneho vybavenia a nástrojov sa viditeľnosť v porovnaní s dobre vybaveným monolitom v skutočnosti znižuje.
Často kladené otázky
Aký je rozdiel medzi pozorovateľnosťou a logovaním?
Záznamy sú jedným z typov telemetrických údajov – diskrétne udalosti zaznamenávané aplikáciou. Pozorovateľnosť je vlastnosť systému, ktorá opisuje, ako dobre dokážete pochopiť jeho vnútorný stav z externých výstupov. Pozorovateľnosť využíva spoločne záznamy, metriky a stopy, zatiaľ čo záznamy sa zameriavajú iba na textové záznamy.
Prečo mikroslužby potrebujú distribuované sledovanie?
Jedna požiadavka používateľa v architektúre mikroslužieb môže pred dokončením prejsť cez päť, desať alebo viac služieb. Distribuované sledovanie sleduje túto požiadavku naprieč hranicami služieb pomocou korelačných ID a rozsahov, čo umožňuje zistiť, kde bol strávený čas a kde vznikli zlyhania.
Môžete použiť tradičné protokolovanie v prostredí mikroslužieb?
Áno, ale bez zdieľaných identifikátorov je ťažšie korelovať protokoly medzi službami. Väčšina tímov pridáva štruktúrované protokolovanie s korelačnými ID, potom sledovanie vrstiev a metriky, aby získali úplný obraz o správaní systému.
Aké sú tri piliere pozorovateľnosti?
Tri piliere sú protokoly, metriky a stopy. Protokoly zachytávajú jednotlivé udalosti, metriky zaznamenávajú číselné údaje v priebehu času a stopy zobrazujú cestu požiadavky cez distribuované systémy. Spoločne umožňujú tímom odpovedať na otázky týkajúce sa výkonu, chýb a používateľskej skúsenosti.
Je OpenTelemetry štandardom pre pozorovateľnosť?
OpenTelemetry sa stal de facto štandardom pre inštrumentáciu vo väčšine jazykov a platforiem. Zlúčil projekty OpenTracing a OpenCensus a teraz je podporovaný nadáciou Cloud Native Computing Foundation so širokou podporou od dodávateľov a nástrojov s otvoreným zdrojovým kódom.
Koľko stojí pozorovateľnosť v porovnaní s logovaním?
Pozorovateľnosť zvyčajne stojí viac kvôli dodatočnému úložisku, licenciám na nástroje a času potrebnému na inžinierstvo. Často však skracuje priemerný čas do riešenia a zabraňuje nákladným výpadkom, čo môže vyvážiť počiatočné investície pre organizácie prevádzkujúce zložité systémy.
Prospievajú monolitom nástroje na pozorovanie?
Rozhodne. Dokonca aj jednotlivé aplikácie získavajú hodnotu z distribuovaného sledovania v rámci vlastného procesu, z metrík, ktoré odhaľujú trendy výkonu, a zo štruktúrovaných protokolov, ktoré sa ľahšie dotazujú. Nástroje na sledovanie nie sú výhradne pre mikroslužby.
Čo je to rozsah v distribuovanom sledovaní?
Rozsah predstavuje jednu jednotku práce v rámci sledovania, ako napríklad databázový dotaz alebo HTTP volanie medzi službami. Rozsahy majú názov, čas začiatku, trvanie a metadáta a sú prepojené prostredníctvom vzťahov rodič-dieťa, čím vytvárajú kompletné sledovanie.
Ako korelujete protokoly medzi mikroslužbami?
Tímy zvyčajne vkladajú ID korelácie na okraj systému a šíria ho prostredníctvom hlavičiek HTTP, metadát správ alebo kontextu vlákien. Každá služba obsahuje toto ID vo svojich záznamoch protokolu, takže jedno vyhľadávanie vo všetkých službách vráti úplnú cestu požiadavky.
Mali by startupy používať pozorovateľnosť alebo sa držať protokolovania?
Startupy v ranom štádiu zvyčajne začínajú so štruktúrovaným protokolovaním a základnými metrikami, pretože sa dodávajú rýchlejšie a stoja menej. S rastom systému a množením tímov sa pridanie sledovania a jednotnej platformy pozorovateľnosti stáva výhodným pre udržanie rýchlosti vývoja.
Rozsudok
Zvoľte si pozorovateľnosť mikroslužieb, keď váš systém zahŕňa mnoho nezávislých služieb a potrebujete porozumieť interakciám medzi službami v reálnom čase. Pre jednoduchšie aplikácie, kde centralizované záznamy poskytujú dostatočný prehľad a prevádzkové náklady sú dôležitejšie ako podrobný prehľad, sa držte monolitického protokolovania. V praxi zrelé systémy často kombinujú oba prístupy, namiesto toho, aby sa plne zaviazali k jednému.