Рекомендации по настройке оповещений для модуля cooler
В данном разделе приведены типовые ситуации, требующие настройки оповещений при работе с модулем cooler,
их описание и инструкции по устранению возникающих проблем.
Логика срабатывания (триггеры) представлена в качестве примеров в формате Prometheus (PromQL).
Узнать больше о модуле cooler можно в разделе Архивация данных по их времени жизни.
Уровень: Warning
Время полного прохода спейса существенно превышает лимиты, заданные в конфигурации роли roles.cooler в опции full_scan_time.
Пример триггера:
Сканирование идет, но оно заняло в 2 раза больше времени, чем значение, указанное в опции full_scan_time.
В примере ниже для опции full_scan_time задано значение 3600:
# Замените 3600 на значение full_scan_time из вашей конфигурации (в секундах)cooler_full_scan_elapsed > 2 * 3600
Варианты решения:
- Проверка диска. Зависание может быть связано с тем, что движок vinyl встал на compaction и временно ограничил скорость записи;
- Валидация конфигурации. Если оповещение срабатывает стабильно, это означает, что модуль
expirationdне успевает за фактическим ростом спейса. Для решения в конфигурации технологической ролиroles.coolerувеличьте значение опции tuples_per_iteration, чтобы файбер обрабатывал данные более интенсивно, либо увеличьте значение параметра full_scan_time.
Уровень: Critical
Зафиксирован постоянный поток ошибок во время выполнения задачи охлаждения. Это означает, что модуль expirationd находит кортежи, подлежащие архивации, но модуль cooler не может перенести их в спейс на vinyl. На данный момент возможны только ошибки, связанные с отменой MVCC-транзакции.
Пример триггера:
Средняя частота ошибок за последние 5 минут превышает допустимый порог (более 1 ошибки в секунду):
rate(cooler_errors[5m]) > 1
Решение:
Оповещение сигнализирует об ошибках конфликта транзакций (MVCC commit failed).
Решение аналогично шагам в разделе Аномальное количество несовпадений версий.
Уровень: Warning
Растет значение метрики cooler_mismatches. Это означает, что пока архиватор готовил перенос кортежа в движок vinyl, пользовательский файбер успел изменить этот же кортеж в memtx.
Пример триггера:
Срабатывает, если фиксируется более 5 несовпадений в секунду на протяжении 5 минут:
rate(cooler_mismatches[5m]) > 5
Варианты решения:
- Анализ профиля нагрузки. Под логику охлаждения попадают данные, которые на самом деле являются "горячими" - их постоянно модифицируют пользователи.
- Проверка функции-предиката. Вероятно, выбрано некорректное условие архивации или оно работает слишком интенсивно: данные начинают охлаждаться до того, как над ними завершились бизнес-операции.
Уровень: Warning
Файбер модуля expirationd тратит безрезультатно ресурсы CPU, сканируя данные, но ничего при этом не охлаждает.
Пример триггера:
Отношение охлажденных кортежей к отсканированным за последние 15 минут составляет менее 1% (при условии, что сканирование идет):
(rate(cooler_tuples_cooled[15m]) / rate(cooler_tuples_scanned[15m])) * 100 < 1andrate(cooler_tuples_scanned[15m]) > 0
Решение:
Проверьте конфигурацию технологической роли roles.cooler.
Скорее всего, обход настроен по первичному индексу, и архиватор на каждой итерации вынужден проходить весь спейс.
Уровень: Critical
Скорость утилизации диска vinyl-ом превышает допустимые нормы, либо общий объем архива (значение cooler_vinyl_bytes_total)
приближается к лимиту выделенного дискового пространства.
Пример триггера:
Прогнозируемое время до полного заполнения диска составляет менее 48 часов, либо размер vinyl-спейса превысил фиксированный порог (например, 1 ТБ):
predict_linear(cooler_vinyl_bytes_total[6h], 172800) > 1e12
Варианты решения:
- Проверка compaction. Проверьте внутренний статус vinyl через команду
box.stat.vinyl(). Возможно, размер растет из-за того, что движок не успевает делать очистку устаревших версий кортежей. - Очистка архива. Если данные в vinyl копятся бесконечно, необходимо обсудить внедрение процесса окончательного удаления старых кортежей уже из самого архива vinyl, либо расширить дисковую память на сервере.