Журнал событий межкластерных репликаторов данных | Clusters_Federation
Руководство администратора Журналирование Журнал событий межкластерных репликаторов данных

Журнал событий межкластерных репликаторов данных

Подробнее о межкластерных репликаторах данных читайте в разделе Архитектура.

Основные события, записываемые в журнал:

  • получение и отправка данных;

  • корректность подключений и состояний;

  • попытки восстановления.

Конфигурация журналирования

Чтобы настроить запись событий в журнал для компонентов Gateway и Destination, задайте в конфигурации репликаторов данных следующие параметры:

  • log_type – формат журналирования. Возможные значения: plain или json. Значение по умолчанию: plain;

  • log_level – уровень журналирования. Возможные значения: error, warn, info, debug, trace. Значение по умолчанию: warn;

  • log_path – путь к каталогу с файлами записей журнала (stderr, stdout, путь к файлу). По умолчанию запись в журнал идет в stderr, но может быть перенаправлена в файл. Если настроен log_path, запись в журнал идет в указанный файл, например /var/log/tcf.log.

Пример настройки ведения журнала Gateway в конфигурации:

gateway:
# ...
  log_type: json
  log_level: debug
  log_path: /var/log/tcf-gateway.log

Пример настройки ведения журнала Destination в конфигурации:

destination:
# ...
  log_type: json
  log_level: debug
  log_path: /var/log/tcf-destination.log

Поиск файлов с записями событий

Если вы ищете записи событий для компонентов Gateway и Destination, но не настраивали их журналирование:

  • проверьте пути журналирования по умолчанию. Журнал обычно записывается в стандартный поток stderr, если не задано специальное местоположение в конфигурации;

  • если задано специальное местоположение, откройте конфигурационный файл для компонентов Gateway и Destination и посмотрите на значение параметра log_path. Это будет путь к файлу журнала.

Формат журналирования

В компонентах Destination и Gateway поддерживаются два формата журналирования:

  • plain – текстовый формат строк;

  • json – структурированные данные для автоматического анализа.

Пример записи в журнал в текстовом (plain) формате

2025-02-20T12:49:45Z DEBUG src/internal/gateway/server.go:277 "Event received" SpaceName=_bucket EventType=INSERT
\__________________/\____/\_________________________________/ \______________/ \________________________/
 Дата и время       Уровень        Источник                      Сообщение     Дополнительные параметры в формате
  события        журналирования                                                         `Key=Value`

Пример записи в журнал в формате json

{
  "time": "2025-02-19T13:55:16+03:00",
  "level": "INFO",
  "source": {
    "function": "github.com/tarantool/cluster-federation/src/pkg/logger_test.Test_Logger.func11",
    "file": "src/pkg/logger/logger_test.go",
    "line": 124
  },
  "msg": "info message",
  "EventType": "INSERT"
}

Здесь:

  • "time": "2025-02-19T13:55:16+03:00 – дата и время события в формате ISO 8601. +03:00 обозначает смещение часового пояса (UTC+3);

  • "level": "INFO" – уровень журналирования;

  • "source": {...} – блок, содержащий информацию об источнике записи в журнал:

    • "function": "github.com/tarantool/cluster-federation/src/pkg/logger_test.Test_Logger.func11" – имя функции, в которой была вызвана запись события в журнал;

    • "file": "src/pkg/logger/logger_test.go" – файл, где была вызвана запись события в журнал;

    • "line": 124 – номер строки в файле, где была зафиксирована запись события в журнал;

  • "msg": "info message" – текстовое сообщение, описывающее событие;

  • "EventType": "INSERT" – дополнительный параметр, указывающий на тип события (например, INSERT означает вставку данных).

Уровни журналирования

  • INFO – информационные сообщения о нормальной работе приложения;

  • WARN – предупреждения о потенциальных проблемах, которые не влияют на работу приложения, но могут потребовать внимания;

  • ERROR – ошибка системы, требует немедленного внимания;

  • DEBUG – максимально подробная информация, включая отладочную.

Далее приведена информация об уровнях WARN и ERROR:

Уровень

Описание

Пример

WARN

Предупреждения о потенциальных проблемах

2025-03-26T13:56:08Z WARN src/internal/destination/gateway_pool.go:300 "Stream closed: context canceled"

ERROR

Ошибки, требующие внимания

2025-04-09T15:24:48Z ERROR src/internal/destination/gateway_pool.go:300 dial tcp 127.0.0.1:10080: connect: connection refused

WARN (Предупреждение)

Записи журнала уровня WARN фиксируют события, которые могут быть потенциальными проблемами, но не влияют на нормальную работу системы на данный момент. Эти события не являются критическими, но требуют внимания, поскольку могут привести к более серьезным проблемам в будущем. Важно отслеживать такие сообщения, чтобы предотвратить возможные сбои.

Возможные ошибки:

„gateway“ field for destination is deprecated and will soon be removed

Используется устаревшее поле gateway.

Пример

2025-04-09T15:24:45Z WARN src/cmd/destination/main.go:185 "‘gateway’ field for destination is deprecated and will soon be removed."

Решение

Замените параметр destination.gateway на destination.gateways в файле конфигурации репликаторов данных.

Got SIGTERM, exiting

Процесс получил сигнал завершения (SIGTERM).

Пример

2025-04-09T15:24:46Z WARN src/cmd/destination/main.go:229 "Got SIGTERM, exiting."

Решение

Проверьте, что остановка компонента была ожидаемой.

Failed to release a destination lock: %s

Ошибка при попытке освободить захваченный ресурс.

Пример

2025-04-09T15:24:47Z WARN src/cmd/destination/main.go:233 "Failed to release a destination lock: lock not held"

Решение

Проверьте исправность хранилища состояния, ошибки в логах, перезапустите компонент.

Got SIGHUP, config reloaded

Конфигурация перезагружена по сигналу.

Пример

2025-04-09T15:24:48Z WARN src/cmd/destination/main.go:239 "Got SIGHUP, config reloaded."

Решение

Убедитесь, что конфигурация актуальна и валидна.

GatewayPool: Failed to connect to gateway server: %s`

Ошибка подключения к компоненту Gateway.

Пример

2025-04-09T15:24:54Z WARN src/internal/destination/gateway_pool.go:123 "GatewayPool: Failed to connect to gateway server: dial tcp 127.0.0.1:10080: connect: connection refused"

Решение

Проверьте URI gateway, сеть, DNS и доступность.

GatewayPool: failed to get snapshot from any gateway

Не удалось получить копию ни с одного gateway.

Пример

2025-04-09T15:24:55Z WARN src/internal/destination/gateway_pool.go:173 "GatewayPool: failed to get snapshot from any gateway from the pool"

Решение

Убедитесь, что все gateway активны и работают корректно.

GatewayPool: failed to get events from any gateway

Не удалось получить события.

Пример

2025-04-09T15:24:56Z WARN src/internal/destination/gateway_pool.go:215 "GatewayPool: failed to get events from any gateway from the pool"

Решение

Убедитесь, что все gateway активны и работают корректно. Проверьте, работает ли источник данных, нет ли сбоев в сети.

GatewayPool: failed to get schema from any gateway

Не удалось получить схему данных.

Пример

2025-04-09T15:24:57Z WARN src/internal/destination/gateway_pool.go:247 "GatewayPool: failed to get schema from any gateway from the pool"

Решение

Убедитесь, что все gateway активны и работают корректно. Проверьте, работает ли источник данных, нет ли сбоев в сети.

GatewayPool: failed to get replicasets from any gateway

Ошибка при получении списка набора реплик.

Пример

2025-04-09T15:24:57Z WARN src/internal/destination/gateway_pool.go:247 "GatewayPool: failed to get schema from any gateway from the pool"

Решение

Убедитесь, что все экземпляры Gateway активны и работают корректно. Проверьте настройки топологии во всех экземплярах Gateway.

Stream closed: %s

Поток передачи данных был закрыт.

Пример

2025-04-09T15:24:59Z WARN src/internal/destination/gateway_pool.go:305 "Stream closed: EOF"

Решение

Проверьте причины прерывания, например: сетевые ошибки или остановку компонента.

CDCSDK.NewReplicasetStreamer failed: %s

Не удалось создать поток для набора реплик.

Пример

2025-04-09T15:25:00Z WARN src/internal/gateway/source.go:39 "CDCSDK.NewReplicasetStreamer failed: source unreachable"

Решение

Убедитесь в доступности источников, корректности конфигурации и URI.

updateSources failed: %s

Не удалось обновить список источников.

Пример

2025-04-09T15:25:02Z WARN src/internal/gateway/server.go:563 "updateSources failed: timeout"

Решение

Проверьте подключение к источникам и корректность их конфигурации.

GetSchema failed: %s

Ошибка при получении схемы данных.

Пример

2025-04-09T15:25:05Z WARN src/internal/gateway/server.go:683 "GetSchema failed: bad response format"

Решение

Убедитесь, что источник доступен и схема данных экспортируется корректно.

streamChanges failed: %s

Не удалось начать поток изменений.

Пример

2025-04-09T15:25:06Z WARN src/internal/gateway/server.go:689 "streamChanges failed: streaming context canceled"

Решение

Проверьте работу источников, сетевое соединение и ошибки в источниках данных.

ERROR (Ошибка)

Записи журнала уровня ERROR фиксируют более серьезные события, которые влияют на функциональность системы. Это проблемы, которые могут препятствовать выполнению определенных операций, однако система в целом может продолжать работать, несмотря на ошибки. Эти события требуют немедленного внимания и могут потребовать вмешательства для их устранения.

Возможные ошибки:

dial tcp 127.0.0.1:10080: connect: connection refused

Не удалось подключиться к порту 10080 — соединение отклонено.

Пример

2025-04-09T15:25:06Z ERROR src/internal/gateway/server.go:689 "dial tcp 127.0.0.1:10080: connect: connection refused"

Решение

Проверьте, запущен ли компонент на порту 10080, убедитесь в его доступности и отсутствии блокировки.

got record with unsupported code

Получена CDC-запись с неподдерживаемым кодом (Nop, RaftPromote и др.).

Пример

2025-04-09T15:25:06Z ERROR src/internal/gateway/server.go:689 "streamChanges failed: streaming context canceled"

Решение

Проверьте, все ли компоненты системы используют совместимые версии.

stream closed: EOF

Поток передачи данных завершился (конец потока).

Пример

2025-04-09T15:25:06Z ERROR src/internal/gateway/server.go:689 "streamChanges failed: streaming context canceled"

Решение

Проверьте, почему завершилась передача: нормальное завершение или аварийный сбой источника.

client.startPusher: All attempts fail

Все попытки запуска ttpusher завершились неудачей из-за недоступности указанных адресов.

Пример

2025-02-08T15:25:06Z ERROR src/internal/destination/client.go:399 Client.start failed: Client.fetchSnapshot: Client.startPusher: ttpusher.Start: All attempts fail

Решение

Проверьте, что сервис слушает на нужных портах и адресах. Убедитесь в актуальности конфигурации и доступности сети.

streaming is canceled: context canceled

Процесс, отвечающий за передачу событий был прерван, потому что контекст (context) его выполнения завершился.

Пример

2025-04-09T15:28:06Z ERROR src/internal/gateway/server.go:203 Failed to send an event, streaming is canceled: context canceled" SpaceName="" EventType=NOP ReplicasetUUID=0c9bc244-b925-4fff-80de-198bef1651a7 VClock="[0 3280]

Решение

Проверьте, что код не завершает контекст до завершения передачи событий. Убедитесь, что нет пауз (timeout) или ручной отмены.

failed to connect to any router

Не удалось подключиться ни к одному роутеру.

Пример

2025-04-09T15:35:06Z ERROR src/internal/destination/main.go:189 Failed to start a client: Client.startPusher: ttpusher.ConnectRouters: Failed to connect to any router

Решение

Убедитесь, что роутеры запущены и сетевые адреса в конфигурации актуальны.

empty space name for space ID

У события (event) отсутствует имя спейса space_name.

Пример

2025-04-09T15:25:06Z ERROR src/internal/gateway/server.go:689 GetEvents failed: checkEvent: Empty space name for space ID 515, replicaset: ..., vclock: [0 3065]

Решение

Убедитесь, что все спейсы корректно зарегистрированы в схемах данных и доступны в памяти при обработке событий.

getSnapshot failed: context canceled

Получение снимка данных прервано из-за отмены контекста (context).

Пример

2025-04-09T15:25:06Z ERROR src/internal/gateway/server.go:689 GetSnapshot failed: Replica.FetchSnapshot(...): context canceled

Решение

Убедись, что операция не прерывается слишком рано из-за короткой паузы (timeout), или потому что вызывающий код закрыл её раньше времени.

SDKEvent2PBEvent failed: Empty space name

Ошибка при преобразовании событий: отсутствует имя спейса.

Пример

2025-04-09T15:25:06Z ERROR src/internal/gateway/server.go:689 SDKEvent2PBEvent failed: checkEvent: Empty space name for space ID 515, replicaset: ..., vclock: [0 3065]

Решение

Проверьте, что спейс с таким ID существует и доступен в схеме данных.

client connection is not ready (0x4000)

Попытка отправки или получения данных через неинициализированное или разорванное соединение.

Пример

2025-04-09T15:25:06Z ERROR src/pkg/ttpusher/writer/writer.go:209 client connection is not ready (0x4000)

Решение

Проверьте, что соединение с кластером Tarantool установлено и авторизация прошла успешно.

can’t modify data on a read-only instance

Попытка записи в экзепляр Tarantool, работающий в режиме чтения read_only.

Пример

2025-04-09T15:25:06Z ERROR src/internal/gateway/server.go:689 "Can't modify data on a read-only instance"

Решение

Убедитесь в корректности настройки кластера и существовании мастера у набора реплик. Проверьте настройку конфигурации destination.

failed to get cluster info

Клиент не смог получить информацию о кластере — все попытки подключения к роутерам завершились неудачей.

Пример

2025-04-09T15:25:06Z ERROR src/pkg/ttpusher/pusher.go:491 "Failed to get cluster info: All attempts fail: ..."

Решение

Убедитесь, что хотя бы один роутер работает.

failed to commit changes: all attempts fail

Невозможно зафиксировать изменения — соединение не установлено.

Пример

2025-04-09T15:25:06Z ERROR src/pkg/ttpusher/writer.go:590 Failed to commit changes: All attempts fail: ..."

Решение

Проверьте соединение, инициализацию клиента и конфигурацию схемы данных. Конфликт может возникать из-за несогласованных изменений или ошибок при подготовке стенда.

failed to recover failed replicaset

Не удалось восстановить отказавший набор реплик — мастер не найден.

Пример

2025-04-09T15:25:06Z ERROR src/pkg/ttpusher/pusher.go:590 "Failed to recover failed replicaset: failed to get master: All attempts fail: ..."

Решение

Убедитесь, что хотя бы один из наборов реплик доступен и может быть назначен мастером. Проверьте состояние всех узлов.

failed to connect to router

Ошибка подключения к роутеру кластера Tarantool — соединение отклонено.

Пример

2025-04-09T15:25:06Z ERROR src/pkg/ttpusher/pusher.go:188 "Failed to connect to router: All attempts fail: ...""

Решение

Проверьте, запущен ли нужный процесс и действительно ли он принимает подключения на нужном порту.

streamChangesWithRetry failed

Повторные попытки чтения изменений завершились неудачей.

Пример

2025-04-09T15:25:06Z ERROR src/internal/gateway/server.go:701 streamChangesWithRetry failed: All attempts fail:
#1: checkEvent: Empty space name for space ID ...
#2: context canceled
#3: context canceled

Решение

Проверьте корректность конфигурации TCF, источников данных и соединений.

Нашли ответ на свой вопрос?
Обратная связь