Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 56|Válasz: 0

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

[Linket másol]
Közzétéve4 nappal ezelőtt | | | |
Követelmények: A mikroszolgáltatás architektúrában, amikor problémákkal szembesülnek, gyakran nagyon nehéz hibakeresést jelentenek, nem tudjuk, hogy a szolgáltatás által adott kivételről van szó, lehet, hogy a szolgáltatás hibát ír, vagy probléma van a szolgáltatás által továbbított információval, amely a szolgáltatást hívja. Ha minden kérés kontextusa rögzíthető, azaz a teljes tranzakciókéréshez vezető link, kritikus a probléma elhárítása és elemzése.

Szemle:
ASP.NET Core link tracing (2) SkyAPM integrációt használ
https://www.itsvse.com/thread-9458-1-1.html

ASP.NET Core Link Tracing (4) Hozzáférés a Jaeger link követéshez
https://www.itsvse.com/thread-9537-1-1.html

A kivétel-verem nyomok ideálisak olyan alkalmazásokhoz, amelyek egyetlen folyamatot céloznak, például monolitikus alkalmazásrendszert. Másrészt azonban elosztott alkalmazások, például mikroszolgáltatások architektúrák kezelésére a stack trace nem elegendő az üzenet teljes nyomkövetésének megjelenítésére. Ezért válnak szükségessé elosztott nyomkövető eszközök és szabványok. A W3C egy szabványt határoz meg erre a típusú nyomkövetésre, amelyet Trace Context néven ismert.

Trace Context szabvány

W3C Trace Kontextus dokumentáció:A hiperlink bejelentkezés látható.

A W3C Trace Context specifikáció szabványokat és formátumokat határoz meg a HTTP fejlécek számára, hogy elosztott trace kontextusinformációkat terjesszék. Két mezőt határoz meg, amelyek az HTTP kérés fejlécében a trace flow terjesztésére szolgálnak. Nézzük meg ezeket a két mezőt a szabványos definícióban:

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

nyom szülői mező

A trace parent mező specifikációja az Extended Baccos Paradigma (ABNF) formájában van definiálva, és 4 részből áll:
verzió - traceid - parentid/spanid - traceflags

Például:
00-480e22a2781fe54d992d878662248d94-b4b37b64bb3f6141-00

  • version: 8 位,系统适配的追踪上下文版本,当前位 00
  • trace-id: 16 字节,追踪整体的标识。用于在系统中标识一个分布式追踪整体,Az érték pontosan ugyanaz ugyanabban a linkben
  • parent-id/span-id: 8 bájt, amely a jelenlegi span szülőjét fejezi ki egy bejövő vagy kimenő kérésben.
  • trace-flags: 8 位,调用者的建议标志,可以考虑为调用者的建议,限制为 3 个原因:信息或是滥用,调用方的错误,或者在调用方与被调用方的不同负载。

Minden mező hexadecimalistal van kódolva, ahogy az alábbi képen is látható:



.NET elosztott követés

Az elosztott követés egy diagnosztikai technika, amely segíti a mérnököket a hibák és teljesítményproblémák lokalizálásában alkalmazásokban, különösen azokban, amelyek több számítógép vagy folyamat között eloszlanak. Ez a technika összekapcsolja a különböző alkalmazáskomponensek által végzett munkát az alkalmazásban végzett kéréskövetésen keresztül, és elválasztja azokat az alkalmazás által végzett egyéb munkáktól, amelyeket az alkalmazás párhuzamos kérések kezelése közben végezhet. Például egy terheléselosztó először kaphat egy kérést egy tipikus webszolgáltatásra, majd továbbíthatja azt egy webszerver folyamatnak, majd több lekérdezést küldhet ki az adatbázisnak. Az elosztott követéssel a mérnökök meg tudják különböztetni, hogy ezek a lépések meghibáskodtak-e, mennyi ideig tart minden lépés, és milyen üzenetek kerülhetnek rögzítésre az egyes lépések futtatásakor.

A .NET formátumban a System.Diagnostics.Activity könyvtárat úgy konfigurálták, hogy a W3C szabványt használja. A W3C-stílusú traceparent fejléc, a Request-ID fejlécét ASP.NET Core 2.0-ban adták hozzá. Ha a W3C Trace Context megfelelőnek megfelelő, traceparent fejlécre szeretnéd változtatni, állítsd be az Activity.DefaultIdFormat statikus tulajdonságot W3C-re, amikor elindítod a programot. A kódex a következő:
a tesztfolyamat,Böngésző -> A szolgáltatás (/http, a backend HttpClient-et használ a B szolgáltatás kérésére) interfész -> B szolgáltatás (/teszt) interfész, A szolgáltatás saját Trace Context-et és Service B Trace Context-et adja ki, a kód a következő:
Indítsa az A és B járatokat, ahogy az alábbi ábrán látható:



A böngésző megnyitja az A szolgáltatást, ahogy az alábbi ábrán látható:


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

Válasz tartalom:{"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:
{
  Dátum: 2025. dec. 22., hétfő, 01:37:21 GMT
  Szerver: Kestrel
  Átvitel-kódolás: chunked
  Kapcsolat: életben maradj
  Tartalomtípus: application/json; charset=utf-8
}, Request = Metódus: GET, RequestUri: 'http://localhost.charlesproxy.com:5551/test', Verzió: 1.1, Tartalom: <null>, Fejlécek:
{
  traceparent: 00-9891603e6c4921598951f425d98e4df7-e0336cc56a4f2150-00
}, RequestTaskStatus = RanToCompletion }
--------------------------------------------------
A Charles Proxy csomagrögzítő eszköz használatával a kérés és a válasz a következő:



Ha le akarod tiltani a HttpClient traceparent-átvitelét, a környezeti változók a következőképpen vannak beállítva:

Utalás:

A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.




Előző:A 010 Editor alapértelmezés szerint nem tartalmaz DEX sablont
Következő:Front-end projekt fordítás Nem lehet beállítani az undefined tulajdonságait (beállítani 'parent')
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com