Перейти к содержанию

DebeziumTaskNotRunning, DebeziumConnectorNotRunning, DebeziumConnectorNotRegistered, DebeziumErroneousEvents

Что означает алерт

DebeziumConnectorNotRunning: коннектор debezium-iams 5 минут в состоянии, отличном от RUNNING (FAILED, PAUSED, STOPPED, UNASSIGNED). Severity: critical.

DebeziumTaskNotRunning: у коннектора 10 минут нет ни одной задачи в RUNNING. Severity: critical.

DebeziumConnectorNotRegistered: Kafka Connect работает, коннекторов в нём нет 10 минут. Severity: critical.

DebeziumErroneousEvents: Debezium не смог обработать часть событий за последние 15 минут. Severity: warning.

Коннектор и задача сообщают состояние раздельно: при RUNNING у коннектора задача может быть в FAILED. Данные идут только при работающей задаче. Kafka Connect упавшую задачу сам не перезапускает. Это делает CronJob debezium-iams-task-restart каждые 5 минут; DebeziumTaskNotRunning срабатывает, когда перезапуск не помог.

Лейблы алерта: connector, status (для DebeziumConnectorNotRunning), server (для DebeziumErroneousEvents).

Диагностика (по шагам)

Переменная POD и базовые команды описаны в разделе 2 общего документа: Debezium: устройство и типовые операции.

  1. Состояние и причина падения:
kubectl --context yc-sarex-stage -n debezium exec $POD -- curl -s localhost:8083/connectors/debezium-iams/status

Причина падения задачи находится в поле tasks[0].trace, достаточно первых строк.

  1. Определить причину по тексту trace:
Текст Причина Действие
replication slot "debezium_iams" is active for PID слот занят предыдущим соединением «Как починить», пункт 1
can no longer get changes from replication slot, requested WAL segment ... has already been removed слот сброшен DebeziumReplicationSlotLost
password authentication failed, permission denied учётная запись debezium в PostgreSQL или её права «Как починить», пункт 2
publication "debezium_iams" does not exist publication удалена раздел 7 общего документа
SaslAuthenticationException, TopicAuthorizationException, UnknownTopicOrPartitionException учётная запись, права или топик в Kafka «Как починить», пункт 3
DataException, SchemaBuilderException, ошибка на конкретной таблице или колонке событие, которое Debezium не может сериализовать, обычно после изменения схемы таблицы «Как починить», пункт 4
ответ 404 на запрос состояния коннектор не зарегистрирован «Как починить», пункт 5
connector.state: PAUSED или STOPPED коннектор остановлен вручную выяснить, кто и зачем остановил
  1. Проверить, что автоматический перезапуск выполняется:
kubectl --context yc-sarex-stage -n debezium get cronjob debezium-iams-task-restart
kubectl --context yc-sarex-stage -n debezium logs -l app=debezium-iams-task-restart --tail=5

Как починить

  1. Слот занят. Перезапустить задачу (раздел 3 общего документа). Если ошибка повторяется, найти active_pid слота и завершить его: SELECT pg_terminate_backend(<active_pid>);, затем перезапустить задачу.
  2. PostgreSQL отклоняет учётную запись или права. Сверить секрет debezium-postgresql с пользователем кластера, права восстановить по разделу 7 общего документа. Пароль в вывод команд не отправлять.
  3. Kafka отклоняет учётную запись или нет топика. Топики и права пользователя debezium описаны в контракте terraform (environments/stage/services/debezium.yaml). Запустить пайплайн infra/terraform на ветке stage, затем перезапустить под.
  4. Событие не сериализуется. Перезапуск не помогает: задача падает на том же событии. Зафиксировать trace, выяснить у владельца таблицы (команда IAM), какое изменение схемы выполнялось, и эскалировать. Пропуск события означает потерю изменения в копиях потребителей и согласуется отдельно.
  5. Коннектор не зарегистрирован. Перезапустить пайплайн deploy_stage в infra/debezium: Job debezium-iams-register зарегистрирует коннектор.
  6. Остановленный вручную коннектор запускается запросом PUT /connectors/debezium-iams/resume.

Для DebeziumErroneousEvents при работающей задаче: найти в логе пода строки с ERROR за период срабатывания и определить таблицу. Сообщить потребителям, что часть изменений могла не дойти, после устранения причины выполнить повторный снапшот таблицы (раздел 4 общего документа).

Критерий закрытия

  1. Коннектор и задача в RUNNING.
  2. Слот: active = true, значение unconfirmed уменьшается.
  3. Алерт перешёл в inactive.