Три столпа наблюдаемости
Разберитесь в трассировках, метриках и журналах.
«Три столпа наблюдаемости» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Три столпа наблюдаемости
- Распределённая трассировка
- Сбор метрик
- Экспорт в серверные системы