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 — в группе недоступно допустимое число дисков.