• Русский
  • Настройка платформы распределённого трассирования с Service Mesh (устарело)

    Уведомление об устаревании

    Интеграция Alauda build of Jaeger (Jaeger 1.60.0) и Alauda Build of OpenTelemetry, описанная в этом документе, устарела и будет удалена в ACP 4.4. Для всех новых развертываний используйте новую интеграцию Alauda Distributed Tracing, описанную в Настройка платформы распределённого трассирования с Service Mesh.

    Чтобы перенести существующую установку на новый стек, выполните Миграция на Jaeger v2.

    Alauda Service Mesh поддерживает распределённое трассирование посредством интеграции со следующими компонентами:

    • Alauda Build of Jaeger: настраиваемая дистрибуция, основанная на проекте с открытым исходным кодом Jaeger. Она обеспечивает сквозную видимость запросов в сложных распределённых системах.

    • Alauda Build of OpenTelemetry: на основе проекта OpenTelemetry. Этот компонент упрощает сбор телеметрических данных по метрикам, логам и трассировкам за счёт управления OpenTelemetry Collector и инструментированием рабочих нагрузок.

    OpenTelemetry Collector выступает в роли промежуточного звена для телеметрических сигналов. Он поддерживает несколько форматов данных и предоставляет стандартизированный конвейер для обработки и экспорта телеметрии в такие backend-системы, как Jaeger.

    Настройка сбора данных распределённого трассирования с Service Mesh

    Вы можете интегрировать Alauda Service Mesh с OpenTelemetry, чтобы инструментировать, генерировать, собирать и экспортировать трассы, метрики и логи OpenTelemetry для анализа и понимания производительности и поведения вашего ПО.

    Предварительные требования

    Порядок действий

    Добавьте метку проекта для пространства имён istio-system:

    kubectl label namespace istio-system cpaas.io/project=cpaas-system --overwrite

    Установите экземпляр Jaeger в пространстве имён istio-system.

    Обратитесь к скрипту установки в Deploying a Jaeger Instance и используйте приведённую ниже примерную команду для развертывания предназначенного для Istio экземпляра Jaeger:

    INFO

    Параметр --jaeger-es-index-prefix задаёт префикс индекса в Elasticsearch, где хранятся данные трассировки.

    • Для однокластерного service mesh мы рекомендуем завершать префикс именем кластера, например istio-tracing-cluster-1.
    • Для многокластерного service mesh трассы из всех кластеров должны храниться в одном индексе; мы рекомендуем завершать префикс meshID, например istio-tracing-mesh-1.
    ./install-jaeger.sh \
      --es-url='https://xxx' \
      --es-user-base64='xxx' \
      --es-pass-base64='xxx' \
      --target-namespace='istio-system' \
      --jaeger-basepath-suffix='/istio/jaeger' \
      --jaeger-es-index-prefix='istio-tracing-xxx'

    После успешного завершения установки вы сможете получить доступ к Jaeger UI для запросов к трассам по адресу <platform-url>/clusters/<cluster>/istio/jaeger.

    Перейдите к Alauda Build of OpenTelemetry в OperatorHub и создайте OpenTelemetryCollector в пространстве имён istio-system.

    Пример OpenTelemetry Collector в пространстве имён istio-system

    apiVersion: opentelemetry.io/v1beta1
    kind: OpenTelemetryCollector
    metadata:
      name: otel
      namespace: istio-system
    spec:
      observability:
        metrics: {}
      deploymentUpdateStrategy: {}
      config:
        processors:
          batch: {}
        exporters:
          debug: {}
          otlp:
            endpoint: 'dns:///jaeger-prod-collector-headless.istio-system:4317'
            balancer_name: round_robin
            tls:
              insecure: true
        receivers:
          otlp:
            protocols:
              grpc:
                endpoint: '0.0.0.0:4317'
        service:
          pipelines:
            traces:
              exporters:
                - debug
                - otlp
              processors:
                - batch
              receivers:
                - otlp
    1. Поле endpoint — это сервис коллектора Jaeger в пространстве имён istio-system.

    Обновите ресурс Istio, чтобы включить трассирование и определить провайдера трассировки OpenTelemetry:

    Пример включения трассирования через meshConfig

    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
      # ...
    spec:
      namespace: istio-system
      # ...
      values:
        meshConfig:
          enableTracing: true
          extensionProviders:
          - name: otel
            opentelemetry:
              port: 4317
              service: otel-collector.istio-system.svc.cluster.local
    1. Поле service — это сервис коллектора OpenTelemetry в пространстве имён istio-system.

    Обновите ресурс Telemetry, чтобы включить провайдера трассировки, определённого в meshConfig:

    Пример ресурса Istio Telemetry

    apiVersion: telemetry.istio.io/v1
    kind: Telemetry
    metadata:
      name: asm-default
      namespace: istio-system
      # ...
    spec:
      # ...
      tracing:
        - providers:
            - name: otel
          randomSamplingPercentage: 100
    NOTE

    После того как вы убедитесь, что трассы отображаются, уменьшите значение randomSamplingPercentage, чтобы сократить количество запросов.

    Удаление распределённого трассирования

    Если вам больше не нужна интеграция Alauda Build of OpenTelemetry и Alauda build of Jaeger с Service Mesh, выполните следующие шаги, чтобы удалить её.

    WARNING

    После удаления исторические трассы, хранящиеся в Elasticsearch, больше не будут доступны через Jaeger UI.

    Удаление конфигурации трассирования Service Mesh

    Перед удалением базовых компонентов удалите конфигурацию трассирования на стороне mesh, чтобы Istio перестал отправлять спаны в устаревший коллектор.

    1. Отредактируйте ресурс Telemetry и удалите запись провайдера tracing, которая ссылается на провайдера otel:

      kubectl -n istio-system edit telemetry asm-default

      В качестве альтернативы можно удалить конфигурацию tracing в неинтерактивном режиме с помощью kubectl patch:

      kubectl -n istio-system patch telemetry asm-default --type=json -p='[{"op": "remove", "path": "/spec/tracing"}]'
    2. Отредактируйте ресурс Istio и удалите запись meshConfig.extensionProviders с именем otel либо установите meshConfig.enableTracing в false:

      kubectl edit istio default

      В качестве альтернативы можно задать meshConfig.enableTracing значение false в неинтерактивном режиме с помощью kubectl patch:

      kubectl patch istio default --type=merge -p='{"spec":{"values":{"meshConfig":{"enableTracing":false}}}}'

    Удаление экземпляра OpenTelemetry Collector

    Войдите в кластер, где установлена интеграция, и удалите экземпляр OpenTelemetryCollector:

    kubectl -n istio-system delete opentelemetrycollector otel

    Удаление Alauda Build of OpenTelemetry Operator

    Пропустите этот шаг, если другие рабочие нагрузки в кластере по-прежнему зависят от Operator Alauda Build of OpenTelemetry.

    Вы можете удалить Operator, используя представление Administrator в Web Console.

    Шаги

    • В разделе MarketplaceOperatorHub → используйте поле поиска, чтобы найти Alauda build of OpenTelemetry.
    • Щёлкните заголовок Alauda build of OpenTelemetry, чтобы открыть его сведения.
    • На странице сведений Alauda build of OpenTelemetry нажмите кнопку Uninstall в правом верхнем углу.
    • В окне Uninstall "opentelemetry-operator"? нажмите Uninstall.

    Удаление экземпляра Jaeger

    Войдите в кластер, где установлена интеграция, и удалите экземпляр Jaeger и связанные с ним ресурсы. Приведённые ниже имена ресурсов соответствуют значениям по умолчанию, создаваемым install-jaeger.sh с --target-namespace='istio-system'; скорректируйте их, если при установке вы использовали другое значение --jaeger-instance-name.

    kubectl -n istio-system delete ingress      jaeger-prod-query         --ignore-not-found
    kubectl -n istio-system delete podmonitor   jaeger-prod-monitor       --ignore-not-found
    kubectl -n istio-system delete jaeger       jaeger-prod               --ignore-not-found
    kubectl -n istio-system delete rolebinding  jaeger-prod-rb            --ignore-not-found
    kubectl -n istio-system delete role         jaeger-prod-role          --ignore-not-found
    kubectl -n istio-system delete sa           jaeger-prod-sa            --ignore-not-found
    kubectl -n istio-system delete secret       jaeger-prod-oauth2-proxy  --ignore-not-found
    kubectl -n istio-system delete secret       jaeger-prod-es-basic-auth --ignore-not-found
    kubectl -n istio-system delete configmap    jaeger-prod-oauth2-proxy  --ignore-not-found

    Удаление Alauda build of Jaeger Operator

    Пропустите этот шаг, если другие рабочие нагрузки в кластере по-прежнему зависят от Operator Alauda build of Jaeger.

    Вы можете удалить Operator, используя представление Administrator в Web Console.

    Шаги

    • В разделе MarketplaceOperatorHub → используйте поле поиска, чтобы найти Alauda build of Jaeger.
    • Щёлкните заголовок Alauda build of Jaeger, чтобы открыть его сведения.
    • На странице сведений Alauda build of Jaeger нажмите кнопку Uninstall в правом верхнем углу.
    • В окне Uninstall "jaeger-operator"? нажмите Uninstall.