OpenTelemetry в .NET: трассировка, которая помогает расследовать ошибки

Wait 5 sec.

Привет, Хабр! В прошлом материале про поиск причин сбоев мы разбирали структурированное логирование, BeginScope и классификацию событий на примере передачи актов в Единый реестр интернет-рекламы (ЕРИР). Продолжим тему.Логи помогают узнать подробности события, но путь запроса через несколько сервисов по ним не соберешь. Особенно когда непонятно, куда ушло время: на проверку данных, на сохранение документа или на ожидание ответа внешней системы. Распределенная трассировка помогает это понять. Настроим ее через OpenTelemetry и разберем, какие операции создавать самому, что к ним добавлять и как проверить, что все работает.За основу мы взяли демо-проект OrdTracingDemo: он содержит два ASP.NET Core приложения на .NET 10, OpenTelemetry Collector и Jaeger. Запросы можно отправлять через Swagger, а задержку и ошибку внешнего сервиса включать параметрами. Работать будем с передачей креативов, актов и статистики. Шлюз здесь учебный: к настоящему ЕРИР он не ходит, а маршруты в демо не совпадают с теми, что в WebAPI Медиаскаута. Дальше покажем настройку и ключевые решения на коротких примерах кода. Полную реализацию можно посмотреть и запустить из репозитория. Читать далее