Архитектура
Эта архитектура построена на технологических стеках Istio, OpenTelemetry и Jaeger, обеспечивая полный жизненный цикл управления распределённым трассированием. Система состоит из пяти основных модулей: сбор данных, передача, хранение, запросы и визуализация.

Содержание
Основные компоненты
-
Istio System
- istio-proxy
Прокси-сайдкар, который автоматически захватывает и генерирует данные трассировки для взаимодействия между сервисами без изменения кода.
- istiod
Управляет конфигурацией и жизненным циклом istio-proxy, включая настройки трассирования для сервисной сетки.
-
OpenTelemetry System
- opentelemetry-operator
Оператор на уровне кластера, отвечающий за развертывание и управление компонентом otel-collector, обеспечивающий возможность автоматического внедрения OTel.
- otel-collector
Принимает данные трассировки от приложений, фильтрует и группирует их, затем пересылает в jaeger-collector.
- Tracing UI
Самостоятельно разработанный интерфейс визуализации, интегрированный с API jaeger-query, поддерживающий многомерные условия запросов.
-
Jaeger System
- jaeger-operator
Развёртывает и управляет компонентами jaeger-collector и jaeger-query.
- jaeger-collector
Принимает данные трассировки, пересланные и обработанные otel-collector, выполняет преобразование формата и записывает их в Elasticsearch.
- jaeger-query
Предоставляет API для запросов трассировок, поддерживая многокритериальный поиск, включая TraceID и метки.
-
Слой хранения
- Elasticsearch
Распределённый движок хранения, поддерживающий эффективную запись и поиск огромного объёма данных Span.
Поток данных
-
Процесс записи Istio
Application -> jaeger-collector -> Elasticsearch
istio-proxy автоматически захватывает данные трассировки при взаимодействии между сервисами, которые затем напрямую отправляются в jaeger-collector для сохранения в Elasticsearch.
-
Процесс записи OpenTelemetry
Application -> otel-collector -> jaeger-collector -> Elasticsearch
Приложение генерирует данные Span через SDK или автоматическое внедрение, которые стандартизируются otel-collector и далее сохраняются в Elasticsearch через jaeger-collector.
-
Процесс запроса
User -> Tracing UI -> jaeger-query -> Elasticsearch
Пользователь отправляет условия запроса через UI, jaeger-query извлекает данные из Elasticsearch; UI визуализирует результаты на основе возвращённых данных.