Vad är observerbarhet och varför betyder det?

0
313
Gorodenkoff/Shutterstock.com

Observabilitet är ett drag av mjukvarusystem som ger djup synlighet i deras interna verksamhet. Att ha god observerbarhet underlättar snabbare lösning av problem genom att hjälpa operationsteam att identifiera orsaken till problem.

Den enklaste definitionen av & # 8220; observerbar & # 8221; programvara är ett system som låter dig härleda sitt interna tillstånd genom att titta på de utdata det producerar. Om ditt system inte kan ge dessa utgångar kommer det inte att vara fullt observerbart.

Tänk på en programvaruplattform som verkar köra långsammare än normalt. Vid första anblicken har du inte tillräckligt med information för att ta reda på vad som orsakar avmattningen. Men om systemet avgav prestandamätvärden för varje steg i dess körning, kan du genast identifiera komponenten med ett problem. Systemets observerbarhet har nu förbättrats.

Är det inte observerbarhet samma som övervakning?

< p> Observerbarhet är inte detsamma som övervakning, även om de två begreppen är nära relationer. God övervakningspraxis bidrar till ett observerbart system. De ger ingen garanti för observerbarhet. Omvänt kan ett system vara rimligt observerbart utan en fullfjädrad övervakningsstack.

Övervakning i DevOps-termer hänvisar vanligtvis till användningen av flera fördefinierade mätvärden för att identifiera när ett system fungerar inom förväntningarna. Mätvärdena som täcks kopplas vanligtvis till resursutnyttjande (CPU-användning, nätverksgenomströmning) men kan också ge grundläggande data om ditt systems operationer (antal förfrågningar som orsakar en 500 felkod).

Annons < br>

Observabilitet går lite djupare och kräver mer nyanserad instrumentering. Till skillnad från övervakning är det kopplat till ditt system och dess egenskaper, snarare än den omgivande miljön.

Ett övervakat system berättar att antalet 500-fel är förhöjt och att användarna har problem. Ett observerat system rapporterar att din autentiseringsmikrotjänst tar slut, så att användarsessioner inte återställs och din gateway utfärdar en 500 som en sista utväg.

RELATERAD: En nybörjars introduktion till DevOps-principer

Hur blir system observerbara?

Låt oss bryta ner skillnaderna mellan de två exemplen som visas ovan. I ett traditionellt tillvägagångssätt distribuerar du till din server och konfigurerar övervakning, kanske med hjälp av din molnleverantörs mätvärden. Om ett problem upptäcktes kan du besöka serverloggarna för problem.

Denna modell kan redan i viss mån observeras. Den moderna användningen av & # 8220; observerbarhet & # 8221; förmedlar dock lite mer. Serverfelloggar ger vanligtvis det slutliga resultatet, men inte de tillstånd som orsakade det. För att ett system verkligen ska kunna observeras bör du kunna bestämma sekvensen av interna tillstånd som ledde till en viss utdata utan att behöva spendera för mycket tid manuellt på att samla in informationen.Det finns tre primära & # 8220; pelare & # 8221; av observerbarhet, varav god övervakning är en. Att uppmärksamma alla tre pelarna bör resultera i ett observerbart system som är ett effektivt hjälpmedel för att diagnostisera problem.

RELATERAD: Vad är lågkodad och ingen kodutveckling ?

Mätvärden och övervakning

Ett observerbart system bör tillhandahålla konstanta mätningar för fördefinierade mätvärden. De bästa mätvärdena är de som visar användbar information som är relevant för din applikation och dess prestanda, inte nödvändigtvis generiska CPU- och minnesdiagram.Den andra pelaren för observerbarhet är loggning. Detta beskriver en mer strukturerad metod för loggning än en grundläggande skrivning när ett fel inträffar. Loggar bör vara mycket integrerade i ditt system så att varje händelse registreras i en central loggningstjänst. Själva loggarna bör struktureras på ett standardiserat sätt, så loggvisningsverktyg kan automatiskt indexera och formatera dem.Den sista pelaren spåras. Spår fångar upp allt som händer under en viss körning genom programmet. Detta ger dig den information du behöver för att återge den exakta sekvensen av händelser som ledde till ett problem. Spårning är särskilt viktigt för distribuerade system där en enskild begäran kan träffa ett dussin eller flera mikrotjänster. Att bara förlita sig på serviceloggar är orealistiskt, eftersom du inte kommer att kunna se vad som hände med begäran efter att den var klar med varje tjänst. En spårning på begäranivå är effektivare för att hitta problem.

Du kan börja göra ett system mer observerbart genom att se till att du har täckning av alla tre pelarna. Kom ihåg att & # 8220; observerbarhet & # 8221; är inte en specifik sak & # 8211; det är ett särdrag hos ett system, inte ett enda attribut. Chansen är att ditt system redan är & # 8220; observerbart & # 8221; genom grundläggande mätvärden och felloggar men det kan fortfarande ha låg & # 8220; observerbarhet & # 8221; om du inte lätt kan avgöra orsaken till fel.

RELATERAD: Hur händelsekällning hjälper dig att spåra din applikations status

Stoppar observerbarhet fel?

Det är värt att notera att observerbarhet inte är avsedd att eliminera fel och fel. Istället är det faktiskt en acceptans att problem kan och kommer att uppstå. I stället för att anta att ditt system är ofelbart, uppmuntrar observerbarhet dig att planera för det otänkbara. Om du möter ett avbrott, skulle du ha de verktyg du behövde för att hitta orsaken?

För att använda en motoranalogi är det skillnaden mellan en kontrollmotorlampa och tillverkarens diagnosprogramvara. Så oönskat och osannolikt som det kan vara, störningar på vägen händer. De flesta utan specialutrustning ser en generisk varningslampa. En dedikerad bilist eller tekniker kommer att ha verktygen för att avläsa orsaken till det ljuset.

Låt oss nu återvända till molnet. En skärm med röda mätvärden hjälper inte mycket under ett avbrott. På samma sätt som en fordonsmekaniker kan avläsa diagnostik måste ditt system vara djupare observerbart så att du snabbt kan fastställa vad som är fel utan att titta på muttrar och bultar. Det är viktigt att planera för katastrofer så att du inte blir fast.

Observerbarhet är kontinuerlig

Att upprätthålla god observerbarhet kräver kontinuerligt underhåll. Du måste utvärdera dina instrument när du lägger till nya tjänster. Annars kan du oavsiktligt skapa tomrum i dina loggar och spår som förfrågningar försvinner i.

Annons

Du kan identifiera luckor i din observerbarhetsimplementering genom att ifrågasätta systemet och kontrollera att du kan få de svar du behöver. Du bör tänka på den information du behöver för att ta itu med ett problem. Skulle du kunna komma åt den under ett strömavbrott, utan ett långvarigt manuellt ingripande?

Ett verkligt observerbart system bör kunna använda en av de tre pelarna för att svara på frågor som presenterats av de andra två. Varför är minnesanvändningen i riskzonen? Varför registrerades ett fel i autentiseringstjänstens loggar? I båda dessa fall bör de andra två pelarna vara din första anlöpshamn för att hitta svaret.

Sammanfattning

Observabilitet är ett sammansatt ord som kan ibland verkar vaga och ogenomskinliga. I praktiken hänvisar den moderna användningen av termen till något ganska enkelt: överensstämmelsen mellan övervakning, loggning och spårning för att hjälpa dig att dra slutsatsen om ett systems interna tillstånd från dess utgångar.

God observerbarhet är avgörande för distribuerade arkitekturer där funktionalitet sprids över mikrotjänster. Ett system som inte kan observeras blir ett svart hål som suger upp förfrågningar men ger inget tillbaka. Detta kommer att äventyra din förmåga att svara på problem och kan leda till att användare rapporterar problem innan du är medveten om dem.

Omvänt hjälper ett observerbart system dig att hålla dig före felrapporter. Tid till upplösning minimeras eftersom systemet redan väntar med den information du behöver.