opaznostmikrostoritvesečnjaspremljanjeinfrastruktura v oblakuporazdeljeni sistemi
Opazljivost v mikroservisih v primerjavi z monolitnim sistemskim beleženjem
Opazovanje mikroservisov ponuja porazdeljeno sledenje, metrike in dnevnike med neodvisnimi storitvami, medtem ko se monolitno beleženje osredotoča na centralizirane zapise iz ene same aplikacije. Prava izbira je odvisna od kompleksnosti sistema, obsega in tega, koliko vpogleda v interakcije storitev potrebujejo ekipe.
Poudarki
Opazovalnost mikroservisov obravnava sledi, metrike in dnevnike kot enakovredne signale, medtem ko se monolitno beleženje skoraj v celoti opira na besedilne zapise.
Porazdeljeno sledenje omogoča ekipam, da natančno določijo, katera storitev je povzročila napako, s čimer se tradicionalni dnevniki spopadajo prek meja storitev.
Monolitna sečnja zahteva veliko manj infrastrukture in strokovnega znanja za začetek, zaradi česar je privlačna za manjše ali starejše sisteme.
Opazljivost se povečuje s kompleksnostjo sistema, medtem ko se monolitno beleženje ponavadi poslabša z naraščanjem velikosti aplikacije in prometa.
Kaj je Opazljivost v mikroservisih?
Večdimenzionalni pristop, ki združuje sledi, metrike in dnevnike za razumevanje vedenja v porazdeljenih, neodvisno nameščenih storitvah.
Zgrajeno na treh stebrih: porazdeljeno sledenje, metrike in strukturirano beleženje v vseh storitvah
Uporablja korelacijske ID-je za sledenje posamezni zahtevi, ko ta preklaplja med ducati ali stotinami storitev.
Za zbiranje in vizualizacijo podatkov se zanaša na orodja, kot so OpenTelemetry, Jaeger, Prometheus in Grafana
Zasnovan za upravljanje kratkotrajne infrastrukture, kjer se kontejnerji in podi nenehno vrtijo gor in dol
Omogoča ekipam SRE odkrivanje anomalij s cilji na ravni storitev in proračuni napak
Kaj je Monolitno sistemsko beleženje?
Tradicionalni pristop, pri katerem ena sama aplikacija zapisuje vnose v dnevnik v centralizirane datoteke ali eno samo shrambo dnevnikov za odpravljanje napak in spremljanje.
Dnevniki izvirajo iz ene kodne baze, ki se izvaja kot en sam proces, zaradi česar je sledenje poteh zahtev enostavno.
Običajno uporablja beleženje v datotekah, syslog ali preproste agregatorje dnevnikov, kot sta Logback ali log4j
Odpravljanje napak običajno vključuje pregledovanje dnevniških datotek z iskanjem po datoteki ali poizvedovanje po posameznem primerku sklada ELK.
Režija delovanja je minimalna, saj beleženje poteka znotraj enega izvajalnega okolja.
Lažje implementirati korelacijo prek lokalnega konteksta niti ali preprostih ID-jev sej
Primerjalna tabela
Funkcija
Opazljivost v mikroservisih
Monolitno sistemsko beleženje
Arhitektura
Razdeljeno po številnih storitvah
Enotna poenotena aplikacija
Primarni tipi podatkov
Sledi, metrike in dnevniki
Predvsem dnevniki, včasih metrike
Zahteva za sledenje
Porazdeljeno sledenje s kontekstom razpona
Sledenje na ravni niti ali na podlagi seje
Kompleksnost orodij
Visoka – zahteva instrumentacijo v vseh storitvah
Nizko – zadostuje en sam cevovod dnevnika
Prilagodljivost
Vodoravno se prilagaja glede na število storitev
Omejeno s prepustnostjo ene same aplikacije
Diagnoza napak
Določa, katera storitev je povzročila zakasnitev ali napake
Lažje znotraj enega postopka, težje na mejah
Zahteve za shranjevanje
Podatkovne baze z velikim obsegom, pogosto časovnimi vrstami
Zmerne, običajno ploske datoteke ali en indeks
Stroški izvedbe
Pomembna začetna naložba
Nižji začetni stroški namestitve
Podrobna primerjava
Temeljna filozofija in pristop
Opazovanje mikroservisov predpostavlja, da ni mogoče vnaprej predvideti vsakega načina napake, zato zberete dovolj raznolike telemetrije, da lahko postavite nova vprašanja, ko se težave pojavijo. Monolitno beleženje ima preprostejšo pot: zajame dovolj besedilnih zapisov, da rekonstruira, kaj se je zgodilo med zahtevo. Prvi pristop obravnava dnevnike kot enega od mnogih signalov, drugi pa dnevnike kot primarni signal za razumevanje delovanja sistema.
Odpravljanje napak in analiza temeljnih vzrokov
Ko se v nastavitvi mikroservisov kaj pokvari, inženirji poiščejo porazdeljene sledi, da bi natančno videli, katera storitev je povzročila zakasnitev ali vrnila napako. V monolitnem sistemu razvijalci običajno odprejo dnevniško datoteko, poiščejo časovni žig ali uporabniški ID in preberejo zaporedne vnose. Monolitna pot se zdi bolj intuitivna, vendar se pokvari, ko sistem dovolj zraste, da ena sama dnevniška datoteka postane nerodna.
Orodja in infrastruktura
Skladi za opazovanje običajno združujejo knjižnico instrumentov, kot je OpenTelemetry, zaledni sistem za sledenje, kot sta Jaeger ali Tempo, shrambo metrik, kot je Prometheus, in plast nadzorne plošče, kot je Grafana. Monolitno beleženje pogosto potrebuje veliko manj – ogrodje za beleženje, pošiljatelj dnevnikov, kot je Filebeat, in morda gručo ELK ali OpenSearch. Veriga orodij za mikroservis zahteva večjo operativno zrelost, vendar se izplača, ko sistemi postanejo kompleksni.
Uspešnost in režijski stroški
Porazdeljeno sledenje dodaja omrežne skoke in stroške serializacije, saj se razponi širijo prek meja storitev, čeprav strategije vzorčenja ohranjajo obvladljive režijske stroške. Monolitno beleženje ostaja blizu procesa aplikacije, zato je vpliv na zmogljivost večinoma posledica vhodno/izhodnih operacij diska in oblikovanja dnevnika. Oba pristopa lahko zmanjšata zmogljivost, če je beleženje v produkciji puščeno na podrobni ravni, vendar okolja mikroservisov običajno potrebujejo natančnejšo nastavitev.
Ko ima vsak smisel
Opazovalnost je do izraza v okoljih s pogostimi uvajanji, večjezičnimi storitvami in ekipami, ki potrebujejo neodvisno lastništvo komponent. Monolitno beleženje ostaja odlična izbira za manjše aplikacije, starejše sisteme ali scenarije, kjer skladnost s predpisi zahteva preproste revizijske sledi. Številne organizacije dejansko uporabljajo oboje – tradicionalne dnevnike hranijo za skladnost, hkrati pa orodja za opazovalnost uporabljajo za inženirski vpogled.
Prednosti in slabosti
Opazljivost v mikroservisih
Prednosti
+Popolna vidnost zahteve
+Večsignalna korelacija
+Lestvice s kompleksnostjo
+Omogoča prakse SRE
Vse
−Višji stroški orodja
−Strmejša krivulja učenja
−Več režijske vrednosti za shranjevanje
−Zahteva disciplino pri uporabi instrumentov
Monolitno sistemsko beleženje
Prednosti
+Enostavna izvedba
+Nižji obratovalni stroški
+Znano večini ekip
+Enostavna revizijska sled
Vse
−Omejen vpogled v medstoritvene povezave
−Slabo se prilagaja velikosti
−Ena točka odpovedi
−Težje je povezati dogodke
Pogoste zablode
Mit
Že samo dnevniki so dovolj za odpravljanje napak v katerem koli sistemu.
Resničnost
Dnevniki delujejo dobro za monolite, vendar izgubijo učinkovitost v porazdeljenih sistemih, kjer se ena sama zahteva dotakne številnih storitev. Metrike in sledi zapolnijo vrzeli s prikazom vzorcev in vzročnih verig, ki jih dnevniki ne morejo zlahka razkriti.
Mit
Opazljivost je le domiselno beleženje z novim imenom.
Resničnost
Opazovalnost je širša disciplina, ki vključuje dnevnike, dodaja pa tudi metrike in sledi kot prvovrstne signale. Cilj se premakne od iskanja zapisov k postavljanju poljubnih vprašanj o vedenju sistema brez dodajanja nove kode.
Mit
Monolitni sistemi ne potrebujejo opazovalnosti.
Resničnost
Tudi posamezne aplikacije imajo koristi od metrik, sledi in strukturiranih dnevnikov, ko dosežejo smiseln obseg. Opazljivost pomeni razumevanje stanja sistema, kar velja ne glede na arhitekturo.
Mit
Porazdeljeno sledenje je predrago za produkcijsko uporabo.
Resničnost
Sodobni sistemi sledenja uporabljajo vzorčenje na podlagi glave ali repa za zajem reprezentativne podmnožice zahtev. To ohranja nizke režijske stroške, hkrati pa zagotavlja dovolj podatkov za diagnosticiranje večine težav.
Mit
Prehod na mikroservise samodejno izboljša opazovalnost.
Resničnost
Mikroservisi otežujejo opazovanje, ne pa ga olajšajo, saj je zdaj na voljo več gibljivih delov za spremljanje. Brez ustrezne instrumentacije in orodij se vidljivost dejansko zmanjša v primerjavi z dobro instrumentiranim monolitom.
Pogosto zastavljena vprašanja
Kakšna je razlika med opazovalnostjo in beleženjem?
Beleženje je ena vrsta telemetričnih podatkov – diskretni dogodki, ki jih beleži aplikacija. Opazovalnost je lastnost sistema, ki opisuje, kako dobro lahko razumete njegovo notranje stanje iz zunanjih izhodov. Opazovalnost uporablja dnevnike, metrike in sledi skupaj, medtem ko se beleženje osredotoča samo na besedilne zapise.
Zahteva enega uporabnika v arhitekturi mikroservisov lahko pred dokončanjem preide skozi pet, deset ali več storitev. Porazdeljeno sledenje sledi tej zahtevi prek meja storitev z uporabo korelacijskih ID-jev in razponov, kar omogoča vpogled v to, kje je bil porabljen čas in kje so nastale napake.
Ali lahko v okolju mikroservisov uporabite tradicionalno beleženje?
Da, vendar je brez skupnih identifikatorjev težje povezati dnevnike med storitvami. Večina ekip doda strukturirano beleženje s korelacijskimi ID-ji, nato pa še sledenje plasti in metrike, da dobijo popolno sliko o delovanju sistema.
Kateri so trije stebri opazovalnosti?
Trije stebri so dnevniki, metrike in sledi. Dnevniki zajemajo diskretne dogodke, metrike beležijo numerične podatke skozi čas, sledi pa prikazujejo pot zahteve skozi porazdeljene sisteme. Skupaj omogočajo ekipam, da odgovorijo na vprašanja o delovanju, napakah in uporabniški izkušnji.
Je OpenTelemetry standard za opazovalnost?
OpenTelemetry je postal dejanski standard za instrumentacijo v večini jezikov in platform. Združil je projekta OpenTracing in OpenCensus ter ga zdaj podpira fundacija Cloud Native Computing Foundation, s široko podporo prodajalcev in orodij odprte kode.
Koliko stane opazovalnost v primerjavi z beleženjem?
Opazovanje običajno stane več zaradi dodatnega prostora za shranjevanje, licenc za orodja in časa inženiringa za instrumentacijo. Vendar pa pogosto skrajša povprečni čas do rešitve in prepreči drage izpade, kar lahko izravna začetno naložbo za organizacije, ki upravljajo kompleksne sisteme.
Ali imajo monoliti koristi od orodij za opazovanje?
Absolutno. Tudi posamezne aplikacije pridobijo vrednost zaradi porazdeljenega sledenja znotraj lastnega procesa, zaradi meritev, ki razkrivajo trende delovanja, in zaradi strukturiranih dnevnikov, ki jih je lažje preverjati. Orodja za opazovanje niso namenjena izključno mikroservisom.
Kaj je razpon pri porazdeljenem sledenju?
Razpon predstavlja posamezno enoto dela znotraj sledi, kot je poizvedba v zbirki podatkov ali klic HTTP med storitvami. Razponi imajo ime, čas začetka, trajanje in metapodatke ter se povezujejo prek odnosov starš-otrok, da tvorijo celotno sled.
Kako povezujete dnevnike med mikroservisi?
Ekipe običajno vstavijo ID korelacije na rob sistema in ga širijo prek glav HTTP, metapodatkov sporočil ali konteksta niti. Vsaka storitev vključi ta ID v svoje vnose v dnevnik, zato eno samo iskanje v vseh storitvah vrne celotno pot zahteve.
Ali naj zagonska podjetja uporabljajo opazovalnost ali se držijo beleženja?
Zagonska podjetja v zgodnji fazi običajno začnejo s strukturiranim beleženjem in osnovnimi metrikami, ker se hitreje dostavijo in stanejo manj. Ko sistem raste in se ekipe množijo, postane dodajanje sledenja in enotne platforme za opazovanje smiselno za ohranjanje hitrosti razvoja.
Ocena
Izberite opazovanje mikroservisov, kadar vaš sistem obsega veliko neodvisnih storitev in morate v realnem času razumeti interakcije med storitvami. Za enostavnejše aplikacije, kjer centralizirani zapisi zagotavljajo dovolj preglednosti in so operativni stroški pomembnejši od podrobnega vpogleda, se držite monolitnega beleženja. V praksi zreli sistemi pogosto združujejo oba pristopa, namesto da bi se v celoti zavezali enemu.