Экспорт в серверные системы
Передавайте телеметрию сборщикам и инструментам OTLP.
«Экспорт в серверные системы» — бесплатный урок C# Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Передача телеметрии
Создание трасс и метрик — лишь половина задачи: необходимо экспортировать их в серверную систему, которая хранит, запрашивает и визуализирует данные. Для этого OpenTelemetry использует экспортёры.
Экспортёры
Экспортёр отправляет телеметрию в место назначения. Разные экспортёры предназначены для разных систем: консоли (для разработки), OTLP (стандартного протокола) и систем, предоставляемых конкретными поставщиками.
Консольный экспортёр
Консольный экспортёр выводит телеметрию в терминал и отлично подходит для проверки инструментирования во время разработки.
builder.Services.AddOpenTelemetry()
.WithTracing(t => t.AddConsoleExporter())
.WithMetrics(m => m.AddConsoleExporter());Что такое OTLP
OTLP (OpenTelemetry Protocol) — это независимый от поставщика формат передачи телеметрии. Экспорт через OTLP позволяет отправлять данные в любую серверную систему, совместимую с OTLP, не изменяя код приложения.
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocolНастройка экспортёра OTLP
Добавьте AddOtlpExporter и укажите конечную точку сборщика или серверной системы.
builder.Services.AddOpenTelemetry()
.WithTracing(t => t.AddOtlpExporter(o =>
{
o.Endpoint = new Uri("http://localhost:4317");
}))
.WithMetrics(m => m.AddOtlpExporter());Сборщик OpenTelemetry
Сборщик — это отдельный процесс, который принимает телеметрию, обрабатывает её (объединяет в пакеты, фильтрует и дополняет), а затем пересылает в одну или несколько серверных систем. Он отделяет приложение от конкретных поставщиков.
Зачем нужен сборщик
При прямой отправке данных поставщику приложение оказывается связанным с ним. Сборщик позволяет сменить поставщика или распределять данные между несколькими серверными системами, централизованно применять сэмплирование и удаление конфиденциальных данных, а также снижать нагрузку на службы.
Распространённые серверные системы
Трассы часто отправляются в Jaeger или Tempo, метрики — в Prometheus, а панели мониторинга — в Grafana. Журналы могут передаваться в Loki или стек ELK. Все эти системы могут получать OTLP через сборщик.
Объединение всех компонентов
Обычно ресурс, источники, измерители и экспортёр OTLP настраиваются в одном блоке, благодаря чему трассы и метрики передаются в сборщик.
builder.Services.AddOpenTelemetry()
.ConfigureResource(r => r.AddService("checkout-api"))
.WithTracing(t => t
.AddAspNetCoreInstrumentation()
.AddSource("Checkout.Orders")
.AddOtlpExporter())
.WithMetrics(m => m
.AddAspNetCoreInstrumentation()
.AddMeter("Checkout.Orders")
.AddOtlpExporter());Экспорт журналов
OpenTelemetry также экспортирует журналы. Подключите его к конвейеру журналирования, чтобы записи журналов содержали тот же контекст трассы и передавались в серверную систему через OTLP.
builder.Logging.AddOpenTelemetry(o =>
{
o.AddOtlpExporter();
});Пакетная обработка и надёжность
Экспортёры объединяют телеметрию в пакеты, чтобы снизить накладные расходы, и повторяют попытку при сбое. Настройте размер пакета и время ожидания в соответствии с объёмом данных и отдавайте предпочтение сборщику, который поглощает всплески нагрузки, чтобы потоки приложения никогда не блокировались во время экспорта.
Быстрая проверка
Проверьте экспорт в серверные системы.
Повторение
Экспортёры передают телеметрию в серверные системы. Консольный экспортёр помогает при разработке, а OTLP — это независимый от поставщика протокол, используемый с AddOtlpExporter. Отправка OTLP в сборщик OpenTelemetry отделяет приложение от поставщиков, централизует пакетную обработку, сэмплирование и маршрутизацию, а также распределяет данные по таким серверным системам, как Jaeger, Prometheus и Grafana. Журналы экспортируются таким же способом и содержат контекст трассы.
Часто задаваемые вопросы
Урок «Экспорт в серверные системы» бесплатный?
Да — полный текст урока «Экспорт в серверные системы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Экспорт в серверные системы»?
Передавайте телеметрию сборщикам и инструментам OTLP. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Экспорт в серверные системы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Три столпа наблюдаемости
- Распределённая трассировка
- Сбор метрик
- Экспорт в серверные системы