Health Check API
YDB имеет встроенную систему самодиагностики, с помощью которой можно получить краткий отчет о состоянии базы данных и информацию об имеющихся проблемах.
Для инициации проверки необходимо сделать вызов метода SelfCheck
из сервиса Ydb.Monitoring
. Также необходимо передать имя проверяемой БД стандартным способом.
В результате вызова этого метода будет возвращена следующая структура:
message SelfCheckResult {
SelfCheck.Result self_check_result = 1;
repeated IssueLog issue_log = 2;
}
Поле self_check_result
типа enum
содержит результат проверки БД:
GOOD
— проблем не обнаружено.DEGRADED
— обнаружена деградация одной из систем базы, но база продолжает функционировать (например, допустимая потеря диска).MAINTENANCE_REQUIRED
— обнаружена серьезная деградация, есть риск потери доступности, требуется вмешательство человека.EMERGENCY
— в базе данных обнаружена серьезная проблема, полная или частичная потеря доступности.
Поле issue_log
в случае обнаружения проблем будет содержать описания проблем следующей структуры:
message IssueLog {
string id = 1;
StatusFlag.Status status = 2;
string message = 3;
Location location = 4;
repeated string reason = 5;
string type = 6;
uint32 level = 7;
}
id
— уникальный идентификатор проблемы в рамках данного ответа.status
— статус (серьезность) текущей проблемы. Может принимать одно из следующих значений:RED
— компонента неисправна или недоступна.ORANGE
— серьезная проблема, мы в одном шаге от потери доступности. Возможно требуется вмешательство.YELLOW
— небольшая проблема, не создающая риски для доступности. Рекомендуется продолжить наблюдение за проблемой.BLUE
— временная легкая деградация, не влияющая на доступность базы.GREEN
— проблемы не обнаружено.GREY
— статус определить не удалось (проблема с самим механизмом самодиагностики).
message
— текст, описывающий проблему.location
— местоположение проблемы.reason
— возможные идентификаторы вложенных проблем, которые привели к текущей проблеме.type
— категория проблемы (по подсистемам).level
— глубина вложенности проблемы.
Возможные проблемы
Pool usage over 90/95/99%
— один из CPU пулов перегружен.System tablet is unresponsive / response time over 1000ms/5000ms
— системная таблетка не отвечает или отвечает долго.Tablets are restarting too often
— таблетки слишком часто перезапускаются.Tablets are dead
— таблетки не запущены (или не могут быть запущены).LoadAverage above 100%
— физический хост перегружен.There are no compute nodes
— у базы нет нод для запуска таблеток.PDisk state is ...
— сообщает о проблемах с физическим диском.PDisk is not available
— отсутствует физический диск.Available size is less than 12%/9%/6%
— заканчивается свободное место на физическом диске.VDisk is not available
— отсутствует виртуальный диск.VDisk state is ...
— сообщает о проблемах с виртуальным диском.DiskSpace is ...
— сообщает о проблемах с местом на виртуальном диске.Storage node is not available
— отсутствует нода с дисками.Replication in progress
— диск в процессе репликации.Group has no redundancy
— группа хранения потеряла избыточность.Group failed
— группа хранения потеряла целостность.Group degraded
— в группе недоступно допустимое число дисков.