OpenTelemetry#
CedrusData Catalog может генерировать и экспортировать трейсы OpenTelemetry.
Настройка#
CedrusData Catalog предоставляет возможность трассировки четырех ключевых компонентов системы: веб-сервера, API, хранилища, и файловой системы.
Для включения трассировки необходимо указать подсистемы, подлежащие трассировке. Вам также потребуется задать адрес OTLP сервиса, в который будут экспортированы трейсы. Например:
Допустимые значения telemetry.enabled
(могут быть заданы через запятую):
http
- трассировать HTTP-запросыapi
- трассировать вызовы методов ядра CedrusData Catalogstore
- трассировать обращения к хранилищу (SQLite, PostgreSQL)file_system
- трассировать обращения к файловым системам (S3, HDFS)all
- трассировать все перечисленные выше подсистемы
Трассировки различных подсистем организованы во вложенные span-ы. При получении HTTP запроса CedrusData Catalog открывает span подсистемы http
.
Далее обработчик запроса может обратиться к подсистеме store
для аутентификации и авторизации пользователя.
После этого контроль передается подсистеме api
, которая сделать некоторое количество вызовов подсистем store
и file_system
.
Вы также можете задать необязательный параметр telemetry.sampling-ratio
, который определяет процент пользовательских операций, подлежащих трассировке.
Значения данного параметра должны находиться в диапазоне от 0.0
до 1.0
. Например, при наличии следующей конфигурации CedrusData Catalog будет трассировать
приблизительно 50% запросов:
Пример интеграции с Jaeger#
Данный пример показывает как включить трассировку CedrusData Catalog и экспортировать трейсы в Jaeger, запущенный на том же компьютере, что и CedrusData Catalog.
Убедитесь, что у вас установлен Docker Server, и команда
docker
не требуетsudo
Создайте сеть Docker, которая будет использован CedrusData Catalog и Jaeger:
Запустите Jaeger. Обратите внимание, что мы явно включаем OTLP в Jaeger с помощью переменной окружения
COLLECTOR_OTLP_ENABLED
и выставляем его порт4317
:Убедитесь, что web-интерфейс Jaeger доступен по адресу http://localhost:16686.
Создайте файл конфигурации
config.properties
со включенной трассировкой. В данной конфигурации мы экспортируем трейсы в Jaeger по адресу http://example-jaeger:4317. Данный адрес будет доступен контейнеру CedrusData Catalog, который мы запустим в сети Dockerexample-network
на следующем шаге.Запустите контейнер CedrusData Catalog:
Выполните произвольную операцию к каталогу. В данном примере мы создадим еще один access token для пользователя
root
, чтобы потом проанализировать трейс данной операции:Откройте Jaeger UI по адресу http://localhost:16686, выберите Service
cedrusdata-catalog
и операциюPOST /v1/access-tokens
, нажмите кнопку «Find Traces». Выберите трейс и ознакомьтесь с его содержимым.(при необходимости) Остановите контейнеры и удалите ненужные ресурсы: