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:
Настройте получение трассировочных данных в Grafana Tempo.
В файле конфигурации Grafana Tempo укажите:
distributor: receivers: otlp: protocols: http: endpoint: "URL_конечной_точки_ресивера"Где
endpoint— URL конечной точки ресивера трассировочных данных, например0.0.0.0:4318.Настройте получение трассировочных данных менеджером и агентами.
В файлах конфигурации менеджера
ppem-manager.ymlи агентовppem-agent.ymlукажите:otlp: traces: exporter: protocol: "http" endpoint_url: "URL_конечной_точки_экспортёра"Где
endpoint_url— URL конечной точки экспортёра трассировочных данных, напримерhttp://tempo.example.org:4318/v1/traces.Настройте работу Grafana с Grafana Tempo:
Перейдите в Home → Connections → Data sources.
Нажмите Add new data source.
Из Data source type выберите Tempo.
Введите имя источника данных, например
tempo-1.В Connection URL введите URL конечной точки экспортёра трассировочных данных, например
http://tempo.example.org.(Необязательно) Чтобы просмотреть список трассировок:
Перейдите в Home → Explore.
Выберите ранее созданный источник данных.