• Русский
  • Архитектура

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

    Содержание

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

    1. Istio System

      • istio-proxy
        Sidecar-прокси, который автоматически захватывает и генерирует данные трассировки для взаимодействия между сервисами без изменения кода.
      • istiod
        Управляет конфигурацией и жизненным циклом istio-proxy, включая настройку трассирования для service mesh.
    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 визуализирует результаты на основе полученных данных.