Вибірка

Налаштування вибірки в OpenTelemetry .NET

Вибірка контролює, які трасування записуються та експортуються. Зменшуючи кількість зібраних відрізків, вибірка допомагає контролювати накладні витрати та обсяг телеметрії.

У OpenTelemetry рішення про вибірку зазвичай приймаються під час запуску трасування (вибірка на початку) і потім передаються до підлеглих служб через контекст.

Налаштування вибірки

У .NET налаштуйте вибірку на TracerProvider за допомогою SetSampler:

using OpenTelemetry;
using OpenTelemetry.Trace;

var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .SetSampler(new TraceIdRatioBasedSampler(0.25))
    .Build();

Цей приклад вибірково зберігає приблизно 25% трасувань.

Вбудовані вибірки

OpenTelemetry .NET SDK надає кілька вбудованих реалізацій вибірки. Їх можна налаштувати в коді або за допомогою змінних середовища.

AlwaysOn

Робить вибірку всіх трасувань.

Корисно в середовищах розробки або налагодження, де потрібна повна видимість.

AlwaysOff

Не вибирає жодного трасування.

Корисно для вимкнення трасування без видалення інструментування.

TraceIdRatioBased

Вибірково зберігає трасування на основі фіксованої ймовірності.

.SetSampler(new TraceIdRatioBasedSampler(0.1)) // 10%

Зазвичай використовується в продуктивному середовищі для зменшення обсягу телеметрії, при цьому все ще захоплюючи репрезентативну підмножину трасувань.

ParentBased

Використовує рішення про вибірку батьківського відрізка, якщо він існує.

Якщо батьківського відрізка немає, він делегує рішення кореневому механізму вибірки. Це допомагає забезпечити послідовні рішення про вибірку у розподілених службах, які беруть участь у тому ж трасуванні.

Стандартна вибірка

Зазвичай .NET SDK використовує вибірку на основі батьківського відрізка з завжди увімкненим кореневим механізмом вибірки.

Це означає:

  • нові кореневі трасування вибираються
  • підлеглі відрізки слідують рішенню про вибірку батьківського відрізка

Налаштування через змінні середовища

Вибірку також можна налаштувати за допомогою змінних середовища, що корисно для контейнеризованих та хмарних розгортань.

OTEL_TRACES_SAMPLER

Вказує, який механізм вибірки використовувати.

Поширені значення включають:

  • always_on
  • always_off
  • traceidratio
  • parentbased_always_on
  • parentbased_always_off
  • parentbased_traceidratio

OTEL_TRACES_SAMPLER_ARG

Вказує аргумент для налаштованого механізму вибірки.

Наприклад:

OTEL_TRACES_SAMPLER=traceidratio
OTEL_TRACES_SAMPLER_ARG=0.25

Це налаштовує рівень вибірки на 25%.

Рекомендації для продуктового середовища

На етапі розробки часто цілком прийнятно використовувати вибірку AlwaysOn.

У виробничому середовищі поширеним підходом є використання вибірки на основі батьківських обʼєктів із кореневим механізмом вибірки, що працює за співвідношенням. Це дозволяє збалансувати обсяг телеметрії та узгодженість трасувань між сервісами.

Якщо вам потрібно приймати рішення щодо вибірки на основі завершених трасувань (наприклад, зберігати лише повільні трасування або трасування з помилками), використовуйте вибірку на основі кінцевих даних у OpenTelemetry Collector.

Додатково


Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (cf1a5745)