Архитектура

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

Содержание

Основные компоненты

  1. Istio System

    • istio-proxy
      Прокси-сайдкар, который автоматически захватывает и генерирует данные трассировки для взаимодействия между сервисами без изменения кода.
    • istiod
      Управляет конфигурацией и жизненным циклом istio-proxy, включая настройки трассирования для сервисной сетки.
  2. OpenTelemetry System

    • opentelemetry-operator
      Оператор на уровне кластера, отвечающий за развертывание и управление компонентом otel-collector, обеспечивающий возможность автоматического внедрения OTel.
    • otel-collector
      Принимает данные трассировки от приложений, фильтрует и группирует их, затем пересылает в jaeger-collector.
    • Tracing UI
      Самостоятельно разработанный интерфейс визуализации, интегрированный с API jaeger-query, поддерживающий многомерные условия запросов.
  3. Jaeger System

    • jaeger-operator
      Развёртывает и управляет компонентами jaeger-collector и jaeger-query.
    • jaeger-collector
      Принимает данные трассировки, пересланные и обработанные otel-collector, выполняет преобразование формата и записывает их в Elasticsearch.
    • jaeger-query
      Предоставляет API для запросов трассировок, поддерживая многокритериальный поиск, включая TraceID и метки.
  4. Слой хранения

    • 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 визуализирует результаты на основе возвращённых данных.