Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 157|Odgovoriti: 0

[ASP.NET] ASP.NET Core (34) Trace Context

[Kopiraj povezavo]
Objavljeno na 22. 12. 2025 09:54:17 | | | |
Zahteve: V arhitekturi mikrostoritev je ob težavah pogosto zelo težko odpraviti težave, ne da bi vedeli, ali gre za izjemo, ki jo vrže storitev, morda storitev napiše napako ali pa je težava z informacijami, ki jih prenaša storitev, ki kliče storitev. Če je mogoče zabeležiti kontekst vseh zahtev, torej povezavo do celotne zahteve za celotno transakcijo, je ključno odpraviti in analizirati težavo.

Pregled:
ASP.NET Osnovno sledenje povezavam (2) uporablja integracijo SkyAPM
https://www.itsvse.com/thread-9458-1-1.html

ASP.NET Sledenje jedrnim povezavam (4) Dostop do sledenja povezavam v Jaegerju
https://www.itsvse.com/thread-9537-1-1.html

Sledenja sklada izjem so idealna za aplikacije, ki ciljajo na en sam proces, kot je monolitni aplikacijski sistem. Po drugi strani pa za delo z distribuiranimi aplikacijami, kot so arhitekture mikroservisov, skladovne sledi niso dovolj za prikaz celotne sledi sporočil. Zato postanejo potrebna orodja in standardi za distribuirano sledenje. W3C določa standard za tovrstno sled, imenovan Trace Context.

Standard Trace Context

Dokumentacija konteksta W3C Trace:Prijava do hiperpovezave je vidna.

Specifikacija W3C Trace Context določa standarde in formate za HTTP glave za širjenje porazdeljenih informacij o kontekstu sledenja. Definira 2 polja, ki se uporabljata za širjenje slednega toka v HTTP glavi zahteve. Poglejmo si ti dve polji v standardni definiciji:

  • traceparent: 用来描述在追踪图谱中到达请求的位置。它表示在追踪系统中到达请求的通用格式,被所有的 vendor 所理解。
  • tracestate: 使用 vendor 特定的数据表示形式来扩展 traceparent,使用 name/value 对形式。在 tracestate 中保存信息是可选的。

polje traceparent

Specifikacija za polje traceparent je definirana v obliki Razširjenega Baccos Paradigma (ABNF) in je sestavljena iz 4 delov:
različica - traceid - parentid/spanid - traceflags

Na primer:
00-480e22a2781fe54d992d878662248d94-b4b37b64bb3f6141-00

  • version: 8 位,系统适配的追踪上下文版本,当前位 00
  • trace-id: 16 字节,追踪整体的标识。用于在系统中标识一个分布式追踪整体,Vrednost je v isti povezavi povsem enaka
  • Parent-ID/span-ID: 8 bajtov za izražanje starša trenutnega spana v vhodni ali izhodni zahtevi.
  • trace-flags: 8 位,调用者的建议标志,可以考虑为调用者的建议,限制为 3 个原因:信息或是滥用,调用方的错误,或者在调用方与被调用方的不同负载。

Vsa polja so kodirana v šestnajstiškem sistemu, kot je prikazano na spodnji sliki:



.NET distribuirano sledenje

Porazdeljeno sledenje je diagnostična tehnika, ki inženirjem pomaga lokalizirati napake in težave z zmogljivostjo v aplikacijah, zlasti tistih, ki so lahko razporejene med več računalniki ali procesi. Ta tehnika povezuje delo, ki ga opravijo različne komponente aplikacije, preko sledenja zahtevkom v aplikaciji in ga loči od drugega dela, ki ga aplikacija lahko opravi pri obravnavi sočasnih zahtev. Na primer, uravnoteževalnik obremenitve lahko najprej prejme zahtevo za tipično spletno storitev, nato jo posreduje procesu spletnega strežnika in nato pošlje več poizvedb v bazo podatkov. Z distribuiranim sledenjem lahko inženirji razlikujejo, ali so ti koraki spodleteli, koliko časa traja vsak korak in katera sporočila se lahko zabeležijo ob izvajanju posameznih korakov.

V .NET je knjižnica System.Diagnostics.Activity konfigurirana za uporabo standarda W3C. Header Request-Id v slogu W3C je bil dodan v ASP.NET Core 2.0. Za spremembo v glavo traceparent, ki ustreza W3C Trace Context, nastavite statično lastnost Activity.DefaultIdFormat na W3C ob zagonu programa. Koda je naslednja:
Testni postopek,Brskalnik -> Vmesnik storitve A (/http, backend uporablja HttpClient za zahtevo storitve B) -> vmesnik storitve B (/test), storitev A izpiše svoj lasten Sledni kontekst in Sled Kontekst storitve B, koda pa je naslednja:
Zaženite storitve A in B, kot je prikazano na naslednji sliki:



Brskalnik odpre storitev A, kot je prikazano na naslednji sliki:


Id: 00-9891603e6c4921598951f425d98e4df7-bd06e8d507a43f42-00
TraceId: 9891603e6c4921598951f425d98e4df7
SpanId: bd06e8d507a43f42
ParentId:

Vsebina odziva:{"id":"00-9891603e6c4921598951f425d98e4df7-8874f9b2f9c0702e-00","traceId":"9891603e6c4921598951f425d98e4df7","spanId":"8874f9b2f9c0702e","parentId": "00-9891603e6c4921598951f425d98e4df7-e0336cc56a4f2150-00","traceFlags":"None","isSampled":false}

--------------------------------------------------
Name: HttpHandlerDiagnosticListener
DateTime: 2025/12/22 9:37:22
Id: 00-9891603e6c4921598951f425d98e4df7-e0336cc56a4f2150-00
TraceId: 9891603e6c4921598951f425d98e4df7
SpanId: e0336cc56a4f2150
ParentId: 00-9891603e6c4921598951f425d98e4df7-bd06e8d507a43f42-00

Key: System.Net.Http.HttpRequestOut.Stop, Value: { Response = StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
  Datum: pon, 22. dec 2025 01:37:21 GMT
  Strežnik: Kestrel
  Prenosno kodiranje: razdeljeno na dele
  Povezava: ohrani življenje
  Vrsta vsebine: application/json; charset=utf-8
}, Request = Method: GET, RequestUri: 'http://localhost.charlesproxy.com:5551/test', Version: 1.1, Content: <null>, Headers:
{
  TraceParent: 00-9891603e6c4921598951F425D98E4DF7-E0336CC56A4F2150-00
}, RequestTaskStatus = RanToCompletion }
--------------------------------------------------
Z uporabo orodja za zajem paketov Charles Proxy sta zahteva in odgovor naslednja:



Če želite onemogočiti HttpClient pri prenašanju traceparenta, so okoljske spremenljivke nastavljene takole:

Referenčni:

Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.




Prejšnji:010 urejevalnik privzeto nima predloge DEX
Naslednji:Prevajanje projektov na front-endu Ne sme nastaviti lastnosti nedefiniranih (nastavitev 'starša')
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com