Co je pozorovatelnost?
Než se ponoříme do kódu, pojďme se vrátit a promluvit si o pozorovatelnosti. Potřebujete nástroje, které vám pomůžou porozumět internímu stavu systému na základě toho, co je viditelné externě.
Proč implementovat pozorovatelnost?
Existuje několik důvodů, proč je pozorovatelnost zásadním aspektem vývoje a zlepšování aplikací nativních pro cloud:
- Porozumění chování systému: Pozorovatelnost poskytuje přehled o výkonu vaší aplikace a o tom, kde dochází k kritickým bodům nebo chybám.
- Ladění a řešení potíží: Při vzniku problémů můžou nástroje pozorovatelnosti poskytnout podrobné informace o tom, co se v systému v době problému stalo.
- Průběžné vylepšování: Pozorovatelnost není jen pro identifikaci a řešení problémů – používá se také k průběžnému vylepšování. Monitorováním výkonu systému v průběhu času můžete identifikovat příležitosti k optimalizaci kódu, zlepšení výkonu systému a kvantitativnímu zlepšení prostředí pro vaše uživatele.
- Proaktivní zjišťování problémů: Se správnými nástroji pozorovatelnosti můžete často zjišťovat problémy předtím, než je uživatelé uvidí.
Implementace pozorovatelnosti v aplikacích nativních pro cloud není jen osvědčeným postupem, je to nutnost údržby, optimalizace a průběžného vylepšování aplikací. Umožňuje vývojářům poskytovat spolehlivé a vysoce výkonné aplikace a poskytuje přehledy potřebné k řízení informovaného rozhodování.
Tři pilíře pozorovatelnosti
Existují tři hlavní pilíře pozorovatelnosti:
- Protokoly: Protokoly poskytují podrobné záznamy událostí, ke kterým dochází v rámci aplikace nebo systému. V aplikaci můžete k protokolování událostí použít
Microsoft.Extensions.Logging
infrastrukturu. - Metriky: Metriky odkazují na číselná měření a čítače, které poskytují přehled o výkonu a stavu systému. Mezi příklady patří frekvence požadavků, doby odezvy, využití procesoru a paměti a míra chyb. V aplikaci můžete mít konkrétní měření, která potřebujete sledovat.
- Distribuované trasování: Tento proces zahrnuje trasování požadavku, protože se šíří prostřednictvím všech mikroslužeb v nativní cloudové aplikaci. Každá služba protokoluje trasovací data, jako jsou ID požadavků, která umožňují korelovat události napříč službami. Distribuované trasování je také užitečné pro ladění problémů s výkonem a chyb ve složitých systémech.
Tyto tři pilíře společně poskytují komplexní pozorovatelnost systému.
Zdroje dat pro telemetrii
V aplikaci nativní pro cloud vaší společnosti existuje několik zdrojů telemetrie, které můžete shromažďovat:
- Protokoly aplikací: Aplikace generují protokoly, které poskytují podrobné informace o své operaci a chybách, pokud k nim dojde. Protokolování je bohatým zdrojem telemetrických dat.
- Databáze: Databáze můžou poskytovat telemetrická data o dotazech, které zpracovávají, doby provádění a případné chyby.
- Požadavky a odpovědi HTTP: Požadavky HTTP a odpovědi mezi mikroslužbami poskytují bohatá a cenná telemetrická data. Tato data zahrnují hlavičky požadavků a odpovědí, základní obsah, stavové kódy a informace o načasování.
- Data o výkonu na straně klienta: V aplikacích nativních pro cloud s front-endem můžete shromažďovat data o výkonu na straně klienta. Mezi tato data můžou patřit přístupy na stránky, časy načítání a časy interakce uživatelského rozhraní.
- Metriky infrastruktury: Pokud je vaše aplikace hostovaná v cloudovém prostředí, můžete shromažďovat metriky infrastruktury, jako je využití procesoru, využití paměti, síťový provoz a vstupně-výstupní operace disku.
Shromažďováním a analýzou těchto telemetrických dat můžete získat cenné přehledy o výkonu a stavu vaší aplikace.
Implementace pozorovatelnosti
Pokud chcete do aplikace nativní pro cloud přidat pozorovatelnost, postupujte takto:
- Přidejte protokolování.
- Povolte metriky a definujte vlastní metriky, které se mají zachytit.
- Povolení distribuovaného trasování pomocí OpenTelemetry a Zipkinu
- Znovu instrumentujte aplikaci pomocí OpenTelemetry a přidáním telemetrie do kódu.
- Analyzujte telemetrická data pomocí Přehledy Prometheus, Grafana nebo Application.
Úvod do OpenTelemetry
Jak OpenTelemetry pomáhá vaší aplikaci přidávat pozorovatelnost a proč je pro ni v .NET taková hloubková podpora? OpenTelemetry je opensourcová architektura pozorovatelnosti. Poskytuje standardní způsob, jak generovat telemetrická data nezávislá na dodavateli.
OpenTelemetry standardizuje způsob shromažďování a přenosu telemetrických dat do back-endových platforem. Překlenuje mezery v viditelnosti tím, že poskytuje společný formát instrumentace napříč všemi vašimi mikroslužbami. Při každé změně back-endové platformy nemusíte znovu instalovat kód ani instalovat jiné proprietární agenty.
Vzhledem k tomu, že se jedná o otevřený standard, podporuje mnoho dalších nástrojů mimo .NET. OpenTelemetry je nakonfigurovaná tak, aby používala rozšíření, která umožňují exportérům vytvářet telemetrická data do všech různých nástrojů. To znamená, že ke sledování mikroslužeb můžete použít stejné nástroje bez ohledu na jazyk, ve kterém jsou napsané.
OpenTelemetry pomáhá shromažďovat a monitorovat všechny tři pilíře pozorovatelnosti: protokoly, metriky a trasování. Tyto úkoly se dozvíte v následujících lekcích.