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: устройство и типовые операции.
- Состояние и причина падения:
kubectl --context yc-sarex-stage -n debezium exec $POD -- curl -s localhost:8083/connectors/debezium-iams/status
Причина падения задачи находится в поле tasks[0].trace, достаточно первых строк.
- Определить причину по тексту
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 |
коннектор остановлен вручную | выяснить, кто и зачем остановил |
- Проверить, что автоматический перезапуск выполняется:
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
Как починить
- Слот занят. Перезапустить задачу (раздел 3 общего документа). Если ошибка повторяется, найти
active_pidслота и завершить его:SELECT pg_terminate_backend(<active_pid>);, затем перезапустить задачу. - PostgreSQL отклоняет учётную запись или права. Сверить секрет
debezium-postgresqlс пользователем кластера, права восстановить по разделу 7 общего документа. Пароль в вывод команд не отправлять. - Kafka отклоняет учётную запись или нет топика. Топики и права пользователя
debeziumописаны в контракте terraform (environments/stage/services/debezium.yaml). Запустить пайплайнinfra/terraformна веткеstage, затем перезапустить под. - Событие не сериализуется. Перезапуск не помогает: задача падает на том же событии. Зафиксировать
trace, выяснить у владельца таблицы (команда IAM), какое изменение схемы выполнялось, и эскалировать. Пропуск события означает потерю изменения в копиях потребителей и согласуется отдельно. - Коннектор не зарегистрирован. Перезапустить пайплайн
deploy_stageвinfra/debezium: Jobdebezium-iams-registerзарегистрирует коннектор. - Остановленный вручную коннектор запускается запросом
PUT /connectors/debezium-iams/resume.
Для DebeziumErroneousEvents при работающей задаче: найти в логе пода строки с ERROR за период срабатывания и определить таблицу. Сообщить потребителям, что часть изменений могла не дойти, после устранения причины выполнить повторный снапшот таблицы (раздел 4 общего документа).
Критерий закрытия
- Коннектор и задача в
RUNNING. - Слот:
active = true, значениеunconfirmedуменьшается. - Алерт перешёл в
inactive.