Трассировка
Модуль для сбора трассировка приложения по стандарту OpenTelemetry и экспорта трассировки по gRPC/HTTP в формате OTLP.
gRPC¶
Модуль позволяет собирать трассировку с помощью gRPC протокола посредствам GrpcSender
.
Зависимость build.gradle
:
Модуль:
Зависимость build.gradle.kts
:
Модуль:
HTTP¶
Модуль позволяет собирать трассировку с помощью HTTP протокола посредствам HttpSender
.
Зависимость build.gradle
:
Модуль:
Зависимость build.gradle.kts
:
Модуль:
Конфигурация¶
Обязательным полем является только endpoint
, аттрибуты из поля attributes
будут отправляться с каждым спаном.
Пример полной конфигурации, описанной в классе OpentelemetryGrpcExporterConfig
или OpentelemetryHttpExporterConfig
, а также OpentelemetryResourceConfig
(указаны примеры значений или значения по умолчанию):
tracing {
exporter {
endpoint = "http://localhost:4317" // (1)!
exportTimeout = "2s" // (2)!
scheduleDelay = "2s" // (3)!
maxExportBatchSize = 512 // (4)!
maxQueueSize = 1024 // (5)!
}
attributes { // (6)!
"service.name" = "example-service"
"service.namespace" = "kora"
}
}
- URL от OpenTelemetry коллектор сервиса (обязательный)
- Максимальное время ожидания обработки телеметрии коллектором
- Время между экспортом телеметрии в коллектор
- Максимальная кол-во телеметрии в рамках одного экспорта
- Максимальный размер очереди неотправленной телеметрии
- Дополнительные атрибуты телеметрии
tracing:
exporter:
endpoint: http://localhost:4317 # (1)!
exportTimeout: 2s # (2)!
scheduleDelay: 2s # (3)!
maxExportBatchSize: 512 # (4)!
maxQueueSize: 1024 # (5)!
attributes: # (6)!
service.name: example-service
service.namespace: kora
- URL от OpenTelemetry коллектор сервиса (обязательный)
- Максимальное время ожидания обработки телеметрии коллектором
- Время между экспортом телеметрии в коллектор
- Максимальная кол-во телеметрии в рамках одного экспорта
- Максимальный размер очереди неотправленной телеметрии
- Дополнительные атрибуты телеметрии
Параметры конфигурации сбора трассировки описываются в модулях в которых присутствует сбор трассировки, например HTTP сервер, HTTP клиент и т.д.
Императивная трассировка¶
Помимо автоматически создаваемых спанов вы можете пользоваться объектом Tracer
из контейнера.
Создать спан с текущим в parent можно следующим образом: