Înapoi la Blog
OpenTelemetryObservabilitateCosturi cloud

OpenTelemetry la scară: trase utile și costuri sub control

V
Vadym
•12 septembrie 2026•4 min citire
Focus
OpenTelemetry
Reading
4 min
Format
Practical guide
OpenTelemetry la scară: trase utile și costuri sub control

Sistemele distribuite pot genera mai multă telemetrie decât o echipă își permite să păstreze sau să investigheze eficient. Serviciile, reîncercările și joburile de fundal multiplică span-urile chiar dacă traficul clienților crește puțin. O strategie practică de observabilitate trebuie să stabilească ce colectează, ce păstrează și cum detectează pierderile din pipeline.

OpenTelemetry oferă un loc potrivit pentru aceste decizii, în afara logicii aplicației. Ghidul propune o arhitectură de pornire, nu un procent universal de eșantionare și nici o reducere garantată a costurilor.

Măsoară mai întâi volumul facturabil

Înregistrează span-urile primite pe secundă, octeții exportați, numărul mediu de span-uri pe trasă și retenția backend-ului. Separă traficul aplicației de verificările de sănătate și probele sintetice. Află dacă backend-ul facturează ingestia, stocarea, câmpurile indexate sau o combinație.

Măsoară și CPU-ul și memoria Collector-ului. Reducerea ingestiei în backend prin mutarea procesării într-un Collector nu elimină costul acelei procesări. O bază de comparație utilă include infrastructura de colectare și timpul necesar inginerilor pentru a găsi o cerere eșuată reprezentativă.

Alege momentul deciziei de eșantionare

Eșantionarea inițială, numită head sampling, decide aproape de începutul unei trase și păstrează relativ puțină stare. Eșantionarea finală, tail sampling, așteaptă span-uri și poate folosi rezultate observate, precum erorile sau latența. Totuși, nu poate recupera span-uri deja eliminate de SDK-ul aplicației.

Documentația procesorului tail sampling descrie politicile și stocarea temporară necesară. Confirmă că distribuția Collector aleasă include procesorul și validează configurația pentru versiunea exactă pe care o instalezi.

Trimite fiecare trasă către aceeași instanță de eșantionare

Un load balancer round-robin obișnuit poate împărți span-urile aceleiași trase între mai multe instanțe. Fiecare vede atunci doar o parte din cerere. Rutează după trace ID înaintea nivelului de eșantionare, astfel încât span-urile asociate să ajungă la aceeași instanță.

Aplicațiile trimit span-uri către rutarea după trace ID. Fiecare trasă ajunge la aceeași instanță de eșantionare, iar trasele selectate merg către backend.

Ghidul de deployment gateway OpenTelemetry descrie această organizare cu un exporter de load balancing înaintea Collector-elor care fac tail sampling. Scalarea necesită atenție, deoarece schimbarea instanțelor disponibile poate modifica distribuția traselor.

Începe cu o politică simplă

O politică inițială poate păstra trasele cu erori, trasele care depășesc un prag de latență și un eșantion redus din rest. Acesta este un fragment ilustrativ pentru procesor, nu o configurație Collector completă:

processors:
  tail_sampling:
    decision_wait: 15s
    num_traces: 50000
    policies:
      - name: errors
        type: status_code
        status_code:
          status_codes: [ERROR]
      - name: slow-requests
        type: latency
        latency:
          threshold_ms: 1500
      - name: baseline
        type: probabilistic
        probabilistic:
          sampling_percentage: 5

Conectează procesorul la un pipeline de trase cu receivere și exportere. Pentru aceste politici simple, potrivirea oricăreia poate determina păstrarea trasei; eșantionul de bază nu limitează volumul total exportat la cinci procente. În timpul unui incident, politica de erori poate păstra mult mai mult trafic decât în mod normal.

Valorile sunt exemple. Alege intervalul de decizie din întârzierile observate ale span-urilor, inclusiv activitatea asincronă. Estimează numărul de trase active înmulțind trasele noi pe secundă cu intervalul de decizie, adaugă rezervă și testează memoria sub sarcină. Numărul traselor nu este suficient: ele conțin span-uri de dimensiuni și cantități diferite.

Monitorizează Collector-ul ca pe un serviciu de producție

Urmărește refuzurile de recepție, erorile de export, presiunea asupra cozilor, restarturile și deciziile de eșantionare prin metricile versiunii instalate. Aplică protecția memoriei la începutul pipeline-ului, configurează cozi și reîncercări cu limite și stabilește comportamentul în cazul indisponibilității backend-ului.

Exclude de la sursă credențialele și corpurile sensibile ale cererilor. Elimină atributele necesare înainte de export. Eșantionarea controlează volumul, nu reprezintă o barieră de confidențialitate.

Extinde configurația pe baza rezultatelor de depanare

Testează noul pipeline pe un singur serviciu. Compară volumul exportat, resursele Collector-ului, completitudinea traselor și posibilitatea de a găsi erorile cunoscute. Introdu o eroare controlată și o cerere lentă, apoi identifică-le în backend.

Păstrează contoare de cereri neeșantionate sau alte metrici potrivite pentru calculul ratelor și disponibilității. Un set de trase orientat intenționat spre erori nu trebuie tratat ca o măsurătoare nepărtinitoare a ratei de eroare.

Extinde configurația numai după îndeplinirea unor criterii explicite: trasele sunt utile, colectarea rămâne stabilă la vârfuri de trafic și ingestia facturată scade efectiv. Revizuiește politica atunci când se schimbă profilul traficului sau responsabilitatea serviciilor.

Ai nevoie de ajutor cu infrastructura?

Să lucrăm împreună

Disponibil pentru proiecte B2B remote la nivel global.

Ia Legătura