Antwoorden>Meer informatie over monitoring en observability>Wat is observability?
Wat is observabiliteit?
// Tags
waarneembaarheidmonitoring en observeerbaarheid
TL;DR: Observability is het vermogen om te begrijpen wat er binnen een systeem gebeurt door de externe output ervan te analyseren. In blockchain-infrastructuur betekent observability dat je beschikt over de metrics, logs en traces die nodig zijn om vragen te beantwoorden als „waarom is mijn dapp traag?”, „waarom is deze transactie mislukt?” en „is mijn endpoint ?”. Het gaat verder dan eenvoudige monitoring (die je vertelt dat er iets mis is) door je de gegevens te geven om te begrijpen waarom het mis is. Observability rust op drie pijlers: metrics (numerieke metingen in de loop van de tijd), logs (gebeurtenisregistraties met tijdstempel) en traces (end-to-end verzoektrajecten door gedistribueerde systemen).
De eenvoudige uitleg
Monitoring geeft aan dat het motorcontrolelampje van je auto brandt. Observability geeft aan dat het motorcontrolelampje brandt omdat de O2-sensor in cilinder 3 bij 2.500 RPM een te arm mengsel aangeeft; dit is begonnen na de vervanging fuel vorige week, en het patroon komt overeen met een bekend probleem bij aftermarket-filters.
In de softwareontwikkeling wordt onder ‘observability’ verstaan: het zo grondig uitrusten van je systemen met meetinstrumenten dat je elk probleem kunt diagnosticeren zonder dat je het hoeft te reproduceren of achteraf nieuwe meetinstrumenten hoeft toe te voegen. Je hoeft niet mode tevoren op elke mogelijke mode te anticiperen. Je hebt voldoende ruwe gegevens (metrics, logs, traces) nodig, zodat je, wanneer er iets onverwachts gebeurt, vanuit het symptoom terug kunt traceren naar de onderliggende oorzaak.
Voor blockchain-toepassingen is observeerbaarheid van cruciaal belang, omdat de systemen over meerdere lagen zijn verdeeld: je frontend, je backend, je RPC-provider, het blockchain-knooppunt, het consensusnetwerk en de keten zelf. Als een gebruiker merkt dat het saldo traag wordt bijgewerkt, kan dit worden veroorzaakt door een trage weergave van de frontend, een cacheprobleem in de backend, endpoint , een synchronisatieachterstand bij het knooppunt of congestie in de keten. Zonder observeerbaarheid over alle lagen heen is het vaststellen van de werkelijke oorzaak giswerk.
Metrics zijn numerieke metingen die in regelmatige intervallen in de loop van de tijd worden verzameld. Ze vormen de basis van dashboards en waarschuwingssystemen. In blockchain-infrastructuur zijn belangrijke metrics onder meer de RPC-responstijd (hoe lang elke API-aanroep duurt), het verzoekvolume (hoeveel aanroepen per seconde uw applicatie doet), het foutenpercentage (welk percentage van de verzoeken een foutmelding oplevert), de blokhoogte-delta (hoe ver uw node achterloopt op de tip van de keten), trends in de gasprijs (huidige niveaus van netwerkkosten) en de transactiebevestigingstijd (hoe lang het duurt vanaf het indienen tot de opname in een blok).
Metrics zijn bij uitstek geschikt om trends te begrijpen en afwijkingen op te sporen. Een plotselinge piek in de RPC-latentie, een geleidelijke stijging van het foutenpercentage of een daling van de verwerkingscapaciteit van verzoeken zijn allemaal signalen dat er iets is veranderd. Metrics-tools zoals Prometheus, Datadog en Grafana verzamelen, bewaren en visualiseren metrics in de loop van de tijd, waardoor zowel realtime dashboards als historische trendanalyses mogelijk worden.
De kracht van metrics is dat ze lichtgewicht en geaggregeerd zijn, waardoor ze met hoge frequentie kunnen worden verzameld zonder dat dit enorme hoeveelheden data oplevert. De beperking is dat metrics je wel vertellen wat er gebeurt, maar niet waarom. Je weet dat de latentie is toegenomen, maar je weet niet welke specifieke verzoeken traag waren of wat de oorzaak van die vertraging was.
Logbestanden
Logboekvermeldingen zijn met een tijdstempel voorziene registraties van afzonderlijke gebeurtenissen. Elke belangrijke actie die uw systeem uitvoert, elke fout die het tegenkomt, elke beslissing die het neemt, kan als logboekvermelding worden vastgelegd. In blockchain-toepassingen omvatten relevante logboeken onder meer details van RPC-verzoeken en -antwoorden (methode, parameters, responstijd, status), gebeurtenissen in de transactielevenscyclus (ingediend, in behandeling, bevestigd, mislukt), gebeurtenissen van smart contracts (gedecodeerde gebeurtenisgegevens uit uw contracten), foutdetails (stacktraces, foutcodes, verzoekcontext) en gebruikersacties (wallet-verbindingen, transactiegoedkeuringen, paginanavigatie).
Logbestanden zijn bij uitstek geschikt om de details te bieden die nodig zijn voor het diagnosticeren van specifieke incidenten. Wanneer een statistiek je waarschuwt dat het aantal fouten plotseling is gestegen, laten logbestanden zien welke specifieke fouten zich voordoen, welke eindpunten hierdoor worden beïnvloed en wat de parameters van het verzoek waren. Met tools voor loganalyse, zoals Elasticsearch, Loki, Splunk en CloudWatch Logs, kun je logvermeldingen doorzoeken, filteren en met elkaar in verband brengen, ongeacht de dienst of het tijdsbestek.
Het nadeel van logbestanden is de omvang ervan. Het gedetailleerd vastleggen van elke RPC-aanroep, elke transactiegebeurtenis en elke gebruikersactie levert enorme hoeveelheden gegevens op. De kosten voor de opslag van logbestanden kunnen snel oplopen, en om in miljoenen logvermeldingen naar een specifieke gebeurtenis te zoeken, zijn efficiënte indexerings- en zoektools nodig.
Sporen
Traces volgen het traject van een enkel verzoek door een gedistribueerd systeem, van begin tot eind. Wanneer een gebruiker een token-swap initieert, legt de trace elke stap vast: de verwerkingstijd aan de frontend, de latentie van de API-aanroep aan de backend, het RPC-verzoek aan het knooppunt, de verwerkingstijd van het knooppunt, het indienen van de transactie en de uiteindelijke blokbevestiging. Elke stap wordt vastgelegd als een „span“ met een starttijd, eindtijd en metadata. Spans worden aan elkaar gekoppeld via een trace-ID, waardoor een volledig beeld ontstaat van het traject van het verzoek.
Traces zijn essentieel voor het diagnosticeren van prestatieproblemen in distributies
gebruiksvriendelijke architecturen. Als een ruiltransactie 8 seconden duurt vanaf het moment dat de gebruiker klikt totdat de bevestiging wordt weergegeven, laat een trace zien dat 200 ms bestemd was voor het weergeven van de frontend, 100 ms voor de verwerking door de backend, 500 ms voor RPC-latentie, 12 seconden voor de on-chain-bevestiging (waarop je applicatie heeft gewacht) en de resterende tijd voor het verzenden van websocket-gebeurtenissen. Je weet nu precies waar de tijd is besteed en welke component je moet optimaliseren.
Gedistribueerde tracingtools zoals Jaeger, Zipkin, Datadog APM en Honeycomb zijn ontworpen om traces over verschillende services heen te verzamelen, op te slaan en te visualiseren. Ze zijn met name waardevol voor microservice-architecturen, waarbij één gebruikersverzoek meerdere services, databases en externe API’s raakt.
Waarom observability belangrijk is voor blockchain-toepassingen
Blockchain-toepassingen zijn van nature verspreid over meerdere onafhankelijke systemen: uw infrastructuur, de infrastructuur van uw RPC-provider en het blockchain-netwerk zelf. Hierdoor ontstaat er een groter risico op storingen en prestatieverlies dan bij een traditionele toepassing die uitsluitend afhankelijk is van haar eigen servers en database.
endpoint behoren tot de meest voorkomende problemen waarmee blockchain-ontwikkelaars te maken krijgen. Een endpoint verouderde gegevens retourneren (omdat het onderliggende knooppunt achterloopt met synchroniseren), traag reageren (vanwege geografische afstand of belasting) of fouten retourneren (vanwege snelheidsbeperkingen of storingen in knooppunten). Zonder inzicht in je RPC-laag blijven deze problemen onzichtbaar totdat gebruikers klagen.
Onchain-omstandigheden hebben invloed op je applicatie, ook al heb je daar geen controle over. Overbelasting van de blockchain leidt tot hogere gasprijzen en langere bevestigingstijden. Door blokreorganisaties kunnen recent bevestigde transacties ongeldig worden verklaard. Uitval van validators op kleinere blockchains kan vertragingen bij de productie van blokken veroorzaken. Observability-tools die naast de statistieken van je applicatie ook statistieken op blockchain-niveau bijhouden, geven je een volledig beeld van wat er van invloed is op je gebruikers.
Wat is het verschil tussen observability en monitoring?
Monitoring en observeerbaarheid hangen met elkaar samen, maar zijn niet onderling uitwisselbaar. Bij monitoring wordt een bekende reeks signalen in de gaten gehouden en wordt aangegeven wanneer een van die signalen een drempelwaarde overschrijdt: het geeft antwoord op de vraag „is er iets mis?”. Observeerbaarheid is het bredere vermogen om aan de hand van uitgebreide gegevens open vragen over je systeem te stellen, zodat je zelfs bij storingen die je nooit had voorzien, de vraag „waarom is er iets mis?” kunt beantwoorden. Monitoring is een onderdeel van observeerbaarheid; je hebt monitoring nodig om problemen op te sporen en observeerbaarheid om ze te verklaren.
Hoe werken statistieken, logbestanden en traces samen?
De drie pijlers vullen elkaar aan en staan niet met elkaar in concurrentie. Metrics geven aan dat er iets is veranderd, logs laten zien wat er precies is gebeurd, en traces geven aan op welk punt in een gedistribueerd verzoek de vertraging of fout zich heeft voorgedaan. Een goede observability-aanpak maakt gebruik van alle drie: er wordt een waarschuwing geactiveerd op basis van een metric, een trace beperkt het probleem tot één service, en logs onthullen de exacte fout. In de onderstaande tabel wordt elke pijler gekoppeld aan de vraag waarop deze het beste antwoord geeft.
Pijler
Antwoorden
Voorbeeld van blockchain
Veelgebruikte hulpmiddelen
Kengetallen
Wat is er veranderd en wanneer?
De RPC-latentie piekte om 14:02 uur
Prometheus, Grafana
Logbestanden
Wat is er precies gebeurd?
eth_call heeft een time-outfout geretourneerd
Loki, Splunk
Sporen
Waar is die tijd gebleven?
500 ms binnen de RPC-span
Jaeger, Datadog APM
Zie ‘metrics vs logs vs traces’ voor een uitgebreidere vergelijking van de pijlers. Het bijhouden van RPC-latentie als een ‘first-class metric’ is een van de meest waardevolle signalen voor een blockchain-app.
Hoe zorg je ervoor dat blockchain-infrastructuur inzichtelijk wordt?
Begin met het instrumenteren van de RPC-laag, aangezien deze zich tussen je app en de blockchain bevindt: registreer het verzoekvolume, de latentiepercentielen en de foutpercentages per methode. Voeg statuscontroles toe die de blokhoogte van je node vergelijken met het uiteinde van de blockchain, zodat je synchronisatieachterstanden vroegtijdig kunt opsporen. Koppel vervolgens waarschuwingen aan de signalen die daadwerkelijk problemen voor gebruikers voorspellen, en ontwerp het systeem met het oog op veerkracht, zodat één enkele storing je niet verblindt. Combineer observability met betrouwbare nodes, hoge beschikbaarheid en een getest failover-pad, zodat je, wanneer er iets misgaat, dit zowel kunt zien als er omheen kunt werken.
Veelgestelde vragen
Is observability hetzelfde als monitoring?
Nee. Bij monitoring worden vooraf gedefinieerde signalen in de gaten gehouden en krijg je een melding wanneer iets een drempelwaarde overschrijdt, terwijl observability je voldoende gegevens biedt om elk probleem te onderzoeken, inclusief storingen die je niet had voorzien. Monitoring is een onderdeel van een bredere observability-aanpak.
Wat zijn de drie pijlers van observability?
Metrics, logs en traces. Metrics zijn numerieke metingen in de loop van de tijd, logs zijn met een tijdstempel voorziene registraties van afzonderlijke gebeurtenissen, en traces volgen één enkel verzoek door een gedistribueerd systeem. Samen stellen ze je in staat om problemen op te sporen, te verklaren en te lokaliseren.
Waarom is observabiliteit bij blockchain-apps moeilijker?
Blockchain-toepassingen strekken zich uit over uw eigen infrastructuur, een externe RPC-provider en de blockchain zelf, waardoor storingen kunnen ontstaan in lagen waarover u geen controle hebt. Door dat grotere bereik hebt u inzicht nodig in elke laag, inclusief omstandigheden op blockchain-niveau zoals congestie en reorganisaties.
Welke statistieken zijn het belangrijkst voor de RPC-infrastructuur?
De responstijd, het aantal verzoeken, het foutenpercentage en de verandering in blokhoogte zijn de belangrijkste indicatoren. De responstijd en het aantal fouten geven inzicht in endpoint , het aantal verzoeken geeft de belasting weer en de verandering in blokhoogte geeft aan of het knooppunt gelijke tred houdt met het einde van de blockchain.
Heb ik voor elke pilaar apart gereedschap nodig?
Niet per se. Veel platforms bestrijken meer dan één pijler, en aanbieders stellen vaak RPC-analysetools en exportfuncties voor statistieken beschikbaar die je in een bestaande stack kunt integreren. Het doel is een uniform overzicht over zowel de applicatie- als de blockchainlaag heen, en niet zozeer een specifiek aantal tools.
Hoe Quicknode de observability Quicknode
Quicknode ingebouwde observabiliteitsfuncties voor de blockchain-infrastructuurlaag. Het Quicknode bevat realtime analyses die het verzoekvolume, de responstijd, de foutpercentages en een uitsplitsing per methode voor elk endpoint weergeven. Hierdoor krijgen ontwikkelaars direct inzicht in hun RPC-gebruiks patronen, zonder dat ze zelf monitoring hoeven in te richten.
Voor teams die al over stacks beschikken, Clusters Dedicated Clusters Quicknode Clusters integratie met de Prometheus Exporter. Hierdoor kunt u metrics op knooppuntniveau rechtstreeks in uw Grafana-dashboards, Datadog of elk ander Prometheus-compatibel monitoringsysteem ophalen. Dit maakt een uniforme observability mogelijk voor zowel uw applicatie-infrastructuur als uw blockchain-infrastructuur, allemaal vanuit één centraal overzicht.
Quicknode Streams observability voor uw datapijplijnlaag en geeft voor elke Stream informatie over de leveringsstatus, verwerkingsstatistieken en foutrapportage. In combinatie met het RPC-analysedashboard krijgen ontwikkelaars hierdoor een uitgebreid inzicht in zowel hun realtime API-toegang als hun streaming-gegevensopname.