V tomto blogovém příspěvku se ponoříme do procesu ručního instrumentování OpenTelemetry pomocí sad OpenTelemetry pro vývojáře softwaru (SDK). K analýze těchto stop využíváme také možnosti sledování výkonu aplikací (APM) Oracle Cloud Infrastructure (OCI).
OpenTelemetry nebo OTel je na dodavatele neutrální, open source pozorovatelný rámec pro instrumentaci, generování, shromažďování a export telemetrických dat, jako jsou trasování, metriky, protokoly. Jako průmyslový standard je podporován více než 40 dodavateli pozorovatelnosti, integrován mnoha knihovnami, službami a aplikacemi a přijat koncovými uživateli.
Služba OCI APM poskytuje hluboký přehled o výkonu aplikací a poskytuje možnost rychle diagnostikovat problémy a poskytovat konzistentní úroveň služeb. Tato schopnost zahrnuje monitorování více komponent a aplikační logiky rozmístěných mezi klienty, službami třetích stran a backendovými výpočetními vrstvami, v místě nebo v cloudu.
Tento příspěvek pojednává o následujících bodech:
- Základy trasovacího kanálu a jeho inicializace
- Konfigurace atributů zdrojů a rozsahu
- Přidávání span událostí
- Použití sémantických konvencí
- Zkoumání tras pomocí OCI APM
Architektura
Jak můžete vidět na této architektuře, tyto aplikační služby spolu komunikují prostřednictvím protokolu HTTP nebo gRPC a každá služba je nakonfigurována k odesílání tras přímo do OCI APM. Služby odesílají trasování do APM protokolem OpenTelemetry (OTLP).
OTLP je univerzální protokol pro doručování telemetrických dat, který definuje kódování telemetrických dat. Protokol vyměňuje data mezi klientem a serverem. Tato specifikace definuje, jak je OTLP implementováno přes přenosy gRPC a HTTP 1.1, a specifikuje schéma protokolových vyrovnávacích pamětí používané pro užitečné zatížení. OTLP je protokol ve stylu požadavek-odpověď: Klienti odesílají požadavky a server odpovídá odpovídajícími odpověďmi.
Trasování
Konfigurace backendu APM
Vysvětlení zdůrazňuje podrobnosti o vývozci při použití kolektoru OTel.
Pokud jako backend používáme OCI APM, musíme inicializovat OTLPSpanExporter:
exporter = OTLPSpanExporter(endpoint="https://<apm-data-upload-endpoint>.com/20200101/opentelemetry/public/", headers={"authorization": "dataKey <apm-domain-data-key>"})</apm-domain-data-key></apm-data-upload-endpoint>
Informace o konfiguraci zdrojů dat OpenTelemetry naleznete v oficiální dokumentaci.
Přidání atributů span
Nejprve použijeme dekoratér, který zjednodušuje tvorbu a dokončování rozpětí. Zabývá se šířením kontextu. Potřebujeme získat aktuální rozsah, abychom mohli nastavit atributy a události rozsahu, jak je znázorněno na následujícím obrázku. Poté jsme importovali balíček sémantických konvencí a použili jsme konstanty jako HTTP_METHOD a HTTP_URL.
Použijte příklad na GitHubu a vyzkoušejte si to sami. Kompletní kód a další podrobnosti jsou k dispozici tam.
Spusťte následující kód:
$ cd SingleSpanExample<font></font>
$ python otel-app.py
Analyzujte stopy pomocí OCI APM
V navigační nabídce Oracle Cloud Console v části Observability & Management vyberte Monitorování výkonu aplikací.
Všechny atributy span, které jsme přidali, jsou uvedeny a můžeme je použít k filtrování tras. Události span jsou zobrazeny v sekci záznamů protokolu. Detekovány jsou také sémantické konstanty HTTP_URL a HTTP_METHOD.
Pravidla pro rozsah můžete nakonfigurovat pro převod atributů rozsahu z konvencí pojmenování OTel na konvence pojmenování APM podle dokumentace Oracle.
Pokud chceme kód dále vylepšit a přidat funkci child_span a zavolat ji zevnitř single_span, vidíme pod jednou stopou dvě rozpětí:
Závěr
Ponořili jsme se do základů OpenTelemetry, počínaje úvodem do jejích základních konceptů. Poté jsme prozkoumali kritické komponenty OpenTelemetry, včetně trasovacího potrubí a jeho inicializačního procesu. Naučili jsme se, jak konfigurovat zdroje a atributy rozpětí, abychom doladili naše možnosti sledování a zlepšili naši pozorovatelnost. Zkoumali jsme také události typu span a chápali jejich roli při poskytování hlubšího náhledu na naše aplikace. Jako klíčový aspekt byly zdůrazněny sémantické konvence, které zajišťují, že naše stopy jsou nejen komplexní, ale také smysluplné.
Abychom to všechno spojili, prozkoumali jsme trasování pomocí OCI Application Performance Monitoring, které nám umožnilo vizualizovat a analyzovat naše trasování a získat cenné poznatky o výkonu a chování našich aplikací. Položili jsme pevný základ pro využití síly OpenTelemetry a použití OCI APM pro efektivní pozorovatelnost, čímž jsme připravili cestu pro robustnější a pronikavější monitorování a trasování aplikací.
Zdroj: Oracle