Описание тега distributed-tracing
Распределенная трассировка
Распределенная трассировка направлена на обеспечение лучшей наблюдаемости в распределенных системах и микросервисах для целей мониторинга производительности и устранения неполадок.
Современные интернет-сервисы часто реализуются в виде сложных крупномасштабных распределенных систем. Эти приложения состоят из наборов программных модулей, которые могут разрабатываться разными командами, возможно, на разных языках программирования, и могут охватывать многие тысячи машин на нескольких физических объектах. Инструменты, которые помогают понять поведение системы и рассуждать о проблемах с производительностью, неоценимы в такой среде.
Источник: Dapper, крупномасштабная инфраструктура трассировки распределенных систем.
Как это работает в двух словах
Распределенная трассировка работает путем сбора различных точек входа и выхода, а также полезных промежуточных данных и показателей, выполняемых запросом, до тех пор, пока окончательный ответ не будет доставлен запрашивающей стороне. Некоторые системы распределенной трассировки собирают эту информацию полностью автоматически, в то время как другие требуют ручной обработки кода.
При входе в систему запросу обычно присваивается уникальный Trace ID. Затем этот идентификатор распространяется на все участвующие системы. Информация, собранная таким образом, отправляется на какой-то бэкэнд для сбора данных. Затем коллектор объединяет данные с помощью идентификатора трассировки, показывая, таким образом, полный запрос, проходящий через распределенную систему.
Обычно включаемые метрики включают время запроса, задержку, ошибки, коды состояния и т. Д., Но не ограничиваются этим.
Реализации с открытым исходным кодом:
Существует несколько реализаций с открытым исходным кодом для распределенной трассировки:
Единый дистрибутив библиотек для метрик и распределенной трассировки с минимальными накладными расходами, позволяющий экспортировать данные в несколько бэкэндов.
Независимые от поставщика API-интерфейсы и инструменты для распределенной трассировки
Zipkin - это распределенная система отслеживания. Он помогает собирать данные о времени, необходимые для устранения проблем с задержкой в микросервисных архитектурах. Он управляет как сбором, так и поиском этих данных.
Jaeger, вдохновленный Dapper и OpenZipkin, представляет собой распределенную систему отслеживания, выпущенную с открытым исходным кодом Uber Technologies. Он используется для мониторинга и устранения неполадок в распределенных системах на базе микросервисов.
Также существует рабочая группа W3, целью которой является стандартизация распространения контекста в различных системах распределенной трассировки:
Поскольку распределенная трассировка имеет решающее значение для мониторинга производительности приложений, большинство поставщиков APM так или иначе приняли ее. Известными поставщиками APM, предлагающими распределенную трассировку, являются AppDynamics, DynaTrace, Instana, Lightstep или New Relic.