Подключение телеметрии#
Предусловия#
Не требуются.
Последовательность выполнения#
В интерсепторах возможно подключить трассировку, используя фреймворк OpenTelemetry. Трассировка отображает полный путь обработки сообщений с указанием последовательности этапов обработки и временем выполнения каждого этапа в виде трейсов. Трейсы представляют собой блоки, состоящие из спанов – стадий обработки сообщения.
Реализует интерфейсы ProducerInterceptor/ConsumerInterceptor.
Телеметрию возможно подключить в конфигурации следующих интерсепторов:
Для каждого сообщения отображает отдельный трейс, состоящий из спанов для следующих этапов:
отправка сообщения Kafka Producer;
обработка сообщения интерсептором на стороне продюсера;
получение сообщения Kafka Consumer;
обработка сообщения интерсептором на стороне консьюмера.
Для включения телеметрии в конфигурации kafka-клиента необходимо указать следующие настройки:
# Подключить интерсептор телеметрии
# Kafka Producer
# interceptor.classes = ru.sbt.ss.kafka.interceptors.telemetry.ProducerTelemetryInterceptor
# Kafka Consumer
# interceptor.classes = ru.sbt.ss.kafka.interceptors.telemetry.ConsumerTelemetryInterceptor
# Задать путь к файлу конфигурации телеметрии
# interceptor.telemetry.config.path = /path/to/config/file
# Необязательные параметры
# Имена заголовков сообщений в которых могут лежать идентификаторы сообщений
# interceptor.telemetry.message.id.headers = header_name1, header_name2, ...
# Имена заголовков сообщений по которым будут выведены значения заголовков в атрибуты спанов
# interceptor.telemetry.headers = header_name1, header_name2, ...
Пример конфигурации Open Telemetry#
Поддерживается конфигурация Open Telemetry в форматах JSON и YAML
Для каждого kafka-клиента необходим отдельный файл конфигурации телеметрии. В файле необходимо указать хост экспортера endpoint одинаковый для каждого kafka-клиента и имя сервиса service.name, уникальное для каждого kafka-клиента.
Пример конфигурации в формате JSON#
{
"file_format": "0.1",
"tracer_provider": {
"processors": [
{
"simple": {
"exporter": {
"otlp": {
"endpoint": "http://localhost:4317"
}
}
}
}
],
"sampler": {
"always_on": {}
}
},
"propagators": [
"tracecontext"
],
"resource": {
"attributes": {
"service.name": "EVENT"
}
}
}
Пример конфигурации в формате YAML#
file_format: "0.1"
resource:
attributes:
service.name: "EVENT"
propagators: [tracecontext]
tracer_provider:
processors:
- simple:
exporter:
otlp:
endpoint: http://localhost:4317
sampler:
always_on: {}
Результат#
В интерсепторах выполнено подключение трассировки с использованием фреймворка OpenTelemetry.