Считайте, что это Incident Postmortem
🔴 Итак, input: Данные в таблице заказов застряли на вчерашней дате, свежих заказов в базе нет.
🔴 Шаги по решению проблемы:
— Проверяем таблицы в Clickhouse, действительно последняя дата - вчера
— Делаем сверку с таблицей источника данных - последний заказ несколько минут назад
Вывод: что-то не так с репликацией данных
— Смотрим в Kafka на topic offsets
start:3752136
end:3884660
offset:3869357
lag:15303
О нет, накоплено отставание в 15К записей, и оно продолжает расти! В чем дело?
Либо не хватает мощности (bottleneck) для записи в Clickhouse. Либо что-то с самим подключением (коннектором).
— Подключаемся на VM на которой развернут Debezium connector и смотрим лог
В логах сервиса (контейнер) вроде ничего подозрительного, при просмотре последних сообщений ошибок нет.
— Смотрим статус коннектора
curl http://localhost:8083/connectors/clickhouse-jdbc-sink/status | jq
Видим огромное, сложно воспринимаемое сообщение о статусе, в котором взглядом выцепляю
failed: Connection refused— Делаем restart коннектора (вместе с tasks!)
curl -X POST http://localhost:8083/connectors/clickhouse-jdbc-sink/restart?includeTasks=true | jq
Есть! Через несколько секунд проблема решена.
Коннектор работает, отставание (оффсет) обнулилось, данные в Clickhouse появились.
🔴 Выводы:
1. Всегда что-то может пойти не так, и заранее неизвестно что, где и когда.
2. Поэтому необходимы инструменты мониторинга:
— Общая нагрузка на систему CPU / Memory / Disk (identify bottlenecks)
— Потребление ресурсов в разрезе сервисов (Debezium connectors, Kafka, Clickhouse)
— Healthchecks - периодические проверки статуса и работоспособности сервисов
— Своевременные уведомления о возникающих проблемах (errors, connection lost, etc.)
Продолжаю работу.
💬 Сталкивались с ситуациями, когда мониторинг выручал? Какие инструменты могли бы советовать?
🌐 @data_apps | Навигация по каналу


