Распределенная трассировка в действии
OpenTracing – ответ на запрос времени.
Мы, конечно, помним, как во времена монолитных приложений, сосредоточенных в больших кластерах, разбирать инциденты разработки приходилось по крупицам, используя вторичные признаки – IP, время и так далее. Найти конкретный запрос конкретного клиента было практически нереально. Чтобы получить нужную информацию по проблеме, нужно было разбирать огромные массивы логов. Наборы bash-скриптов для диагностики передавались "по наследству" от старших разработчиков к "джунам". Но, как ни странно, мы научились более-менее сносно жить с этим.
Когда же главенствующую роль в разработке заняла микросервисная архитектура, ситуация стала намного более тяжелой. Сегодня структура приложений и взаимосвязь между микросервисами усложняются. Команд разработки становятся все больше, количество логов и точек отказа растет одновременно с количеством сервисов, время ответа растет. Вот бы иметь возможность генерировать некий сквозной ID, который пронизывал бы логи и не терялся при прохождении запроса через различные очереди и базы данных.
И такая возможность появилась – с технологией OpenTracing. Она представляет собой независимый набор API и инструментов для распределенной трассировки запросов. В общих чертах – система присваивает каждому запросу специальный идентификатор: TraceID. Благодаря нему мы можем анализировать конкретные проблемы, а не искать примерно подходящие по времени или по IP. Кроме того, внедрив OpenTracing в приложения, мы получаем ряд дополнительных преимуществ: тайминги отдельных кусков кода, детальный анализ ошибок, анализ связанности сервисов, мониторинг отдельных вызовов.
Полную статью читайте по ссылке.