Конкурентный обработчик логов: worker pool, каналы, корреляция по request_id, JSON‑отчёт, graceful shutdown.
Войдите, чтобы начать проектВас будит звонок дежурного инженера в 3 часа ночи: «Клиенты жалуются, что не могут оформить заказы! Около 15% платежей падают с таймаутом. Нужно срочно найти причину!» Вы открываете мониторинг — графики показывают всплеск ошибок, но детали размыты. Ваша система — микросервисная архитектура из user-service, order-service, payment-service и inventory-service. Каждый сервис пишет свои логи в отдельные файлы. За последние 2 часа накопилось гигабайты логов, десятки тысяч записей.
Проблема в том, что логи разрознены: один запрос клиента проходит через несколько сервисов, и каждый записывает свою часть истории. Чтобы понять, почему конкретный платёж упал, нужно найти все записи с одним request_id в разных файлах, выстроить хронологию событий и найти, где именно произошла ошибка. Делать это вручную с помощью grep и awk — часы работы. Вам нужен инструмент, который быстро обработает множество лог-файлов конкурентно, сгруппирует записи по request_id, выстроит временную последовательность событий и сформирует структурированный отчёт для быстрого анализа.
Именно такие инструменты используют в production для форензики инцидентов и постмортем-анализа. Системы вроде ELK Stack (Elasticsearch, Logstash, Kibana), Grafana Loki или Datadog решают похожие задачи, но в масштабе предприятия. В этом проекте мы создадим свою версию — легковесную, но мощную CLI-утилиту для анализа логов.
Вы построите производительный инструмент форензики логов для микросервисных систем. Утилита конкурентно сканирует десятки файлов, парсит записи, извлекает структурированные данные, группирует события по request_id для восстановления полной хронологии распределённых запросов и формирует JSON-отчёт с детализацией всех неудачных запросов — от первой ошибки до последствий.
Проект научит вас работать с реальными вызовами распределённых систем: как эффективно обрабатывать большие объёмы данных с помощью worker pool, как координировать горутины через каналы, как обеспечить корректное завершение при прерывании и как строить устойчивые системы обработки данных. Такие навыки критически важны при работе с production-системами, где нужно быстро находить причины инцидентов среди миллионов записей логов. Проект акцентирует внимание на паттернах конкурентной обработки: worker pool для параллелизма, backpressure для управления нагрузкой, корректное завершение через context и sync.WaitGroup, а также устойчивую обработку ошибок без потери данных.
request_id для восстановления полной хронологии распределённых запросов.sync.WaitGroup.context.Context и sync.WaitGroup.internal/parser, scanner, processor, reporter).