О Alauda Distributed Tracing
Alauda Distributed Tracing записывает, как один запрос проходит через сервисы в распределённом приложении. Это помогает командам отслеживать путь запроса от начала до конца, понимать задержки на границах сервисов и устранять неполадки в облачных микросервисных средах.
Основные понятия распределённого трассирования
В современном приложении одно действие пользователя часто запускает работу во многих сервисах. Распределённое трассирование сопоставляет эти единицы работы, чтобы весь путь выполнения можно было анализировать как одну транзакцию.
Trace представляет путь запроса через систему от начала до конца. Каждый trace содержит один или несколько span.
Span представляет логическую единицу работы. Он записывает имя операции, время начала, длительность и необязательные метаданные, такие как tags и logs. Span'ы могут быть вложенными, чтобы показывать причинно-следственные связи между upstream- и downstream-операциями.
Как владелец сервиса, вы можете использовать Alauda Distributed Tracing для инструментирования приложений, понимания зависимостей сервисов, профилирования задержек и исследования сбоев.
С помощью Alauda Distributed Tracing вы можете:
- Отслеживать распределённые транзакции
- Оптимизировать производительность и задержки
- Выполнять анализ первопричин
Alauda Distributed Tracing может работать вместе с другими компонентами наблюдаемости:
- Alauda Build of OpenTelemetry v2 для сбора, обработки и пересылки telemetry data в Jaeger.
- Интеграция с Kiali для открытия данных trace из консоли service mesh.
Возможности
Alauda Distributed Tracing предоставляет следующие возможности:
- Интеграция с Kiali. При настройке с Alauda Service Mesh вы можете открывать данные распределённого трассирования непосредственно из консоли Kiali.
- Высокая масштабируемость. Back-end Jaeger спроектирован так, чтобы горизонтально масштабироваться вместе с трафиком приложений и ростом эксплуатации.
- Распространение распределённого контекста. Trace context может передаваться через границы сервисов, чтобы связанные span'ы объединялись в полный trace от начала до конца.
- Совместимость с Zipkin. Jaeger может принимать данные трассировки в формате Zipkin, что помогает командам мигрировать с существующей инструментации Zipkin с минимальными изменениями.
Для более общего обзора возможностей см. Возможности.
Архитектура
Alauda Distributed Tracing объединяет Jaeger v2, Alauda Build of OpenTelemetry v2 и Elasticsearch или OpenSearch для сбора, хранения и визуализации данных trace в Kubernetes.
Основные компоненты:
- Alauda Distributed Tracing (Jaeger): Этот компонент основан на Jaeger v2 и предоставляет back-end трассирования.
- Jaeger Binary. Основная среда выполнения построена на фреймворке OpenTelemetry Collector и может запускать специализированные по ролям развёртывания, такие как
collectorиquery, для приёма, хранения, поиска и визуализации данных trace. - Jaeger ES Rollover: Этот компонент управляет ресурсами rollover в Elasticsearch, такими как templates, aliases и ротация индексов, чтобы долгоживущие кластеры могли эффективно сохранять данные трассировки.
- jaeger-es-index-cleaner: Этот компонент периодически удаляет временные индексы, которые старше заданного периода хранения. Он используется с развёртываниями OpenSearch (а также с развёртываниями Elasticsearch, которые не используют ILM) для обеспечения политики хранения данных trace.
- Jaeger Binary. Основная среда выполнения построена на фреймворке OpenTelemetry Collector и может запускать специализированные по ролям развёртывания, такие как
- Alauda Build of OpenTelemetry v2: Этот компонент основан на проекте OpenTelemetry с открытым исходным кодом и предоставляет поддерживаемую дистрибуцию для приёма, обработки и экспорта telemetry data.
- OpenTelemetry Operator: Operator развёртывает и управляет экземплярами Jaeger в кластере и согласует ресурсы, необходимые для pipeline трассирования.
- OpenTelemetry Collector: Collector — это независимый от вендора компонент, который можно разместить перед Jaeger для приёма telemetry data, её обогащения или преобразования и последующей пересылки в один или несколько back-end'ов. Это также распространённая цель для библиотек инструментации, которые экспортируют telemetry data с использованием открытых стандартов, таких как OTLP.
- Elasticsearch: Elasticsearch хранит данные trace для поиска и анализа и служит хранилищем back-end для Alauda Distributed Tracing.
- OpenSearch: OpenSearch — это управляемый сообществом набор для поиска и аналитики с открытым исходным кодом, который также может служить хранилищем back-end для Alauda Distributed Tracing. Jaeger использует ту же реализацию хранилища для OpenSearch, что и для Elasticsearch.
Для более общего обзора архитектуры см. Архитектура.