Nõuded: Mikroteenuse arhitektuuris, kui tekivad probleemid, on sageli väga keeruline tõrkeotsingut teha, teadmata, kas see on teenuse poolt visatud erand, võib-olla kirjutab teenus vea või on probleem teenuse poolt edastatud informatsiooniga, mis teenust kutsub. Kui kõigi päringute konteksti saab salvestada, st link kogu tehingupäringule, on kriitilise tähtsusega probleemi tõrkeotsing ja analüüs.
Läbivaatamine:
Erandivirna jäljed sobivad ideaalselt rakendustele, mis sihivad ühte protsessi, näiteks monoliitset rakendussüsteemi. Kuid teisest küljest, hajutatud rakenduste, nagu mikroteenuste arhitektuuride, käsitlemisel ei piisa virnajälgedest kogu sõnumijälje näitamiseks. Seetõttu muutuvad hajutatud jälgimistööriistad ja standardid vajalikuks. W3C määratleb selle jälje tüübi jaoks standardi, mida nimetatakse jälgimiskontekstiks.
Trace Context standard
W3C Trace Context dokumentatsioon:Hüperlingi sisselogimine on nähtav.
W3C Trace Context spetsifikatsioon määratleb standardid ja vormingud HTTP päiste jaoks hajutatud jälgimiskonteksti info levitamiseks. See määratleb 2 välja, mida kasutatakse jälitusvoo levitamiseks HTTP päringu päises. Vaatame neid kahte välja standarddefinitsioonis:
- traceparent: 用来描述在追踪图谱中到达请求的位置。它表示在追踪系统中到达请求的通用格式,被所有的 vendor 所理解。
- tracestate: 使用 vendor 特定的数据表示形式来扩展 traceparent,使用 name/value 对形式。在 tracestate 中保存信息是可选的。
jälgede väli
Jäljevanema välja spetsifikatsioon on määratletud laiendatud Baccos Paradigma (ABNF) kujul ja koosneb neljast osast:
Versioon - traceid - parentid/spanid - traceflags Näiteks:
00-480e22a2781fe54d992d878662248d94-b4b37b64bb3f6141-00
- version: 8 位,系统适配的追踪上下文版本,当前位 00
- trace-id: 16 字节,追踪整体的标识。用于在系统中标识一个分布式追踪整体,Väärtus on täpselt sama samas lingis。
- parent-id/span-id: 8 baiti, et väljendada praeguse spana vanemat sissetulevas või väljuvas päringus.
- trace-flags: 8 位,调用者的建议标志,可以考虑为调用者的建议,限制为 3 个原因:信息或是滥用,调用方的错误,或者在调用方与被调用方的不同负载。
Kõik väljad on kodeeritud kuueteistkümnendsüsteemis, nagu näidatud alloleval pildil:
.NET hajutatud jälgimine
Hajutatud jälgimine on diagnostikameetod, mis aitab inseneridel lokaliseerida rikkeid ja jõudlusprobleeme rakendustes, eriti neis, mis võivad olla hajutatud mitme arvuti või protsessi vahel. See tehnika seob erinevate rakenduskomponentide tehtud töö rakenduses päringute jälgimise kaudu ning eraldab selle muust tööst, mida rakendus võib teha samaaegsete päringute käsitlemisel. Näiteks võib koormuse tasakaalustaja esmalt saada päringu tüüpilise veebiteenuse kohta, seejärel edastada see veebiserveri protsessile ja seejärel esitada andmebaasile mitu päringut. Hajutatud jälgimise abil saavad insenerid eristada, kas need sammud ebaõnnestusid, kui kaua iga samm kestab ja milliseid sõnumeid võidakse iga sammu käivitamisel logida.
.NET-is on System.Diagnostics.Activity teek seadistatud kasutama W3C standardit. W3C-stiilis traceparent päise Request-ID päis lisati ASP.NET Core 2.0-s. Et muuta see traceparent päiseks, mis vastab W3C jälgimiskontekstile, määra programmi käivitamisel staatiline omadus Activity.DefaultIdFormat W3C-ks. Kood on järgmine:
Testimisprotsess,Brauser -> A teenus (/http, backend kasutab HttpClientit B-teenuse taotlemiseks) liides -> B teenuse (/test) liides, teenus A väljastab oma jälgimiskonteksti ja teenuse B jälgimiskonteksti, kood on järgmine:
Alustage teenuseid A ja B, nagu on näidatud järgmisel joonisel:
Brauser avab teenuse A, nagu näidatud järgmisel joonisel:
Id: 00-9891603e6c4921598951f425d98e4df7-bd06e8d507a43f42-00
TraceId: 9891603e6c4921598951f425d98e4df7
SpanId: bd06e8d507a43f42
ParentId:
Vastuse sisu:{"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:
{ Kuupäev: Esmaspäev, 22. dets 2025 01:37:21 GMT Server: Kestrel Ülekande-kodeerimine: killustatud Seos: hoia elus Sisutüüp: application/json; Charset=UTF-8 }, Request = Meetod: GET, RequestUri: 'http://localhost.charlesproxy.com:5551/test', Versioon: 1.1, Sisu: <null>, Päised:
{ traceparent: 00-9891603e6c4921598951f425d98e4df7-e0336cc56a4f2150-00 }, RequestTaskStatus = RanToCompletion } -------------------------------------------------- Kasutades Charles Proxy pakettide püüdmise tööriista, on päring ja vastus järgmised:
Kui soovite keelata HttpClienti traceparent'i edastamise, on keskkonnamuutujad seatud järgmiselt:
Viide:
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav. |