4.8. Интеграция с инструментами трассировки #

PPEM поддерживает распределённую трассировку запросов. Трассировочные данные экспортируются из PPEM с помощью OTLP (OpenTelemetry protocol), затем отправляются ресиверу, поддерживающему OTLP, например pgpro-otel-collector, OpenTelemetry Collector, Grafana Tempo или Jaeger.

Примечание

Распределённая трассировка применяется к запросам к менеджеру и агентам, а также к их базам данных. Она также применяется к запросам, которые используются для внутренних операций менеджера и агентов.

При этом распределённая трассировка не применяется к запросам к другим службам.

4.8.1. Архитектура трассировки #

Ниже приведён пример архитектуры распределённой трассировки.

Рисунок 4.1. Архитектура распределённой трассировки


Пользователь взаимодействует с PPEM через веб-приложение. Чтобы выполнить пользовательские действия, веб-приложение отправляет запросы менеджеру.

Получив запрос от веб-приложения или API, менеджер создаёт корневой спан (span), генерирует контекст трассировки, состоящий из трассировки и идентификатора спана, затем сохраняет временную метку начала спана. Затем контекст трассировки связывается с запросом и используется на протяжении всего времени обработки этого запроса. После завершения обработки сохраняется временная метка окончания спана.

Менеджер создаёт дочерний спан для каждого запроса к репозиторию или агентам. Дочерний спан имеет уникальный идентификатор, а также временную метку начала и окончания, но переиспользует идентификатор корневого спана. Дочерний спан также хранит идентификатор родительского спана. В начале или при окончании дочернего спана обновляется его контекст трассировки.

Менеджер передаёт контекст трассировки с каждым запросом к агенту. Как и в случае с менеджером, получив запрос, агент создаёт дочерний спан и при этом переиспользует полученный идентификатор трассировки. Агент также создаёт дочерние спаны при отправке запросов к базам данных.

Менеджер и агенты периодически отправляют трассировочные данные ресиверу, а он сохраняет их в хранилище. Трассировочные данные с одинаковым идентификатором образуют единую трассировку, которую можно просмотреть с помощью Jaeger или Grafana.

4.8.2. Интеграция с Grafana Tempo #

В этом разделе описывается, как обеспечить трассировку за счёт интеграции PPEM с Grafana Tempo.

Важно

Grafana Tempo используется в качестве примера, чтобы продемонстрировать процесс интеграции. Вы можете выбрать любое другое поддерживаемое хранилище трассировок на основании требований вашей организации.

В рамках этой интеграции PPEM отправляет трассировочные данные Grafana Tempo с помощью OTLP через HTTP для хранения и обработки. При необходимости трассировочные данные затем отправляются системе визуализации Grafana, где они представляются в виде графов.

Перед выполнением этой инструкции установите и настройте Grafana и Grafana Tempo. За подробной информацией обратитесь к официальной документации Grafana и Grafana Tempo.

Чтобы интегрировать PPEM с Grafana Tempo:

  1. Настройте получение трассировочных данных в Grafana Tempo.

    В файле конфигурации Grafana Tempo укажите:

    distributor:
        receivers:
            otlp:
                protocols:
                    http:
                      endpoint: "URL_конечной_точки_ресивера"

    Где endpoint — URL конечной точки ресивера трассировочных данных, например 0.0.0.0:4318.

  2. Настройте получение трассировочных данных менеджером и агентами.

    В файлах конфигурации менеджера ppem-manager.yml и агентов ppem-agent.yml укажите:

    otlp:
      traces:
        exporter:
          protocol: "http"
          endpoint_url: "URL_конечной_точки_экспортёра"

    Где endpoint_url — URL конечной точки экспортёра трассировочных данных, например http://tempo.example.org:4318/v1/traces.

  3. Настройте работу Grafana с Grafana Tempo:

    1. Перейдите в HomeConnectionsData sources.

    2. Нажмите Add new data source.

    3. Из Data source type выберите Tempo.

    4. Введите имя источника данных, например tempo-1.

    5. В Connection URL введите URL конечной точки экспортёра трассировочных данных, например http://tempo.example.org.

    6. (Необязательно) Чтобы просмотреть список трассировок:

      1. Перейдите в HomeExplore.

      2. Выберите ранее созданный источник данных.