Руководство по администрированию
Настоящее Руководство содержит описание функционала, доступного для администратора Tarantool Change Data Capture (TCDC).
Универсальный Обработчик - это приложение для переноса информации от Источника к Приемнику данных. Настройка параметров переноса данных задается через файл конфигурации.
Универсальный Обработчик настраивается через конфигурационный файл application.yaml.
Вся конфигурация может быть собрана в одном файле или разделена на несколько файлов. В последнем случае
каждый файл должен называться application.yaml и располагаться на соответствующем логическом уровне.
Пример разбиения конфигурации на несколько файлов:
│ ...└─ cdc/├─ cdc-worker.jar # исполняемый файл Универсального Обработчика├─ application.yaml # хранит основные настройки, например, настройки сервера и другие, связанные со Spring│└─ config/├─ application.yaml # хранит общие настройки Обработчика, например, для работы с контрольными точками│├─ sink/│ └─ application.yaml # хранит настройки подключения к Приемнику данных└─ source/└─ application.yaml # хранит настройки подключения к Источнику данных
Параметры в файле настроек application.yaml представлены в виде иерархии объектов формата YAML.
Пример:
spring:application:name: CDCWorkerprofiles:active: default
Эту же иерархическую структуру можно представить в виде строки, где уровни разделяются точками:
spring.application.name: CDCWorkerspring.profiles.active: default
Или в комбинированном виде:
spring:application.name: CDCWorkerprofiles.active: default
Комбинированная форма удобна, если на каком-то уровне определяется всего один потомок в дереве настроек. В этом случае можно упростить само дерево, соединяя узлы-потомки через точку.
Файл настроек Универсального Обработчика состоит из нескольких разделов:
spring- конфигурация Spring Boot.logging- настройки логирования.server- настройки сервера.management- настройки Spring Actuator.cdc- общие настройки приложения Универсального Обработчика.source- настройки подключения к Источнику данных.sink- настройки подключения к Приемнику данных.offset- настройки работы с контрольными точками.throttle- настройки для ограничителя трафика.
Раздел spring содержит конфигурацию Spring Boot. Параметры раздела:
application.name- имя приложения. Значение по умолчанию:cdc-worker.profiles.active- имя профиля. Значение по умолчанию:default.
Пример:
spring:application.name: CDCWorkerprofiles.active: default
Раздел logging содержит настройки логирования. Параметры раздела:
logging.file.level- управление уровнем логирования модулей. Всего можно управлять двумя модулями, задавая для них различные уровни логирования при помощи значений:DEBUG,VERBOSE,INFO,WARNING,ERROR. ЗначениеOFFполностью отключает логирование событий модуля. По умолчанию логирование для модулей отключено:org.springframework.boot.SpringApplication- логирование самого процесса запуска приложения.org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLogger- детальный отчет об автоконфигурации Spring Boot.
Отключение логирования модулей позволяет сократить как общий объем логов, так и количество лишней информации в них. Это ускоряет и упрощает анализ логов.
Пример:
logging:file:name: logs/cdc-worker.loglevel:org.springframework.boot.SpringApplication: OFForg.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLogger: OFF
Раздел server содержит настройки сервера. Параметры раздела:
server.port- порт сервера для подключения приложения. Значение по умолчанию:8000
Пример:
server:port: 8000
Раздел настроек management содержит настройки Spring Boot Actuator. Параметры раздела:
management.endpoints.web.exposure.include- ID адресов мониторинга. По умолчанию сюда включеныhealthиprometheus.management.endpoint- группа параметров управления мониторингом:prometheus.enabled- предоставление данных мониторинга в Prometheus. По умолчанию:true.health.probes.enabled- настройка Spring Boot Actuator для интеграции с Kubernetes. По умолчанию:true.health.show-details- определяет уровень детализации. Значение по умолчанию:always, указывает на полную информацию.
management.health.livenessState.enabled- механизм внутреннего отслеживания и управления состоянием жизнеспособности приложения. По умолчанию:true.management.health.readinessState.enabled- механизм внутреннего отслеживания и управления состоянием готовности приложения к работе. По умолчанию:true.
Пример:
management:endpoints.web.exposure.include:- health- prometheusendpoint:prometheus.enabled: truehealth:probes.enabled: trueshow-details: alwayshealth:livenessState.enabled: truereadinessState.enabled: true
Раздел содержит общие настройки приложения Универсального Обработчика. Параметры раздела:
cdc.worker.id- идентификатор процесса в системе.cdc.shutdown.timeout.ms- максимальное время мягкого останова процесса в миллисекундах. По истечении времени происходит жесткий останов процесса.
Пример:
cdc:worker:id: cdc-taskshutdown:timeout:ms: 30000
Раздел содержит настройки подключения к Источнику данных. Параметры раздела:
source.plugin.path- путь, где расположены динамически загружаемые модули для подключения к Источнику данных. Путь должен указывать на папку, внутри которой находятся модули, каждый из которых распакован в свою папку. Просканированным будет только один модуль, что ускорит запуск приложения. См. подробнее.source.connector.*- раздел параметров настройки выбранного коннектора к Источнику данных.source.connector.class- наименование класса подключения к Источнику данных. Определяет, какой из просканированных и загруженных модулей подключения к Источнику данных нужно настроить и запустить. Обязательный параметр.source.transforms.names- список имен преобразований событий, заданных в разделеsource.transforms.config. Универсальный Обработчик применяет преобразования к событиям в том порядке, в каком они указаны вsource.transforms.names. По умолчанию является пустым списком.source.transforms.config.*- пространство для задания настроек преобразований. Каждое преобразование задается отдельным ключом в пространстве, который и является именем преобразования, указываемым вsource.transforms.names. Значением этого ключа является объект в формате YAML, содержащий настройки преобразования, включая его класс. По умолчанию пространствоsource.transforms.configявляется пустым объектом.
Пример:
source:plugin.path: /libs/connectconnector:class: io.tarantool.connector.TarantoolConnectortopic.prefix: cdcmax.batch.size: 2048connect:username: adminpassword: secret-cluster-cookietargets: localhost:3605timeout: 2000replication:idle.timeout: 2000anonymous: trueid: source-worker-1fields.exclude: bucket_idspaces.include: User,all_types,intTest,arrays,all_types_tcsdatetime.zone.enabled: true
Настройка коннекторов для подключения к PostgreSQL и Oracle из экосистемы Debezium также описывается в
разделе source.connector.*. Документация по настройкам коннекторов из экосистемы Debezium:
Предположим следующую схему расположения модулей:
/│ ...└─ libs/└─ connect/└─ source/│ ...├─ postgresql-connector/│ │ ...│ └─ postgresql-connector.jar│ ...└─ tarantool-source-connector/│ ...└─ tarantool-source-connector.jar
Тогда путь должен быть указан как /libs/connect/source. При этом Универсальным Обработчиком будут загружены, но
не запущены два модуля для подключения к Источнику данных. Поскольку сканирование всех модулей подключения может
занимать время, рекомендуется следующая форма расположения модулей:
/│ ...└─ libs/└─ connect/└─ source/│ ...├─ postgresql-connector/│ └─ postgresql-connector/│ │ ...│ └─ tarantool-source-connector.jar│ ...└─ tarantool-source-connector/└─ tarantool-source-connector/│ ...└─ tarantool-source-connector.jar
А в параметре source.plugin.path нужно указать либо
/libs/connect/source/postgresql-connector, либо /libs/connect/source/tarantool-connector. То есть путь всегда
должен указывать на папку уровнем выше относительно папки с модулем подключения к Источнику данных.
Раздел содержит настройки подключения к Приемнику данных. Параметры раздела:
sink.plugin.path- путь, где расположены динамически загружаемые модули для подключения к Приемнику данных. Путь должен указывать на папку, внутри которой находятся модули, каждый из которых распакован в свою папку. Просканированным будет только один модуль, что ускорит запуск приложения. См. подробнее.sink.connector.*- раздел для указания параметров настройки выбранного коннектора к Приемнику данных.sink.connector.class- наименование класса подключения к Приемнику данных. Определяет, какой из просканированных и загруженных модулей подключения к Приемнику данных нужно настроить и запустить. Обязательный параметрsink.transforms.names- список имен преобразований событий, заданных в разделеsink.transforms.config. Универсальный Обработчик применяет преобразования к событиям в том порядке, в каком они указаны вsink.transforms.names. По умолчанию задает два преобразования для извлечения имени очереди (топика) из событий.sink.transforms.config.*- пространство для задания настроек преобразований. Каждое преобразование задается отдельным ключом в пространстве, который и является именем преобразования, указываемым вsink.transforms.names. Значением этого ключа является объект в формате YAML, содержащий настройки преобразования, включая его класс. По умолчанию пространствоsink.transforms.configсодержит настройки для двух преобрзования, извлекающих имя очереди (топика) из событий.sink.retry.*- задает правила обработки ошибкиRetriableExceptionпри работе с Приемником данных.sink.retry.count- количество повторных попыток отправки сообщений в Приемник данных. По истечении этих попыток будет выброшена ошибка и Обработчик завершит свою работу.sink.retry.backoff- пауза между повторными попытками отправки сообщений в Приемник данных. Может принимать разные единицы измерения при указании соответствующего суффикса: секунды -s, миллисекунды -ms.sink.retry.timeout- общее время на выполнение всех попыток отправки сообщений в Приемник данных. По истечении этого времени, если сообщения не будут записаны, выбросится ошибка и обработчик завершит свою работу. Может принимать разные единицы измерения при указании соответствующего суффикса: секунды -s, миллисекунды -ms.
Пример:
sink:plugin.path: /libs/connectconnector:class: io.debezium.connector.jdbc.JdbcSinkConnectorconnection:url: jdbc:postgresql://target-postgres:5432/iot?reWriteBatchedInserts=trueusername: iotpassword: iotinsert.mode: upsertprimary.key.mode: record_keytasks.max: 1delete.enabled: trueschema.evolution: basicdatabase.time.zone: UTCauto.create: truequote.identifiers: truetruncate.enabled: falsebatch.size: 500use.reduction.buffer: trueretry:count: 5backoff: 200mstimeout: 3stransforms:names:- topic-from-source-table- topic-from-source-space-nameconfig:topic-from-source-table:type: io.tarantool.cdc.transforms.smt.ExtractTopic$Valuefield.path: source.tableskip.missing.or.null: truetopic-from-source-space-name:type: io.tarantool.cdc.transforms.smt.ExtractTopic$Valuefield.path: source.space_nameskip.missing.or.null: true
Предположим следующую схему расположения модулей:
/│ ...└─ libs/└─ connect/└─ sink/│ ...├─ jdbc-sink-connector/│ │ ...│ └─ jdbc-sink-connector.jar│ ...└─ tarantool-sink-connector/│ ...└─ tarantool-sink-connector.jar
Тогда путь должен быть /libs/connect/sink. При этом универсальным обработчиком будут загружены, но не запущены
два модуля для подключения к Приемнику данных. Поскольку сканирование всех модулей подключения может занимать
время, рекомендуется следующая форма расположения модулей:
/│ ...└─ libs/└─ connect/└─ sink/│ ...├─ jdbc-sink-connector/│ └─ jdbc-sink-connector/│ │ ...│ └─ jdbc-sink-connector.jar│ ...└─ tarantool-sink-connector/└─ tarantool-sink-connector/│ ...└─ tarantool-sink-connector.jar
А в параметре sink.plugin.path указать
либо /libs/connect/sink/jdbc-sink-connector, либо /libs/connect/sink/tarantool-sink-connector. То есть, путь
всегда должен указывать на папку уровнем выше относительно папки с модулем подключения к Приемнику данных.
Раздел содержит настройки контрольных точек. Параметры раздела:
offset.flush.interval.ms- интервал сохранения контрольных точек Обработчика в миллисекундах.offset.flush.timeout.ms- максимальное время выполнения операции записи контрольных точек в миллисекундах. При превышении времени выбрасывается ошибка записи контрольных точек.offset.failures.max.count- допустимое количество ошибок записи контрольных точек. При превышении этого количества работа Универсального Обработчика завершается. По умолчанию:0. При этом значении работа универсального обработчика завершится после первой же ошибки. Для полного игнорирования ошибок необходимо выставить значение-1.offset.storage.*- пространство для настройки хранилища контрольных точек.offset.storage.type- наименование модуля хранения контрольных точек. Поддерживаемые модули:tqe- хранение контрольных точек в Tarantool Queue Enterprise. При указании этого модуля необходимо указать параметры:address- адрес и порт сервера, на котором установлен TQE.queue- имя очереди для записи контрольных точек.connection.id- ключ, по которому Обработчик будет сохранять свой снимок контрольных точек. Здесь необходимо указать значениеtask-${worker-id}для того, чтобы Helm-чарт автоматически присваивал уникальный ключ Обработчику. При подключении более чем одного Обработчика к очереди TQE уникальность ключа критически важна, потому что по этому ключу каждый Обработчик сохраняет свой снимок контрольных точек отдельно, не перезаписывая снимки других Обработчиков.
file- хранение контрольных точек в файле. При указании этого модуля необходимо указать параметры:file.name- путь к файлу с контрольными точками.
kafka- хранение контрольных точек в Kafka. При указании этого модуля необходимо указать параметры:servers- список парадрес:портсерверов Kafka.topic- название топика, в который будут сохраняться контрольные точки. Если топика до этого не существовало, он будет создан.partitions.count- число сегментов указанного топика при создании (значение учитывается только если топика до этого не существовало).replication.factor- сколько копий топика должно существовать.
Пример:
offset:flush:interval.ms: 5000timeout.ms: 2500storage:type: tqeaddress: offsets-grpc-server:18182queue: offsetsconnection.id: pg-task-1 # ключ, по которому Обработчик будет сохранять свой снимок контрольных точек.
Раздел содержит настройки ограничителя трафика. Параметры раздела:
throttler.max.eps- задает ограничение по количеству событий в секунду. По умолчанию:-1(ограничение не задано).
Пример:
throttle:throttler.max.eps: -1
Чтобы читать данные из Источников и записывать их в Приемники, Tarantool CDC использует коннекторы. Данные из Источника попадают в Tarantool CDC через коннектор к Источнику (source connector), проходят через ряд преобразований и записываются в Приемник через Коннектор к Приемнику (sink connector).
В поставку Tarantool CDC входят:
- Коннекторы к Источнику и Приемнику данных PostgreSQL.
- Коннекторы к Источнику и Приемнику данных Oracle.
- Коннекторы к Источнику и Приемнику данных Kafka.
- Коннекторы к Источнику и Приемнику данных Tarantool DB 1.x и 2.x.
- Коннекторы к Источнику и Приемнику данных Tarantool Data Grid 2.x.
- Коннекторы к Источнику и Приемнику данных Tarantool Queue Enterprise.
- Коннектор к Приемнику данных Tarantool Column Storage 1.x.
- Коннектор к Приемнику данных Clickhouse.
- Коннектор к Приемнику данных ссылка.
В файле настроек конкретный коннектор указывается при помощи обязательного параметра class. Параметр должен
быть прописан в секциях connector в разделах параметров Источника данных (source) и Приемника данных (sink):
connector:class: io.tarantool.connector.KafkaSourceConnector
Кроме параметра class, в секции connector указываются и другие параметры коннекторов.
Больше информации о параметрах Kafka, перечисленных в статьях о коннекторах к Источнику и Приемнику, смотрите в официальной документации Kafka.
Коннектор к Источнику Kafka позволяет Tarantool CDC получать данные из брокеров Kafka.
Параметры коннектора указываются в секции connector:
key.converter- название класса конвертера для ключа. Необязательный параметр, который может принимать 2 значения:org.apache.kafka.connect.json.JsonConverter(по умолчанию);io.apicurio.registry.utils.converter.AvroConverter.
key.converter.schemas.enable- определяет, включать ли схему в каждое сериализованное значение ключа. Необязательный параметр, значение по умолчанию:true.key.converter.schemas.cache.size- максимальное количество схем, которые можно кэшировать в этом экземпляре конвертера. Необязательный параметр, значение по умолчанию:1000.key.converter.decimal.format- задает формат, в который будет сериализовываться десятичные числа. Значение не чувствительно к регистру. Необязательный параметр, значение по умолчанию:BASE64.key.converter.replace.null.with.default- определяет, заменять ли поля, имеющие значениеNULL, на значение по умолчанию. Приtrueприводит к заменеNULLна значение по умолчанию. ПриfalseзаменыNULLне происходит. Необязательный параметр, значение по умолчанию:true.key.converter.apicurio.registry.url- обязателен приkey.converter: io.apicurio.registry.utils.converter.AvroConverter. Указывает адрес реестра схем, в котором хранятся схемы для ключа. См. подробнее.value.converter- название класса конвертера для значения. Необязательный параметр, который может принимать 2 значения:org.apache.kafka.connect.json.JsonConverter(по умолчанию);io.apicurio.registry.utils.converter.AvroConverter.
value.converter.schemas.enable- определяет, включать ли схему в каждое сериализованное значение. Необязательный параметр, значение по умолчанию:true.value.converter.schemas.cache.size- максимальное количество схем, которые можно кэшировать в этом экземпляре конвертера. Необязательный параметр, значение по умолчанию:1000.value.converter.decimal.format- задает формат, в который будет сериализовываться десятичные числа. Значение не чувствительно к регистру. Необязательный параметр, значение по умолчанию:BASE64.value.converter.replace.null.with.default- определяет, заменять ли поля, имеющие значениеNULL, на значение по умолчанию. Приtrueприводит к заменеNULLна значение по умолчанию. ПриfalseзаменыNULLне происходит. Необязательный параметр, значение по умолчанию:true.value.converter.apicurio.registry.url- обязателен приvalue.converter: io.apicurio.registry.utils.converter.AvroConverter. Указывает адрес реестра схем, в котором хранятся схемы для значения. См. подробнее.bootstrap.servers- список адресов брокеров, к которым подключаетсяkafka-consumer, cм. подробнее. Параметр так же может быть указан в секцииconsumer. При одновременном указании параметра в 2х местах с отличными друг от друга значениями, приоритетным будет значение в секцииconsumer. Параметр обязательно должен быть указан хотя бы в 1 из допустимых мест.topics- динамическая карта, в которой ключ - название топика, из которогоkafka-consumerбудет забирать данные, а значение - номер партиций, из которыхkafka-consumerбудет забираться данные для текущего топика. Параметр обязателен. Пример карты:topic-1: 0--kafka-consumerбудет забирать данные из 0 партиции топикаtopic-1.second-topic: 1-4--kafka-consumerбудет забирать данные из (1;4) партиций топикаsecond-topic(не включая правую границу). Т.е. будет забирать данные из 1,2,3 партиции.topic-name: 0,1-4--kafka-consumerбудет забирать данные из 0 и [1;4) партиций топикаtopic-name(не включая правую границу). Т.е. будет забирать данные из 0,1,2,3 партиции.
consumer- секция определяет параметрыkafka-consumer. Все параметры, описанные ниже, относятся к этой секции и не являются обязательными.fetch.max.bytes- cм. подробнее.max.poll.records- cм. подробнее.enable.auto.commit- определяет, будет ли потребитель автоматически периодически фиксировать смещения потребленных сообщений. Может принимать только предустановленное значение:false.key.deserializer- класс десериализатора, используемый для преобразования байтового представления ключа сообщения из формата хранения в Kafka в объект целевого языка программирования. Может принимать только предустановленное значение:org.apache.kafka.common.serialization.ByteArrayDeserializer.value.deserializer- класс десериализатора, используемый для преобразования байтового представления значения сообщения из формата хранения в Kafka в объект целевого языка программирования. Может принимать только предустановленное значение:org.apache.kafka.common.serialization.ByteArrayDeserializer.auto.offset.reset- Определяет поведение потребителя при отсутствии сохраненного смещения для партиции в группе потребителей. Может принимать только предустановленное значение:earliest.
Пример настройки:
connector:class: io.tarantool.connector.KafkaSourceConnectorkey.converter: org.apache.kafka.connect.json.JsonConverterkey.converter.schemas.enable: truekey.converter.schemas.cache.size: 1000key.converter.decimal.format: BASE64key.converter.replace.null.with.default: truevalue.converter: org.apache.kafka.connect.json.JsonConvertervalue.converter.schemas.enable: truevalue.converter.schemas.cache.size: 1000value.converter.decimal.format: BASE64value.converter.replace.null.with.default: truebootstrap.servers: broker-1:9092,broker-2:9092topics:topic-1: 0second-topic: 1-4topic-N: 0,1-4consumer:fetch.max.bytes: 52428800max.poll.records: 500
Коннектор к Приемнику данных Kafka позволяет Tarantool CDC передавать данные в брокеры Kafka.
Параметры коннектора указываются в секции connector.
key.converter- название класса конвертера для ключа. Необязательный параметр, который может принимать 2 значения:org.apache.kafka.connect.json.JsonConverter(по умолчанию);io.apicurio.registry.utils.converter.AvroConverter.
key.converter.schemas.enable- определяет, включать ли схему в каждое сериализованное значение ключа. Необязательный параметр, значение по умолчанию:true.key.converter.schemas.cache.size- максимальное количество схем, которые можно кэшировать в этом экземпляре конвертера. Необязательный параметр, значение по умолчанию:1000.key.converter.decimal.format- задает формат, в который будет сериализовываться десятичные числа. Значение не чувствительно к регистру. Необязательный параметр, значение по умолчанию:BASE64.key.converter.replace.null.with.default- определяет, заменять ли поля, имеющие значениеNULL, на значение по умолчанию. Приtrueприводит к заменеNULLна значение по умолчанию. ПриfalseзаменыNULLне происходит. Необязательный параметр, значение по умолчанию:true.key.converter.apicurio.registry.url- обязателен приkey.converter: io.apicurio.registry.utils.converter.AvroConverter. Указывает адрес реестра схем, в котором хранятся схемы для ключа. См. подробнее.value.converter- название класса конвертера для значения. Необязательный параметр, который может принимать 2 значения:org.apache.kafka.connect.json.JsonConverter(по умолчанию);io.apicurio.registry.utils.converter.AvroConverter.
value.converter.schemas.enable- определяет, включать ли схему в каждое сериализованное значение. Необязательный параметр, значение по умолчанию:true.value.converter.schemas.cache.size- максимальное количество схем, которые можно кэшировать в этом экземпляре конвертера. Необязательный параметр, значение по умолчанию:1000.value.converter.decimal.format- задает формат, в который будет сериализовываться десятичные числа. Значение не чувствительно к регистру. Необязательный параметр, значение по умолчанию:BASE64.value.converter.replace.null.with.default- определяет, заменять ли поля, имеющие значениеNULL, на значение по умолчанию. Приtrueприводит к заменеNULLна значение по умолчанию. ПриfalseзаменыNULLне происходит. Необязательный параметр, значение по умолчанию:true.value.converter.apicurio.registry.url- обязателен приvalue.converter: io.apicurio.registry.utils.converter.AvroConverter. Указывает адрес реестра схем, в котором хранятся схемы для значения. См. подробнее.bootstrap.servers- список адресов брокеров, к которым подключаютсяkafka-producerиadmin-producer. См. подробнее. Параметр может быть указан в секцияхproducerиadmin. При одновременном указании параметра в нескольких местах с отличными друг от друга значениями, приоритетными будут значения параметра в секцияхproducerдляkafka-producerи/илиadminдляadmin-producer. Параметр обязательно должен быть указан хотя бы в 1 из допустимых мест.producer- секция определяет настройкуkafka-producer, cм. подробнее. Параметры этой секции не являются обязательными. Ниже представлены некоторые из возможных параметров секции:key.serializer- указывает класс сериализатора, используемый для преобразования объекта ключа сообщения из формата приложения в байтовое представление для хранения в брокере Kafka. Значение по умолчанию:org.apache.kafka.common.serialization.ByteArrayDeserializer.value.serializer- указывает класс сериализатора, используемый для преобразования объекта значения сообщения из формата приложения в байтовое представление для хранения в брокере Kafka. Значение по умолчанию:org.apache.kafka.common.serialization.ByteArrayDeserializer.max.block.ms- определяет максимальное время блокировки при вызове методовsend()иpartitionsFor(), после которого выбрасывается исключениеTimeoutException. Значение по умолчанию:Long.MAX_VALUE.enable.idempotence- регулирут идемпотентный режим работы. Этот режим гарантирует, что отправка сообщений будет выполнена ровно один раз в рамках сессии продюсера, даже при повторных попытках отправки. Значение по умолчанию:false.acks- определяет количество подтверждений, которые продюсер должен получить от лидеров реплик партиций перед тем, как запись будет считаться завершенной. Значение по умолчанию:all.max.in.flight.requests.per.connection- определяет максимальное количество не подтвержденных запросов отправки, которые могут быть отправлены на один брокер без получения ответа. Значение по умолчанию:1.delivery.timeout.ms- определяет максимальное время ожидания подтверждения доставки сообщения, после которого операция отправки считается завершенной (успешно или с ошибкой). Значение по умолчанию:Integer.MAX_VALUE.
admin- секция параметров для настройкиadmin-producer. Секция не является обязательной. Особенности настройки см. подробнее.topics- секция параметров для настройки топиков. Секция не является обязательной. Особенности настройки см. подробнее.
Пример настройки:
connector:class: io.tarantool.connector.KafkaSinkConnectorkey.converter: org.apache.kafka.connect.json.JsonConverterkey.converter.schemas.enable: truekey.converter.schemas.cache.size: 1000key.converter.decimal.format: BASE64key.converter.replace.null.with.default: truevalue.converter: org.apache.kafka.connect.json.JsonConvertervalue.converter.schemas.enable: truevalue.converter.schemas.cache.size: 1000value.converter.decimal.format: BASE64value.converter.replace.null.with.default: truebootstrap.servers: broker-1:9092,broker-2:9092producer:batch.size: 512admin:bootstrap.servers: broker-1:9092,broker-2:9092topic.creation.default:partitions: 1replication.factor: 1
Коннектор к Tarantool Column Storage (TCS) позволяет TCDC передавать данные в TCS через JDBC-драйвер Arrow Flight SQL.
{note} DDL-команды нельзя передавать через коннектор. При получении такого события произойдет ошибка и Универсальный Обработчик остановится. Все команды по добавлению новых или изменению существующих таблиц, в которые планируется запись, необходимо выполнять вне коннектора. {/note}
Параметры коннектора указываются в секции connector:
class- имя класса коннектора для записи в TCS по JDBC. Обязательный параметр. Может принимать только одно значение:io.debezium.connector.jdbc.JdbcSinkConnector.
connection.url- строка подключения Arrow Flight SQL. Обязательный параметр. Вид:jdbc:arrow-flight-sql://<хост>:<порт>?useEncryption=0. ПараметрuseEncryption=0отключает шифрование (например, для локальной сборки).
connection.username- имя пользователя TCS. Обязательный параметр.connection.password- пароль пользователя TCS. Обязательный параметр.insert.mode- режим записи строк. Должен быть согласован с фактической схемой таблиц в TCS. Необязательный параметр. Принимает значения:INSERT— вставка новой строки (нужен уникальный первичный ключ).UPDATE— обновление по ключу.
primary.key.mode- способ получения первичного ключа записи для ее сохранения в Приемнике. Необязательный параметр. Принимает значения:none— первичный ключ не требуется.kafka— в качестве первичного ключа используются контрольные точки Kafka (__connect_topic,__connect_partition,__connect_offset).record_key— первичный ключ извлекается из ключа события (record.key).record_value— первичный ключ извлекается из самой записи (record.value).record_header— ключ извлекается из заголовков события (ConnectRecordheaders()). См. подробнее. Набор и порядок полей первичных ключей событий должны соответствовать ключам тех таблиц в TCS, в которые коннектор записывает события.
primary.key.fields- определяет список полей, используемых в качестве первичного ключа. Его поведение зависит от типа ключа в сообщении:- Когда ключ имеет простой тип — параметр становится обязательным, иначе коннектор
выбросит исключение. В этом случае берется первое значение из свойства
primary.key.fields. - Когда ключ сообщения представляет собой структуру, параметр можно не задавать: используются все поля ключа. Если параметр задан, используются только перечисленные поля из структуры ключа.
- Когда ключ имеет простой тип — параметр становится обязательным, иначе коннектор
выбросит исключение. В этом случае берется первое значение из свойства
delete.enabled- определяет, обрабатывать ли события удаления. Необязательный параметр. При значенииtrueсобытия удаления обрабатываются, приfalseигнорируются. Также, при значенииtrue, перед обработкой событийDELETEтаблицы сбрасывается буфер накопленных событийUPDATEдля той же таблицы, чтобы не потерять порядок операций. Значение по умолчанию:false.schema.evolution- поддержка режима изменения схемы таблиц Приемника. Необязательный параметр. Принимает знаения:none- события, приводящие к изменениям схемы таблиц (DDL-команды) не передаются в Приемник коннектором. Это рекомендованное значение при работе с Приемником данных TCS.basic- события, приводящие к изменениям схемы таблиц (DDL-команды) передаются в Приемник коннектором. Это значение установлено по умолчанию.
database.time.zone- часовой пояс для типов даты/времени при записи в БД. Необязательный параметр. Значение по умолчанию:UTC.auto.create- автоматическое создание таблиц в Приемнике при необходимости. Необязательный параметр. Значение по умолчанию:true.quote.identifiers- экранирование идентификаторов в SQL (имен таблиц и колонок). Необязательный параметр. Значение по умолчанию:true.truncate.enabled- разрешение операций очистки таблиц, если они приходят в потоке событий. Необязательный параметр. Значение по умолчанию:false.batch.size- размер пакета накапливаемого пакета записей для передачи в БД. Необязательный параметр. Значение по умолчанию:500.use.reduction.buffer- использование буфера сжатия событий. При работе буфер накапливает несколько событий, относящихся к одной и той же записи (таблица + ключ), и оставляет только последнее из них. Это сокращает количество операций записи, заменяя серию промежуточных обновлений одним, самым новым. Необязательный параметр. Значение по умолчанию:true.hibernate.dialect- диалектHibernateдля генерации SQL. Значение зависит от версии TCS и установленного драйвера JDBC. Необязательный параметр.
Пример настройки:
sink:plugin.path: plugins/sinkconnector:class: io.debezium.connector.jdbc.JdbcSinkConnectorconnection:url: jdbc:arrow-flight-sql://localhost:50051username: tcspassword: tcsinsert.mode: updateprimary.key.mode: record_keydelete.enabled: trueschema.evolution: nonedatabase.time.zone: UTCauto.create: truequote.identifiers: truetruncate.enabled: falsebatch.size: 500use.reduction.buffer: truehibernate.dialect: org.hibernate.dialect.PostgreSQLDialect
Коннектор к приемнику данных Elasticsearch позволяет TCDC передавать события изменения данных в индексы Elasticsearch. Коннектор преобразует каждое событие (вставку, обновление, замену или удаление записи в источнике) в соответствующее действие над документом в Elasticsearch: индексацию, обновление или удаление. Таким образом, документы в Elasticsearch отражают актуальное состояние данных, переданных через CDC.
Параметры коннектора:
-
elastic.connections— список URL для подключения к узлам Elasticsearch. Обязательный параметр. Каждый элемент списка - строка с URL вида<elasticsearch://>[<login>[:<password>]@]<host>:<port>[/][?]или<elasticsearchs://>[<login>[:<password>]@]<host>:<port>[/][?]для подключения по TLS(SSL). Элементы списка перечисляются через запятую.Внимание:
- На данный момент в строке подключения не поддерживаются параметры запроса (например, ?timeout=30s).
- При подключении к узлу с использованием TLS(SSL) доверенные сертификаты в форматах
PEMиPKCS12можно задать через параметрыtls.trust.pkcs12.certificatesиtls.trust.pem.certificates. Цепочка доверия для каждого узла Elasticsearch будет проверяться на основе этих сертификатов.
-
insert.mode— режим вставки записей. Необязательный параметр. Принимает значения:insert— вставка происходит, если в индексе нет документа с таким же_id. Если документ существует, коннектор выбрасывает исключение. Это значение используется по умолчанию.replace— при наличии документа с таким же_idстарый документ заменяется новым.
-
primary.key.mode— способ получения первичного ключа записи для ее сохранения в Elasticsearch. Значение первичного ключа сохраняется в поле документа_id. Необязательный параметр. Принимает значения:record_value— первичный ключ извлекается из самой записи (value). Это значение используется по умолчанию.record_key— первичный ключ извлекается из ключа события (key).
-
primary.key.fields— список имен полей, которые входят в состав значения первичного ключа события, в Elasticsearch. Коннектор проверяет, какие из указанных полей присутствуют в событии, и формирует из них массив в формате JSON, перечисляя их через запятую. Порядок элементов в массиве соответствует порядку перечисления полей в схеме события. Поля, отсутствующие в событии, игнорируются. Если поле присутствует, но его значение равноnull, то в составном ключе (несколько полей)nullдопускается, а в несоставном ключе (одно поле) коннектор выбрасывает исключение. Пустая строка записывается как "". Полученный массив в формате JSON записывается в поле_idсохраняемого документа. Необязательный параметр:- Если параметр не задан или пуст, первичным ключом считаются все поля записи.
- Если параметр задан, коннектор ищет в записи поля с указанными именами. Найденные поля объединяются в состав
_id. Если не найдено ни одного поля, коннектор выбрасывает исключение.
-
delete.enabled— включает или выключает обработку событийDELETE. Необязательный параметр. Возможные значения:true- события обрабатываются.false— события отбрасываются с записью в лог (уровеньDEBUG). Это значение используется по умолчанию.
-
decimal.handling.mode— режим преобразования полей типаDecimal(включаяio.debezium.data.VariableScaleDecimal). Необязательный параметр. Принимает значения:precise,engineer_string— значение представляется в виде экспоненциальной записи (например, 123.45 преобразуется в "1.2345e2"). Тип в Elasticsearch —text. Значениеpreciseиспользуется по умолчанию.plain_string— значение всегда представляется в виде строки десятичной дроби (тип —text).double— значение представляется в виде числа двойной точности (тип —double). Этот тип не подходит для данных, требующих абсолютной точности.
-
datetime.handling.mode— режим преобразования полей типа дата‑время. Необязательный параметр. Принимает значения:datetime— преобразуется в типdateElasticsearch. Это значение используется по умолчанию.string— преобразуется в текстовую строку ISO‑8601 (типtext).numeric— преобразуется в целое число, разрядность которого зависит от исходного типа Kafka Connect:- Для
Timestamp- 64-битное (long) - миллисекунды, отсчитываемые с момента 01 января 1970 года 00 часов 00 минут 00 секунд. - Для
Date— 32-битное целое (int) с количеством дней с 01 января 1970 года. - Для
Time— 32-битное целое (int) с миллисекундами с полуночи.
- Для
-
datetime.infinity.handling.enabled— включает или выключает обработку значений-infinity/+infinityдля логического типаio.debezium.time.ZonedTimestamp. Необязательный параметр. Принимает значения:true:- При
datetime.handling.mode: string— выходной типtextсо значением-infinity/+infinity; - При
datetime.handling.mode: datetimeилиdatetime.handling.mode: numeric— выходной типdateс преобразованием в граничные даты (+5879610-12-31...и-5879609-12-31...).
- При
false:- При
datetime.handling.mode: datetimeилиdatetime.handling.mode: numeric— коннектор выбрасывает исключение. - При
datetime.handling.mode: string— коннектор работает в штатном режиме. Значение по умолчанию:false.
- При
-
io.threads.count— количество потоков обработки операций сетевого ввода‑вывода. Необязательный параметр. Значение0означает отсутствие ограничений количества потоков. По умолчанию используется значение0. -
futures.processing.threads.count— количество потоков для обработки ответов от Elasticsearch. Низкое количество потоков относительно количества событий снижает скорость обработки событий. Увеличение количества потоков повышает скорость обработки, но требует дополнительных ресурсов процессора. Значение0означает использование всех доступных ресурсов хоста. По умолчанию используется значение0. -
tls.trust.pem.certificates— список полных путей к доверенным сертификатам в форматеPEM(расширения.pem,.crt,.ca-bundle) или путей к папкам, где хранятся такие сертификаты (поиск выполняется рекурсивно). Необязательный параметр. -
tls.trust.pkcs12.certificates— список записей видапуть_к_файлу.p12:пароль, где указывается путь к контейнеруPKCS12(.p12,.pfx) и пароль от него. Контейнеры без пароля не допускаются. Необязательный параметр. -
auth.api-key— Строка в формате Base64 для аутентификации в API по ключу. Если параметр задан, он используется вместо аутентификации по логину и паролю. Необязательный параметр.
При получении события для индекса, который отсутствует в кластере Elasticsearch, коннектор автоматически создает этот индекс.
Параметры из секции index применяются только в момент создания индекса. Если индекс уже существует, эти параметры не используются.
Если параметры не заполнены - используются значения по умолчанию.
Больше информации о настройках индексов Elasticsearch см. по ссылке.
Параметры настройки индексов указываются в виде *.index.<параметр>: индекс1: значение1, индекс2: значение2, __common__: значение_по_умолчанию.
Ключ __common__ задает значение для всех индексов, у которых не указано свое конкретное значение. Если __common__ не
указан, то для всех индексов для которых значения не указаны, будет использоваться значение по умолчанию.
index.number-of-shards— количество первичных шардов индекса. Значение по умолчанию устанавливается на стороне Elasticsearch. Необязательный параметр.index.number-of-routing-shards— количество виртуальных шардов, используемых в ключе маршрутизации записи события в Elasticsearch. Значение по умолчанию:1. Необязательный параметр.index.mapping.total-fields.limit— максимальное количество полей в индексе (включая сопоставления полей, объектов, псевдонимов и вычисляемых полей). Превышение лимита может привести к ухудшению производительности и перегрузке памяти узлов кластера. Необязательный параметр. Значение по умолчанию:1000.index.mapping.dynamic— управляет добавлением новых полей в сопоставление индекса. Принимает значения:true— новые поля автоматически добавляются в сопоставление. Это значение используется по умолчанию.runtime— новые поля добавляются в сопоставление как вычисляемые поля. Такие поля не индексируются и загружаются из исходного документа (_source) во время выполнения запроса.false— новые поля не добавляются в сопоставление. Они не индексируются и не участвуют в поиске, но остаются в исходном документе ответа.strict— при обнаружении нового поля выбрасывается исключение, и документ отклоняется.
index.translog.durability— режим сброса журнала транзакций на диск. Необязательный параметр. Принимает значения:request— синхронный сброс после каждого запроса. Это значение используется по умолчанию.async— асинхронный сброс в фоне с интерваломsync_interval.
index.translog.sync-interval— интервал принудительной записи журнала транзакций на диск. Необязательный параметр. Используется только приdurability: async. Значение по умолчанию:5s. Не может быть менее100ms.index.translog.flush-threshold-size— максимальный общий размер операций вtranslog, после которого выполняется принудительный сброс (flush). Необязательный параметр. Значение по умолчанию:10 GB.index.refresh-interval— интервал выполнения операцииrefresh(делает последние изменения видимыми для поиска). Необязательный параметр. Значение по умолчанию различается для разных типов установок Elasticsearch:- Для облачной установки EalsticSearch (Serverless) -
5s. - Для установки Elasticsearch в Elastic Stack -
1s. При значении-1операцияrefreshотключается.
- Для облачной установки EalsticSearch (Serverless) -
index.auto-expand-replicas— автоматическое расширение числа реплик в зависимости от количества узлов данных в кластере. Формат:нижняя_граница-верхняя_граница(например,0-5) или0-allдля всех узлов. Необязательный параметр. Значение по умолчанию:false(отключено).index.codec— метод сжатия хранимых данных. Необязательный параметр. Принимает значения:default— сжатиеLZ4.best_compression— сжатиеZSTD(более высокая степень сжатия за счет скорости чтения).
index.max-result-window— ограничение на глубину поиска в Elasticsearch. Этот параметр не влияет на передачу данных коннектором, но ограничивает поисковые запросы к уже проиндексированным данным со стороны других сервисов. Необязательный параметр. Значение по умолчанию:10000.index.routing.allocation.enable— разрешение на размещение шардов при их создании или восстановлении. Параметр определяет, какие типы шардов могут быть размещены на узлах кластера. Необязательный параметр. Принимает значения:all— можно размещать любые шарды (первичные и реплики). Это значение используется по умолчанию.primaries— можно размещать только первичные шарды.new_primaries— можно размещать только вновь создаваемые первичные шарды.none— нельзя размещать никакие шарды. При этом значении создание индекса невозможно.
index.routing.rebalance.enable— разрешение на перераспределение шардов. Параметр определяет, какие типы шардов могут быть автоматически перемещены между узлами кластера для выравнивания нагрузки. Необязательный параметр. Принимает значения:all— разрешено перераспределение любых шардов (первичных и реплик). Это значение используется по умолчанию.primaries— разрешено перераспределение только первичных шардов.replicas— разрешено перераспределение только реплик.none— перераспределение запрещено.
index.routing-partition-size— количество шардов, на которые направляются документы при использовании пользовательской маршрутизации. Значение должно быть меньше общего количества шардов индекса. Необязательный параметр. Значение по умолчанию:1(все документы с одинаковым значением пользовательской маршрутизации попадают в один шард).index.soft-deletes.enabled— включение механизма мягких удалений, при которм удаленные документы не удаляются физически, а помечаются как удалённые и временно хранятся для нужд репликации и восстановления. Необязательный параметр. Принимает значения:true- режим мягкого удаления включен. Это значение используется по умолчанию.false- режим мягкого удаления выключен, при удалении документы стираются сразу. Параметр устарел начиная с Elasticsearch 7.6.0, так как мягкие удаления включены по умолчанию и не отключаются.
index.soft-deletes.retention-lease.period— максимальный срок, на который ведущий шард гарантирует хранение истории мягких удалений для реплик. Если реплика не синхронизируется в течение этого периода, история считается утерянной. Необязательный параметр. Значение по умолчанию:12h.index.search.idle.after— время бездействия шарда без поисковых илиget-запросов, после которого шард считается простаивающим. Необязательный параметр. Значение по умолчанию:30s.
Пример настройки:
connector:elastic.connections: elasticsearch://user:pass@localhost:9200, elasticsearchs://10.0.0.1:9200insert.mode: replaceprimary.key:mode: record_valuefields: id, order_numberdelete.enabled: truedecimal.handling.mode: precisedatetime:handling.mode: datetimeinfinity.handling.enabled: trueio.threads.count: 4futures.processing.threads.count: 4tls.trust:pem.certificates: /etc/certs/elastic-ca.crt, /etc/certs/trusted/pkcs12.certificates: /etc/certs/client.p12:secret123, /etc/certs/node.p12:pass456auth.api-key: dXNlcm5hbWU6cGFzc3dvcmQ=index:number-of-shards: users:5, orders:10, __common__:3number-of-routing-shards: users:5, orders:10, __common__:3mapping:total-fields.limit: users:2000, __common__:1000dynamic: __common__:true, users:runtime, logs:falsetranslog:durability: users:async, __common__:requestsync-interval: users:10s, __common__:5sflush-threshold-size: users:5gb, __common__:10gbrefresh-interval: users:-1, orders:30s, __common__:1sauto-expand-replicas: users:0-3, orders:0-all, __common__:falsecodec: users:best_compression, __common__:defaultmax-result-window: users:50000, __common__:10000routing:allocation.enable: users:primaries, __common__:allrebalance.enable: users:replicas, __common__:allrouting-partition-size: users:3, __common__:1soft-deletes:retention-lease.period: users:24h, __common__:12henabled: users:true, __common__:truesearch.idle.after: users:60s, __common__:30s
Коннекторы Tarantool позволяют TCDC подключаться к Tarantool DataBase (TDB) для:
- Получения событий изменения данных при помощи коннектора к Источнику данных Tarantool.
- Передачи событий изменения данных при помощи коннектора к Приемнику данных Tarantool.
Коннектор к приемнику данных Tarantool позволяет TCDC передавать события изменения данных в Tarantool DataBase (TDB). Событие может быть вставкой, обновлением или удалением записи из Источника данных.
Параметры коннектора:
tarantool.connection.groups— список URL с настройками для подключения к TDB. Обязательный параметр. Каждый элемент списка - строка с URL видаtarantool://<host><:><port>/?<param1=value1¶m2=value2...>,tarantool://<host><:><port>/?<param1=value1¶m2=value2...>. Элементы списка перечисляются через запятую. Доступные параметры:host— имя узла Tarantool. Значение по умолчанию:localhostport— порт для подключения. Значение по умолчанию:3301.size— количество подключений в группе. Значение по умолчанию:1.user— имя пользователя для подключения. Значение по умолчанию:guest.password— пароль для подключения. Значение по умолчанию отсутствует.auth_type— тип аутентификации группы подключения. Доступные значения:CHAP_SHA1- результат преобразования пароля уникален для каждого подключения, что снижает риски перехвата пароля. Это значение используется по умолчанию.PAP_SHA256- результат преобразования пароля одинаков при каждом подключении.
tag— имя группы подключения, уникальное. Значение по умолчанию отсутствует.
insert.mode— режим вставки записей. Необязательный параметр. Принимает значения:insert— вставка происходит если в пространстве нет кортежа с идентичным первичным ключом. В ином случае коннектор завершает работу с исключением. Это значение используется по умолчанию.replace— при наличии кортежа с таким же первичным ключом перезаписывает старый кортеж новым.
primary.key.mode— способ получения первичного ключа. Необязательный параметр. Принимает значения:record_value(по умолчанию) — поиск первичного ключа производится в самой записиrecord_key— поиск первичного ключа производится в структуреrecord.key
primary.key.fields— список имён полей, потенциально входящих в состав первичного ключа. Параметр связан сprimary.key.modeи определяет части первичного ключа по именам полей. Необязательный параметр. Поведение зависит от значенияprimary.key.mode:- При
record_value:- Когда список полей пустой или отсутствует, первичным ключом считаются все поля в записи.
- Когда список полей не пустой, производится поиск полей записи по названиям из этого списка. При нахождении поля оно считается частью первичного ключа.
- Когда в записи не найдено ни одного поля с названием, указанным в списке полей, коннектор выбрасывает исключение.
- При
record_key:- Когда ключ имеет простой тип — параметр становится обязательным, иначе коннектор
выбросит исключение. В этом случае берется первое значение из свойства
primary.key.fields. - Когда ключ сообщения представляет собой структуру, параметр можно не задавать: используются все поля ключа. Если параметр задан, используются только перечисленные поля из структуры ключа.
- Когда ключ имеет простой тип — параметр становится обязательным, иначе коннектор
выбросит исключение. В этом случае берется первое значение из свойства
- При
delete.enabled— включает или выключает обработку событийDELETE. Необязательный параметр. Возможные значения:true- события обрабатываются.false— события отбрасываются с записью в лог (уровеньDEBUG). Это значение используется по умолчанию.
truncate.enabled— включает или выключает обработку событийTRUNCATE. Необязательный параметр. Возможные значения:true- события обрабатываются.false— события отбрасываются с записью в лог (уровеньDEBUG). Это значение используется по умолчанию. Внимание: Порядок выполнения событийTRUNCATEне гарантируется из-за распределённой конкуренции между маршрутизаторами. Используйте значениеtrueтолько если все операцииTRUNCATEприменились в целевой БД перед тем, как будут выполнены операции других типов.
decimal.handling.mode— режим преобразования полей типаio.debezium.data.VariableScaleDecimalиorg.apache.kafka.connect.data.Decimal. Необязательный параметр. Принимает значения:precise,engineer_string— значение представляется в виде экспоненциальной записи (например, 123.45 преобразуется в "1.2345e2"). Значениеpreciseиспользуется по умолчанию.plain_string— значение всегда представляется в виде строки десятичной дроби.double— значение представляется в виде числа двойной точности. Этот тип не подходит для данных, требующих абсолютной точности.
datetime.handling.mode— режим преобразования полей типа дата‑время. Необязательный параметр. Принимает значения:datetime— преобразуется в типdateElasticsearch. Это значение используется по умолчанию.string— преобразуется в текстовую строку ISO‑8601 (типtext).numeric— преобразуется в целое число, разрядность которого зависит от исходного типа Kafka Connect:- Для
Timestamp- 64-битное (long) - миллисекунды, отсчитываемые с момента 01 января 1970 года 00 часов 00 минут 00 секунд. - Для
Date— 32-битное целое (int) с количеством дней с 01 января 1970 года. - Для
Time— 32-битное целое (int) с миллисекундами с полуночи.
- Для
datetime.infinity.handling.enabled— включает или выключает обработку значений-infinity/+infinityдля логического типаio.debezium.time.ZonedTimestamp. Необязательный параметр. Принимает значения:true:- При
datetime.handling.mode: string— выходной типtextсо значением-infinity/+infinity; - При
datetime.handling.mode: datetimeилиdatetime.handling.mode: numeric— выходной типdateс преобразованием в граничные даты (+5879610-12-31...и-5879609-12-31...).
- При
false:- При
datetime.handling.mode: datetimeилиdatetime.handling.mode: numeric— коннектор выбрасывает исключение. - При
datetime.handling.mode: string— коннектор работает в штатном режиме. Значение по умолчанию:false.
- При
Пример настройки:
connector:tarantool.connection.groups: tarantool://host1:3301/?user=admin&password=secret&size=2, tarantool://host2:3301/?user=admin&password=secretinsert.mode: replaceprimary.key:mode: record_valuefields: iddelete.enabled: truetruncate.enabled: falsedecimal.handling.mode: precisedatetime:handling.mode: datetimeinfinity.handling.enabled: false
К коннекторам Debezium относятся:
- Коннекторы к Источнику и Приемнику данных PostgreSQL.
- Коннекторы к Источнику и Приемнику данных Oracle.
Пульс (heartbeat) — механизм, обеспечивающий периодическое обновление позиции чтения в журнале упреждающей записи (WAL) источника данных независимо от наличия изменений в отслеживаемых коннектором таблицах. Благодаря этому механизму контрольные точки сохраняются с заданной периодичностью и сокращается объем WAL, который требуется повторно прочитать при восстановлении коннектора после сбоя.
Коннектор к Источнику сохраняет контрольные точки записи только при обработке событий из отслеживаемых таблиц. Если в этих таблицах нет изменений, позиция чтения журнала упреждающей записи не обновляется.
При перезапуске коннектор продолжает чтение журнала упреждающей записи с последней сохраненной контрольной точки. Если между этой точкой и текущей позицией в журнале находится большой объем записей из других таблиц, коннектор просматривает их все, прежде чем дойдет до конца. Время восстановления работы напрямую зависит от объема журнала, который необходимо прочитать.
Пульс создает искусственные изменения в отдельной созданной служебной таблице, которые попадают в журнал упреждающей записи, прочитываются и отдаются коннектором в обработчик. При обработке таких событий их контрольные точки сохраняются, что позволяет не перечитывать большие куски журнала репликации при возобновлении переноса данных.
В результате при перезапуске коннектору требуется прочитать часть журнала от последней контрольной точки до момента восстановления. Это сокращает время восстановления коннектора после сбоев и помогает периодически очищать журнал упреждающей записи, снижая потребление дисковой памяти на стороне базы данных Источника.
Для правильной работы Пульса в базе данных Источника необходимо создать служебную таблицу, в которую коннектор будет вносить изменения.
Пример создания служебной таблицы для PostgreSQL:
CREATE TABLE public.heartbeat (id SERIAL PRIMARY KEY,ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Пример создания служебной таблицы для Oracle:
CREATE TABLE heartbeat_table (id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Работа Пульса настраивается параметрами:
heartbeat.action.query- SQL-запрос, выполняемый на Источнике данных. Используется для внесения изменений в служебную таблицу. При получении этого запроса контрольная точка в WAL Источника обновляется. Таблица, указываемая в запросеheartbeat.action.queryдолжна быть включена в список наблюдаемых таблицtable.include.listконнектора, иначе коннектор не увидит изменения и контрольная точка не обновится.heartbeat.interval.ms- интервал отправки Пульс-сообщений в миллисекундах. Значение0отключает Пульс. Рекомендуемое значение:10000(10 секунд).
Пример для PostgreSQL:
connector:heartbeat.interval.ms: 30000heartbeat.action.query: "INSERT INTO heartbeat (ts) VALUES (NOW())"
Пример для Oracle с LogMiner:
connector:heartbeat.interval.ms: 30000heartbeat.action.query: "INSERT INTO heartbeat_table VALUES (SYSDATE)"
При использовании коннектором Oracle OLR (OpenLogReplicator) адаптера с флагом SHOW_CHECKPOINT (flags = 4096 (0x1000))
запрос heartbeat.action.query не нужен при включенном Пульсе, т.к.:
- OLR отправляет события
CHECKPOINTна границах LWN (Log Writer Number) в redo log - независимо от наличия изменений в наблюдаемых таблицах. - При получении событий
CHECKPOINTиCOMMITот OLR, коннектор сразу отправляет Пульс, не дожидаясь окончания интервала времени. - Это гарантирует, что контрольные точки обновляются регулярно даже при отсутствии изменений в наблюдаемых таблицах.
Важно: heartbeat.interval.ms должен быть включен (значение > 0), иначе Пульс не будет работать
даже с контрольными точками OLR.
Пример конфигурации OLR:
{"source": [{"flags": 4096}]}
Пример конфигурации Debezium с OLR:
connector:heartbeat.interval.ms: 10000# heartbeat.action.query не требуется
СУБД/коннектор | Поток изменений в наблюдаемые таблицы | Поток изменений в ненаблюдаемые таблицы | heartbeat.interval.ms | heartbeat.action.query | Примечания |
|---|---|---|---|---|---|
PostgreSQL | Большой | Большой | Не нужен | Не нужен | Нормальная работа |
PostgreSQL | Большой | Малый | Не нужен | Не нужен | Нормальная работа |
PostgreSQL | Малый | Большой | 10000-30000 | Обязателен | WAL растет |
PostgreSQL | Малый | Малый | 10000-30000 | Не обязателен | Мониторинг |
SQL Server | Малый | Большой | 10000-30000 | Обязателен | Записи журнала растут |
Oracle + OLR (флаг 4096) | Малый | Большой | 10000-30000 | Не нужен | OLR шлет контрольную точку |
Oracle + LogMiner | Малый | Большой | 10000-30000 | Обязателен | — |
Средства мониторинга Tarantool CDC включают панель Grafana с показателями.
Для наблюдения за работой Tarantool CDC можно использовать специальную панель Grafana. Панель состоит из графиков и таблиц с показателями, которые обновляются в режиме реального времени. Графики и таблицы представлены в группе "Общая информация" и в группах метрик Универсальных Обработчиков, которые входят в установку. Ниже представлено описание элементов панели и нормальное поведение показателей. О том, на какие проблемы может указывать отход показателей от нормы, см. в статье.
В группу "Общая информация" входят следующие графики и таблицы:
- Workers - Показывает состав текущей установки TCDC. Количество запущенных Обработчиков и какие источники и приемники данных они обслуживают. В норме информация должна соответствовать заданной топологии установки Tarantool CDC.
- Total EPS - Общее количество событий в секунду, полученных из Источника и отправленных в Приемник. В норме значение возрастает.
- Events Per Second - Количество событий в секунду, полученных из Источника и отправленных в Приемник для каждого Обработчика. В норме все графики стабильные, их уровень колеблется вокруг некоторого значения.
- Average Lag - Средняя задержка при переносе событий от Источника в Приемник для всех Обработчиков. Измеряется как разница во времени от появления события в Источнике до окончания его записи в Приемник Обработчиком. На точность показателя влияет рассинхронизация часов в распределенной системе. Для вычисления общего показателя используется среднее от максимальных значений среди всех компонентов системы. В норме все графики стабильные, их уровень колеблется вокруг некоторого значения.
- Errors - Общая частота возникновения ошибок при обработке событий. В норме графики имеют значение 0.
Ошибки бывают следующих видов:
- Внутренние ошибки - любые ошибки, возникающие внутри Обработчиков во время их работы;
- Ошибки записи контрольных точек - ошибки, возникающие в моменты записи контрольных точек в хранилище состояния.
- Source to Connector Lag - Среднее время переноса событий от источников до коннекторов. В норме все графики стабильные, их уровень колеблется вокруг некоторого значения.
- Connector to Worker Lag - Среднее время удержания событий в очередях коннекторов. В норме все графики стабильные, их уровень колеблется вокруг некоторого значения.
- Worker to Target Lag - Среднее время записи событий в приемники. В норме все графики стабильные, их уровень колеблется вокруг некоторого значения.

Для каждого из Универсальных Обработчиков представлены следующие графики:
- Events Per Second - Количество событий в секунду, полученных из Источника и отправленных в Приемник Обработчиком. В норме графики стабильные, их уровень колеблется вокруг некоторого значения.
- Errors - Частота возникновения ошибок на Обработчике. В норме графики имеют значение 0. Ошибки бывают следующих видов:
- Внутренние ошибки - любые ошибки, возникающие внутри Обработчиков во время их работы;
- Ошибки записи контрольных точек - ошибки, возникающие в моменты записи контрольных точек в хранилище состояния.
- Throttling Time - Время, затраченное на ограничение трафика. В норме все графики стабильные, их уровень колеблется вокруг некоторого значения.
- Lag - Задержка переноса событий от Источника в Приемник для Обработчика. Измеряется как разница во времени от появления события в Источнике до окончания его записи в Приемник Обработчиком. В норме все графики стабильные, их уровень колеблется вокруг некоторого значения.
- Latencies - Сводный график задержек, из которых составляется график Lag. В норме все графики стабильные, их уровень колеблется вокруг некоторого значения.
- Source Task Poll Time Percentiles - Время опроса задачи Источника, в миллисекундах.
В норме при небольшом трафике
50,95и99перцентили принимают значение времени, заданное в настройках Обработчика (параметрworker.connector.poll.interval.ms), чаще всего это500миллисекунд. При большом трафике, если Обработчик успевает вычитывать сообщения из коннектора,95и99перцентили остаются на прежнем уровне или кратковременно снижаются,50-й перцентиль может упасть до миллисекунд. Когда Обработчик не успевает вычитывать сообщения, все перцентили, а также среднее время ожидания, снижаются до нескольких десятков миллисекунд. - Worker Batch Processing - Время, потраченное на обработку пакета событий Обработчиком. В норме графики стабильные, их уровень колеблется вокруг некоторого значения.
- Source to Connector Lag - Время переноса события с момента его появления в Источнике до момента его обработки коннектором к Источнику. В норме графики стабильные, их уровень колеблется вокруг некоторого значения.
- Connector to Worker Lag - Время удержания событий в очереди коннекторов Обработчика. В норме графики стабильные, их уровень колеблется вокруг некоторого значения.
- Worker to Target Lag - Время записи событий в Приемник. В норме графики стабильные, их уровень колеблется вокруг некоторого значения.
- Offsets - Количство событий в секунду, которое подтверждается Обработчиком. В норме уровень графика должен совпадать с уровнем графика Events Per Second Обработчика.
- Memory usage - Потребление памяти виртуальной машиной Java для Обработчика. В норме графики стабильные, их уровень
колеблется вокруг некоторого значения. Отображается три графика:
- Использовано - количество памяти в байтах, используемое обработчиками.
- Зарезервировано - количество памяти, зарезервированной виртуальной машиной Java для дальнейшего использования.
- Доступно - количество памяти, доступной для резервирования и использования виртуальной машиной Java.
- CPU Usage - Потребление процессорных ресурсов Обработчиком. В норме графики стабильные, их уровень колеблется вокруг
некоторого значения. Потребление показывается с трех точек зрения:
- На уровне процесса - сколько процессорного времени потребляется отдельно взятыми процессами Обработчика.
- На уровне системы - сколько процессорного времени потребляется процессами обработчика на уровне операционной системы.
- Среднее на уровне процесса за 15 минут - среднее потребление процессорных ресурсов на уровне отдельно взятых процессов за последние 15 минут.

Данная статья описывает возможные инциденты, их признаки и рекомендуемые действия для устранения неисправностей Tarantool CDC.
Возможные инциденты, отражающиеся в группе "Общая информация":
-
Workers
- Признак:
- Количество каких либо компонентов отличается от заданного в топологии.
- Реагирование:
- Проверить работу соответствующего компонента, получить логи.
- Признак:
-
Total EPS, Events Per Second
- Признак:
- Снижение или увеличение количества обрабатываемых событий.
- Реагирование:
-
Необходимо проверить работу Обработчиков:
- Ошибки репликации;
- Перезапуски - каждый перезапуск требует времени на восстановление работы и увеличивает задержку событий;
- Потребление памяти - высокое потребление памяти может привести к проблемам в сборке мусора;
- Сборщик мусора - пауза Stop The World;
- Сборщик мусора - частота;
- Сборщик мусора - поколения.
Также необходимо проверить:
- Состояние сети и инфраструктуры;
- Состояние очереди (если используется).
Если значения упали до 0 при работающей репликации, следует проверить синхронизацию часов в системе. Если показатели отсутствуют, следует проверить состояние Обработчиков, так как метрики, на основе которых считаются данные показатели, рассчитываются на них.
-
- Признак:
-
Average Lag
- Признак:
- Рост времени обработки события (устойчивый тренд или превышение порога в течение заданного окна).
- Показатели принимают значение 0 при работающей репликации.
- Отсутствие показателей.
- Реагирование:
- См. описание реагирования на симптомы графиков Total EPS и Events Per Second выше.
- Признак:
-
Errors
- Признак:
- Значение больше 0.
- Реагирование:
- При выбросах ошибок Сети или ошибок превышения времени ожидания ответа нужно проверить состояние инфраструктуры и сети.
- При наличии внутренних ошибок CDC нужно проверить ресурсы, потребляемые Обработчиками.
- При наличии ошибок контрольных точек нужно проверить состояние очереди (если используется), инфраструктуры и сети.
- Признак:
-
Source to Connector Lag, Connector to Worker Lag, Worker to Target Lag
- Признак:
- Рост времени обработки события (устойчивый тренд или превышение порога в течение заданного окна).
- Реагирование:
- См. описание реагирования на симптомы графиков Total EPS и Events Per Second выше.
- Признак:
Возможные инциденты, отражающиеся в группе графиков отдельного Универсального Обработчика:
-
Events Per Second
- Признак:
- Снижение или увеличение количества обрабатываемых событий.
- Реагирование:
-
Необходимо проверить работу Обработчика:
- Ошибки репликации;
- Перезапуски - каждый перезапуск требует времени на восстановление работы и увеличивает задержку событий;
- Потребление памяти - высокое потребление памяти может привести к проблемам в сборке мусора;
- Сборщик мусора - пауза Stop The World;
- Сборщик мусора - частота;
- Сборщик мусора - поколения.
Также необходимо проверить:
- Состояние сети и инфраструктуры;
- Состояние очереди (если используется).
Если значения упали до 0 при работающей репликации, следует проверить синхронизацию часов в системе. Если показатели отсутствуют, следует проверить состояние Обработчика, так как метрики, на основе которых считаются данные показатели, рассчитываются на нем.
-
- Признак:
-
Errors
- Признак:
- Значение больше 0.
- Реагирование:
- При выбросах ошибок Сети или ошибок превышения времени ожидания ответа нужно проверить состояние инфраструктуры и сети.
- При наличии внутренних ошибок CDC нужно проверить ресурсы, потребляемые Обработчиком.
- При наличии ошибок контрольных точек нужно проверить состояние очереди (если используется), инфраструктуры и сети.
- Признак:
-
Throttling Time
- Признак:
- Превышение значений показателей установленных пределов.
- Реагирование:
- См. описание реагирования на симптомы графика Events Per Second выше.
- Признак:
-
Lag
- Признак:
- Рост времени обработки события (устойчивый тренд или превышение порога в течение заданного окна).
- Показатели принимают значение 0 при работающей репликации.
- Отсутствие показателей.
- Реагирование:
- См. описание реагирования на симптомы графика Events Per Second выше.
- Признак:
-
Latencies
- Признак:
- Порог срабатывания сигнализации расчитывается экспериментально с учетом результатов нагрузочного тестирования.
- Реагирование:
- При превышении тех или иных зедержек допустимых значений, проверить остальные метрики, связанные со времением и ресурсами.
- Признак:
-
Source Task Poll Time Percentiles
- Признак:
- Порог срабатывания сигнализации расчитывается экспериментально с учетом результатов нагрузочного тестирования.
- Реагирование:
- Информационный показатель для разбора инцидентов. Время обработки ожидания, превышающее время для ожидания, заданное в настройках коннектора, означает медленную работу Обработчика.
- Признак:
-
Worker Batch Processing
- Признак:
- Рост времени обработки события (устойчивый тренд или превышение порога в течение заданного окна).
- Реагирование:
- См. описание реагирования на симптомы графика Events Per Second выше.
- Признак:
-
Source to Connector Lag
- Признак:
- Какой либо из показателей вырос до некоторого значения выше допустимого предела.
- Рост показателей выше некоторого значения.
- Показатели равны 0.
- Реагирование:
- Стабильный, но высокий показатель времени переноса означает медленную сеть, необхоимо проверить нагрузку на систему и сетевые настройки.
- Рост показателя обозначает, что Обработчик не успевает вычитывать сообщения из коннектора. Необходимо подобрать более оптимальные значения параметров коннектора, учитывая данные нагрузочного тестирования.
- Если показатели равны 0 для повторного подключения к репликации, то необходимо проверить синхронизацию часов в системе. Для первого подключения к репликации начало обработки будет выдавать нулевые значения времени переноса.
- Признак:
-
Connector to Worker Lag
- Признак:
- Порог срабатывания сигнализации расчитывается экспериментально с учетом результатов нагрузочного тестирования.
- Какой либо из показателей вырос до некоторого значения выше допустимого предела.
- Рост показателей выше некоторого значения.
- Реагирование:
- Большое время удержания событий в очереди коннектора означает, медленную работу Обработчика. Необходимо подобрать более оптимальные значения параметров коннектора, учитывая данные нагрузочного тестирования.
- Если показатели равны 0 для повторного подключения к репликации, то необходимо проверить синхронизацию часов в системе. Для первого подключения к репликации начало обработки будет выдавать нулевые значения времени переноса.
- Признак:
-
Worker to Target Lag
- Признак:
- Порог срабатывания сигнализации расчитывается экспериментально с учетом результатов нагрузочного тестирования.
- Какой либо из показателей вырос до некоторого значения выше допустимого предела.
- Рост показателей выше некоторого значения.
- Реагирование:
- Большое время записи событий в Приемник может влиять на работу Обработчика, замедляя его, и соответственно,
приводить к увеличению отставания всего процесса репликации. Необходимо проверить:
- Общую нагрузку на систему;
- Состояние сети.
- Большое время записи событий в Приемник может влиять на работу Обработчика, замедляя его, и соответственно,
приводить к увеличению отставания всего процесса репликации. Необходимо проверить:
- Признак:
-
Offsets
- Признак:
- Средний уровень количества сохраненных контрольных точек за некоторый период наблюдения (5 минут, 10 минут, 15 минут) ниже уровня количества обрабатываемых событий.
- Реагирование:
- Проверить ошибки контрольных точек, состояние очереди (если используется), инфраструктуры и сети.
- Признак:
-
Memory usage
- Признак:
- Превышение использованной памяти выше расчетного значения (в т.ч. по всем Обработчикам).
- Неограниченный рост использованной и зарезервированной памяти.
- Реагирование:
- Проверить показатели памяти для Обработчиков. Имеет смысла также проверить средний размер событий - количество потребляемой памяти может расти в зависимости от размера и количества обрабатываемых событий.
- Рост использованной и зарезервированной памяти указывает на утечку ресурсов.
- Признак:
-
CPU Usage
- Признак:
- Суммарное потребление ресурсов процессоров выше расчитанной по топологии квоты ядер.
- Превышение среднего потребления процессора за 15 минут за допустимый предел.
- Реагирование:
- Проверить показатели потребления ресурсов процессора для Воркеров. Имеет смысл проверить потребление памяти - при высоком
потреблении памяти и большом количестве обрабатываемых событий в секунду может наблюдаться возрастание нагрузки на сборщик мусора.
При наблюдении проблем на Обработчиках необходимо сбалансировать параметры Обработчика:
source.connector.max.batch.size;source.connector.batch.split.groups.
- При наблюдении проблем на Обработчике, у которого в качестве Источника данных выступает TQE, необходимо сбалансировать
параметр подписчика TQE
fetch_batch_sizeи скорость работы Обработчика, уменьшив значение параметра при необходимости.
- Проверить показатели потребления ресурсов процессора для Воркеров. Имеет смысл проверить потребление памяти - при высоком
потреблении памяти и большом количестве обрабатываемых событий в секунду может наблюдаться возрастание нагрузки на сборщик мусора.
При наблюдении проблем на Обработчиках необходимо сбалансировать параметры Обработчика:
- Признак:
Чтобы контролировать работоспособность системы, в Tarantool CDC осуществляется сбор двух групп метрик:
- Метрики Универсального Обработчика;
- Метрики Java/JVM.
Типы метрик:
counter- монотонно возрастающий счетчик значений. Не может быть уменьшен, но может быть сброшен до 0.gauge- изменяющееся значение. Может как увеличиваться, так и уменьшаться.histogram- распределение значений по заранее определенным группам (buckets).summary- агрегация гистограмм. Используется в случаях, когда невозможно заранее выделить группы, по которым необходимо распределить значение.
- Тип метрики: summary
- Описание: Время, проведенное событием в очереди самого коннектора.
- Ожидаемое поведение метрики: Колеблется вокруг некоторого значения.
- Аномальное поведение метрики: Значение индикатора возрастает.
- Дата последнего обновления: 2026-03-31
- Тип метрики: summary
- Описание: Время, потраченное на перенос события из Журнала Упреждающей Записи (ЖУЗ/WAL) Источника данных до коннектора к Источнику.
- Ожидаемое поведение метрики: Колеблется вокруг некоторого значения.
- Аномальное поведение метрики: Значение индикатора возрастает.
- Дата последнего обновления: 2026-03-31
- Тип метрики: counter
- Описание: Количество ошибок, возникающих при работе Универсального Обработчика.
- Ожидаемое поведение метрики: Счетчик не увеличивается.
- Аномальное поведение метрики: Скорость возрастания счетчика ненулевая.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Текущее количество подтвержденных контрольных точек.
- Ожидаемое поведение метрики: Колеблется вокруг некоторого значения.
- Аномальное поведение метрики: Значение индикатора возрастает или постоянно равно
0. - Дата последнего обновления: 2026-03-31
- Тип метрики: counter
- Описание: Количество успешно записанных контрольных точек. Счетчик увеличивается на количество успешно подтвержденных сообщений каждый раз при успешной записи контрольных точек.
- Ожидаемое поведение метрики: Монотонно возрастает. Если брать скорость возрастания метрики на интервале бОльшем или равном периоду записи контрольных точек и сравнить со скоростью возрастания количества записанных событий в очередь на том же интервале, то эти метрики должны совпадать.
- Аномальное поведение метрики: Счетчик не возрастает.
- Дата последнего обновления: 2026-03-31
- Тип метрики: counter
- Описание: Количество ошибок записи контрольных точек. При возникновенни ошибки при записи пакета контрольных точек, счетчик ошибок увеличивается на количество точек, которые не были записаны из за ошибки.
- Ожидаемое поведение метрики: Равен
0или не возрастает. - Аномальное поведение метрики: Счетчик возрастает.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Текущее количество неподтвержденных контрольных точек.
- Ожидаемое поведение метрики: Колеблется вокруг некоторого значения.
- Аномальное поведение метрики: Значение индикатора возрастает.
- Дата последнего обновления: 2026-03-31
- Тип метрики: histogram
- Описание: Время, затраченное на выполнение операций чтения данных из коннектора к Источнику данных. Метрика замеряется на уровне приложения.
- Метки:
- quantile:
0.5;0.95;0.99.
- quantile:
- Ожидаемое поведение метрики: Время чтения колеблется вокруг некоторого значения, в небольших пределах. Время чтения не должно превышать расчетных показателей больше, чем на некоторый процент. При увеличении размера сообщений время чтения также может увеличиваться.
- Аномальное поведение метрики: Возрастание без существенного изменения размера сообщений может указывать на следующие
причины:
- Деградация работы Источника.
- Деградация сети на участке между Источником данных и коннектором к Источнику.
- Проблемы коннектора к Источнику данных.
- Перегрузка процессора.
- Утечка, переполнение памяти.
- Дата последнего обновления: 2026-03-31
- Тип метрики: counter
- Описание: Количество событий, прошедших через Универсальный Обработчик, с детализацией по статусу.
- Метки:
- status:
received- Количество событий, полученных из Источника данных.retried- Количество событий, которые потребовали повторной попытки отправки.sent- Количество событий, успешно записанных в Приемник данных.
- status:
- Ожидаемое поведение метрики: Скорость возрастания счетчика стабильна или увеличивается. При небольшом или отсутствующем
потоке репликации, снижении потока сообщений в Приемник данных скорость возрастания счетчика близка к или равна
0на некоторых отрезках времени. - Аномальное поведение метрики: Скорость возрастания счетчика уменьшается или счетчик не увеличивается, причины:
- Ошибки получения данных.
- Увеличение времени чтения или записи данных.
- Деградация сети на участке между коннектором к Приемнику и Приемникмом данных.
- Перегрузка процессора.
- Утечка, переполнение памяти.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Индикатор активности процесса с соответствующими значениями тегов
connectorиtype. Значение этой метрики всегда равно1, когда работает процесс. Суммированием этой метрики можно посчитать количество работающих экземпляров. Тегconnectorобозначает загруженный данным процессом KafkaConnect-процессор. - Метки:
- connector:
source- Информация о запущенном коннекторе к Источнику данных.sink- Информация о запущенном коннекторе к Приемнику данных.
- connector:
- Ожидаемое поведение метрики: Для отдельного экземпляра - значение равно
1. - Аномальное поведение метрики: Значение, равное
0или отсутствие этой метрики в выборке при запросе к системе мониторинга означает, что ни один из экземпляров системы не работает. - Дата последнего обновления: 2026-03-31
- Тип метрики: summary
- Описание: Общее время, затраченное на перенос события от Источника до Приемника данных.
- Ожидаемое поведение метрики: Колеблется вокруг некоторого значения.
- Аномальное поведение метрики: Значение индикатора возрастает.
- Дата последнего обновления: 2026-03-31
- Тип метрики: summary
- Описание: Время, затраченное на выполнение операции записи данных в Приемник данных.
- Метки:
- quantile:
0.5;0.95;0.99.
- quantile:
- Ожидаемое поведение метрики: Время записи колеблется вокруг некоторого значения, в небольших пределах. Время записи не должно превышать расчетных показателей больше, чем на некоторый процент. При увеличении размера сообщений время записи также может увеличиваться.
- Аномальное поведение метрики: Возрастание времени записи сообщений в Приемник может указывать на следующие причины:
- Деградация сети на участке между коннектором к Приемнику и Приемникмом данных.
- Деградация работы Приемника.
- Проблемы коннектора к Приемнику.
- Перегрузка процессора.
- Утечка, переполнение памяти.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Время запуска приложения.
- Метки:
- main_application_class:
io.tarantool.worker.*- Java класс.
- main_application_class:
- Ожидаемое поведение метрики: Время запуска колеблется в небольших пределах вокруг некоторого значения, не занимает существенный процент от общей работы Tarantool CDC.
- Аномальное поведение метрики: При стабильном возрастании времени запуска приложения, если процессы уходят на перезапуск, это является негативной динамикой. Означает перегруз системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Приблизительный процент использования процессора сборщиком мусора относительно использования процессора за предыдущий период или с начала запуска процесса.
- Ожидаемое поведение метрики: Показатель стабилен, его значение колеблется с небольшой амплитудой вокруг некоторого значения.
- Аномальное поведение метрики: Возрастание данного показателя является признаком проблем с использованием памяти и сборкой мусора.
- Дата последнего обновления: 2026-03-31
- Тип метрики: summary
- Описание: Время, затраченное на паузы для сборщика мусора.
- Ожидаемое поведение метрики: Значение показателя стабильно, уменьшается или колеблется с небольшой амплитудой вокруг некоторого значения.
- Аномальное поведение метрики: Возрастание затрачиваемого времени на сборку мусора указывает на проблемы с использованием памяти и сборкой мусора. Большие и частые паузы могут влиять на общую пропускную способность системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Максимальная пауза в работе сборщика мусора.
- Ожидаемое поведение метрики: Значение показателя стабильно, уменьшается или колеблется с небольшой амплитудой вокруг некоторого значения.
- Аномальное поведение метрики: Возрастание затрачиваемого времени на сборку мусора указывает на проблемы с использованием памяти и сборкой мусора. Большие и частые паузы могут влиять на общую пропускную способность системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Количество использованной памяти.
- Метки:
- area:
nonheap;heap.
- id:
CodeHeap;G1 Survivor Space;G1 Old Gen;G1 Eden Space;Metaspace;Compressed Class Space.
- area:
- Ожидаемое поведение метрики: При возрастании потока сообщений и их размера, может наблюдаться пропорциональное увеличение использования памяти. Использование памяти при стабильном потоке сообщений должно быть также стабильно.
- Аномальное поведение метрики: Увеличение использования памяти при отсутствии соответствующих изменений в потоке данных может указывать на утечку памяти.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Текущее количество потоков, запущенных в режиме daemon.
- Ожидаемое поведение метрики: Количество запущенных потоков в режиме daemon стабильно или колеблется в небольших пределах вокруг некоторого значения.
- Аномальное поведение метрики: Возрастание количества работающих потоков в режиме daemon может указывать на утечку ресурсов, перегрузку системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Текущее количество запущенных потоков в системе.
- Ожидаемое поведение метрики: Количество запущенных потоков стабильно или колеблется в небольших пределах вокруг некоторого значения.
- Аномальное поведение метрики: Возрастание количества работающих потоков может указывать на утечку ресурсов, перегрузку системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Максимальное количество потоков, когда либо работавших в системе одновременно с момента запуска или с сброса индикатора.
- Ожидаемое поведение метрики: Показатель может возрастать в начале работы Tarantool CDC, но в остальное время должен оставаться без изменений.
- Аномальное поведение метрики: Возрастание максимального количества работающих потоков может указывать на утечку ресурсов, перегрузку системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: counter
- Описание: Общее количество потоков в системе, запущенных и отработанных.
- Ожидаемое поведение метрики: Скорость возрастания метрики нулевая или близка к нулю.
- Аномальное поведение метрики: Возрастание общего количества потоков может указывать на утечку ресурсов, перегрузку системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Текущее количество потоков, запущенных Java-машиной.
- Метки:
- state:
blocked;runnable;waiting;terminated;timed-waiting;new.
- state:
- Ожидаемое поведение метрики: Количество потоков стабильно в течении длительного периода работы Tarantool CDC, или
колеблется с небольшой амплитудой вокруг некоторого значения. Количество потоков является примерной суммой
следующих показателей:
- Общие потоки Java Runtime.
- Потоки, запущенные коннекторами для обработки данных.
- Потоки сборщика мусора.
- Аномальное поведение метрики: Возрастание количества потоков может указывать на утечку ресурсов, перегрузку системы с последующим возрастанием нагрузки на сборщик мусора.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Текущее использование процессора Java-машиной.
- Ожидаемое поведение метрики: Низкий показатель использования процессора указывает на стабильную работу системы. Также снижение использования процессора может быть связано со снижением потока данных.
- Аномальное поведение метрики: Возрастание использования процессора может указывать на перегрузку системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Количество открытых файловых дескрипторов. Носит информационный характер. Может понадобиться при расследовании причин падений и ошибок, случающихся в компонентах.
- Ожидаемое поведение метрики: Количество открытых файловых дескрипторов (сетевых сокетов) стабильно в течение продолжительного времени работы Tarantool CDC или колеблется с незначительной амплитудой вокруг некоторого значения.
- Аномальное поведение метрики: Стабильное увеличение данной метрики является аномальным, указывает на утечку ресурсов, перегрузку системы.
- Дата последнего обновления: 2026-03-31
- Тип метрики: gauge
- Описание: Средняя загрузка системы в течение одной минуты. С точки зрения JVM это интерпретируется как количество готовых к исполнению объектов, запланированных к выполнению плюс количество таких объектов, выполняющихся на процессоре в данный момент. Временное окно - 1 минута.
- Ожидаемое поведение метрики: Показатель средней загрузки стабилен или колеблется в небольших пределах вокруг некоторого значения, или пропорционально соответствует потоку сообщений.
- Аномальное поведение метрики: Стабильное возрастание средней загрузки может указывать на утечку ресурсов, перегрузку системы.
- Дата последнего обновления: 2026-03-31