Телеметрия#
CedrusData позволяет трассировать выполнение запросов. Когда трассирование включено, для каждого запроса засекаются интервалы времени (spans) соответствующие различным стадиям выполнения или различным активностям, связанным с запросами.
Затем эти интервалы с вспомогательной информацией поступают либо в лог, либо в стороннюю систему, которая их собирает и позволяет отображать в графическом виде.
Трассирование запросов использует OpenTelemetry. Для конфигурации доступно 3 экспортера OpenTelemetry:
logging - для логирования интервалов в лог CedrusData.
otlp - передача интервалов по стандартному протоколу otlp в совместимый сервис (например, в Grafana Tempo).
jaeger - передача интервалов в Jaeger.
Необходимые библиотеки для поддерживаемых экспортеров включены в дистрибутив CedrusData. Для использования других типов экспортеров необходимо вручную добавить соответствующие библиотеки в директорию lib.
Конфигурация#
Для настройки трассирования используется автоконфигурация OpenTelemetry SDK.
Настройка трассирования производится в файле конфигурации jvm.config
. Параметры
задаются как Java Properties каждый на отдельной строке. Это означает, что для параметра
необходимо использовать префикс -D
, затем имя параметра, затем знак =
, затем
значение параметра. Например, для параметра otel.service.name
строка будет выглядеть
как: -Dotel.service.name=cedrus
OpenTelemetry SDK поддерживает 3 вида телеметрии: логи (logs), метрики (metrics) и трассирование (traces). В CedrusData используется только передача трассирования. Остальные виды телеметрии передаются другими способами. Поэтому из настроек, описанных в документации автоконфигурации OpenTelemetry SDK, доступны только те, которые относятся к трассировке. Настройки для логов и метрик не поддерживаются и при их использовании CedrusData выдаст ошибку.
Ниже приведено описание наиболее широко используемых параметров.
otel.sdk.disabled#
Тип: boolean
Допустимые значения:
true
,false
Значение по умолчанию:
false
Позволяет полностью отключить OpenTelemetry SDK. При отключении, интервалы перестанут собираться и передаваться в экспортеры.
otel.service.name#
Тип: string
Имя сервиса, как оно будет передаваться в экспортеры. Например, «CedrusData».
otel.traces.exporter#
Тип: string
Допустимые значения:
logging
,otlp
,jaeger
,none
Значение по умолчанию:
none
Тип экспортера OpenTelemetry для интервалов.
- none
- экспорт интервалов не производится.
- logging
- производится запись интервалов в логи CedrusData.
- jaeger
- производится запись интервалов в Jaeger(Необходимо дополнительно
указать адрес сервиса, принимающего otlp с помощью otel.exporter.jaeger.endpoint
).
- otlp
- производится экспорт интервалов по протоколу otlp (Необходимо дополнительно
указать адрес сервиса, принимающего otlp с помощью otel.exporter.otlp.endpoint
).
Возможно использование других типов экспортеров, но для этого необходимо установить библиотеку соответствующего экспортера в директорию библиотек CedrusData.
otel.exporter.otlp.endpoint#
Тип: string
Значение по умолчанию:
http://localhost:4317
Адрес сервиса, принимающего интервалы по протоколу otlp. Имеет смысл только когда
otel.traces.exporter
установлен в «otlp».
otel.exporter.jaeger.endpoint#
Тип: string
Значение по умолчанию:
http://localhost:14250
Адрес сервиса, принимающего интервалы по протоколу Jaeger. Имеет смысл только когда
otel.traces.exporter
установлен в «jaeger».
Примеры#
Экспорт в лог#
Добавьте следующие строки в jvm.config
для экспорта интервалов в лог узлов CedrusData:
-Dotel.service.name=CedrusData
-Dotel.traces.exporter=logging
Экспорт в OTLP и Jaeger#
Для демонстрации работы с OTLP или Jaeger запустим Jaeger в контейнере:
docker run -d --name jaeger \
-e COLLECTOR_OTLP_ENABLED=true \
-p 4317:4317 \
-p 14250:14250 \
-p 16686:16686 \
jaegertracing/all-in-one:1.41
После запуска контейнера, Jaeger UI будет доступен по адресу http://localhost:16686.
Добавьте следующие строки в jvm.config
для экспорта интервалов в Jaeger через протокол OTLP:
-Dotel.service.name=CedrusData
-Dotel.traces.exporter=otlp
-Dotel.exporter.otlp.endpoint=http://localhost:4317
Добавьте следующие строки в jvm.config
для экспорта интервалов в Jaeger через нативный протокол Jaeger:
-Dotel.service.name=CedrusData
-Dotel.traces.exporter=jaeger
-Dotel.exporter.jaeger.endpoint=http://localhost:14250