Resurse

Introducere

O resursă reprezintă entitatea care produce telemetrie, descrisă prin intermediul atributelor de resursă. De exemplu, un proces care produce telemetrie și rulează într-un container în Kubernetes are un nume de proces, un nume de pod, un namespace și, eventual, un nume de Kubernetes deployment. Toate cele patru atribute pot fi incluse în resursă.

În backend-ul tău de observabilitate, poți utiliza informațiile despre resursă pentru a investiga mai bine comportamentele relevante. De exemplu, dacă datele de tracing sau metricile indică o latență ridicată în sistem, poți restrânge investigația la un anumit container, pod sau Kubernetes deployment.

Dacă utilizezi Jaeger ca backend de observabilitate, atributele de resursă sunt grupate în fila Process:

O captură de ecran din Jaeger care prezintă un exemplu de atribute de resursă asociate unui trace

O resursă este asociată unui TracerProvider sau MetricProvider în momentul creării acestora, în timpul inițializării. Această asociere nu mai poate fi modificată ulterior. După asocierea resursei, toate span-urile și metricile produse de un Tracer sau Meter al furnizorului respectiv vor avea asociată aceeași resursă.

Atribute semantice cu valori implicite furnizate de SDK

SDK-ul OpenTelemetry furnizează anumite atribute în mod implicit. Unul dintre acestea este service.name, care reprezintă numele logic al serviciului. În mod implicit, SDK-urile atribuie valoarea unknown_service acestui atribut. De aceea, se recomandă setarea explicită a acestuia, fie în cod, fie prin variabila de mediu OTEL_SERVICE_NAME.

În plus, SDK-ul furnizează următoarele atribute de resursă pentru a se identifica: telemetry.sdk.name, telemetry.sdk.language și telemetry.sdk.version.

Detectoare de resurse

Majoritatea SDK-urilor pentru diferite limbaje de programare oferă un set de detectoare de resurse care pot identifica automat informații despre resurse din mediul în care rulează aplicația. Printre detectoarele de resurse uzuale se numără:

Resurse personalizate

Poți defini și propriile atribute de resursă, fie în cod, fie prin setarea variabilei de mediu OTEL_RESOURCE_ATTRIBUTES. Dacă este cazul, utilizează convențiile semantice pentru atributele de resursă.

De exemplu, poți specifica numele mediului de deployment folosind deployment.environment.name:

env OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=production yourApp