C# Academy · Урок

Три столпа наблюдаемости

Разберитесь в трассировках, метриках и журналах.

Урок 1 из 413 шагов

«Три столпа наблюдаемости» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.

Что такое наблюдаемость

Наблюдаемость — это возможность понять внутреннее состояние системы по данным, которые она выдаёт. Для работающей службы она помогает ответить на вопросы: здорова ли система, почему она работает медленно и что вышло из строя? Наблюдаемость опирается на три составляющие: трассировки, метрики и журналы.

Что такое OpenTelemetry

OpenTelemetry (OTel) — это независимый от поставщика стандарт и набор библиотек для создания и экспорта телеметрии. Благодаря одной системе инструментирования можно отправлять данные во множество серверных систем, таких как Jaeger, Prometheus или Grafana.

dotnet add package OpenTelemetry.Extensions.Hosting

Первая составляющая: журналы

Журналы — это записи отдельных событий с отметками времени («пользователь 42 вошёл в систему», «платёж не выполнен»). Они предоставляют подробный, понятный человеку контекст, но сами по себе могут быть слишком многочисленными и плохо поддаваться агрегации.

logger.LogInformation("Order {OrderId} placed by {UserId}", orderId, userId);

Вторая составляющая: метрики

Метрики — это числовые измерения, агрегированные во времени (число запросов, доля ошибок, процентили задержки, загрузка CPU). Их недорого хранить, поэтому они идеально подходят для панелей мониторинга и оповещений.

Третья составляющая: трассировки

Трассировки отслеживают один запрос по мере его прохождения через службы, разбивая его на измеряемые по времени отрезки. Они показывают, где расходуется время и какая зависимость вызвала замедление.

Как составляющие дополняют друг друга

Метрики сообщают что что-то не так (доля ошибок резко выросла). Трассировки показывают где возникла проблема (в службе платежей). Журналы объясняют почему (ссылка на null для конкретного заказа). Вместе они дают полную картину для отладки.

Главное — корреляция

Настоящая сила наблюдаемости раскрывается благодаря корреляции. Общий идентификатор трассировки, добавленный в журналы и отрезки, позволяет перейти от оповещения по метрике к точной трассировке и журналам одного неудачного запроса.

Сигналы в OpenTelemetry

OTel называет эти составляющие сигналами. В .NET им соответствуют знакомые примитивы: для трассировок используются Activity/ActivitySource, для метрик — Meter, а для журналов — ILogger.

Добавление OpenTelemetry в хост

Подключите нужные сигналы с помощью AddOpenTelemetry() и настройте трассировки и метрики. Каждая из них подробно рассматривается в следующих уроках.

builder.Services.AddOpenTelemetry()
    .WithTracing(tracing => { })
    .WithMetrics(metrics => { });

Атрибуты ресурса

Ресурс описывает сущность, создающую телеметрию (имя службы, версию и окружение). Единообразная настройка позволяет серверным системам правильно группировать и фильтровать данные.

builder.Services.AddOpenTelemetry()
    .ConfigureResource(r => r.AddService(
        serviceName: "checkout-api",
        serviceVersion: "1.4.0"));

Автоматическое и ручное инструментирование

OpenTelemetry предлагает автоматическое инструментирование для ASP.NET Core, HttpClient и других компонентов, а также ручное инструментирование, при котором Вы добавляете собственные интервалы и метрики для анализа особенностей бизнеса.

Быстрая проверка

Проверьте три столпа.

Повторение

Наблюдаемость опирается на три столпа: журналы (события, «почему»), метрики (агрегированные числа, «что») и трассы (интервалы отдельных запросов, «где»). OpenTelemetry — это независимый от поставщика стандарт, который представляет все три вида данных как сигналы, сопоставляемые в .NET с Activity, Meter и ILogger. Связь с помощью идентификаторов трасс и правильно настроенного ресурса объединяет их.

Можно начать бесплатно

Изучай C# с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
93
Уроки
346

Часто задаваемые вопросы

Урок «Три столпа наблюдаемости» бесплатный?

Да — полный текст урока «Три столпа наблюдаемости» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.

Чему я научусь в уроке «Три столпа наблюдаемости»?

Разберитесь в трассировках, метриках и журналах. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Три столпа наблюдаемости»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Три столпа наблюдаемости
  2. Распределённая трассировка
  3. Сбор метрик
  4. Экспорт в серверные системы
← Назад к C# Academy