From af967e6dfe7d33398dcaf72f706c850759f3dba5 Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Wed, 19 Jun 2024 08:25:50 +0000 Subject: [PATCH 01/15] health check docs --- .../ydb-sdk/_assets/hc_cards_hierarchy.png | Bin 0 -> 80093 bytes .../ydb-sdk/_assets/hc_types_hierarchy.png | Bin 0 -> 34000 bytes .../reference/ydb-sdk/health-check-api.md | 136 +++++++++++++----- .../ydb-sdk/_assets/hc_cards_hierarchy.png | Bin 0 -> 80093 bytes .../ydb-sdk/_assets/hc_types_hierarchy.png | Bin 0 -> 34000 bytes .../reference/ydb-sdk/health-check-api.md | 136 +++++++++++++----- 6 files changed, 197 insertions(+), 75 deletions(-) create mode 100644 ydb/docs/en/core/reference/ydb-sdk/_assets/hc_cards_hierarchy.png create mode 100644 ydb/docs/en/core/reference/ydb-sdk/_assets/hc_types_hierarchy.png create mode 100644 ydb/docs/ru/core/reference/ydb-sdk/_assets/hc_cards_hierarchy.png create mode 100644 ydb/docs/ru/core/reference/ydb-sdk/_assets/hc_types_hierarchy.png diff --git a/ydb/docs/en/core/reference/ydb-sdk/_assets/hc_cards_hierarchy.png b/ydb/docs/en/core/reference/ydb-sdk/_assets/hc_cards_hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..d3615fc85b6733fad0339f4be715207e6de89055 GIT binary patch literal 80093 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 literal 0 HcmV?d00001 diff --git a/ydb/docs/en/core/reference/ydb-sdk/_assets/hc_types_hierarchy.png b/ydb/docs/en/core/reference/ydb-sdk/_assets/hc_types_hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..00253f7ac42eeb1290e4c2e50a4251f6bb594073 GIT binary patch literal 34000 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 z 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
  • `GOOD`: No problems were detected.
  • `DEGRADED`: Degradation of one of the database systems was detected, but the database is still functioning (for example, allowable disk loss).
  • `MAINTENANCE_REQUIRED`: Significant degradation was detected, there is a risk of availability loss, and human maintenance is required.
  • `EMERGENCY`: A serious problem was detected in the database, with complete or partial loss of availability.
| +| `issue_log` | This is a set of elements, each of which describes a problem in the system at a certain level. | +| `issue_log.id` | A unique problem ID within this response. | +| `issue_log.status` | Status (severity) of the current problem.
It can take one of the following values:
  • `RED`: A component is faulty or unavailable.
  • `ORANGE`: A serious problem, we are one step away from losing availability. Maintenance may be required.
  • `YELLOW`: A minor problem, no risks to availability. We recommend you continue monitoring the problem.
  • `BLUE`: Temporary minor degradation that does not affect database availability. The system is expected to switch to `GREEN`.
  • `GREEN`: No problems were detected.
  • `GREY`: Failed to determine the status (a problem with the self-diagnostic mechanism).
  • | +| `issue_log.message` | Text that describes the problem. | +| `issue_log.location` | Location of the problem. | +| `issue_log.reason` | This is a set of elements, each of which describes a problem in the system at a certain level. | +| `issue_log.type` | Problem category (by subsystem). | +| `issue_log.level` | Depth of the problem nesting. | +| `database_status` | If settings contains `verbose` parameter than `database_status` field will be filled.
    It provides a summary of the overall health of the database.
    It's used to quickly review the overall health of the database, helping to assess its health and whether there are any serious problems at a high level. | +| `location` | Contains information about host, where `HealthCheck` service was called | + + +## Call parameters {#call-parameters} +The whole list of extra parameters presented below: +```c++ +struct TSelfCheckSettings : public TOperationRequestSettings{ + FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); + FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); + FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); +}; +``` -* `id`: A unique problem ID within this response. -* `status`: Status (severity) of the current problem. It can take one of the following values: - * `RED`: A component is faulty or unavailable. - * `ORANGE`: A serious problem, we are one step away from losing accessibility. Intervention may be required. - * `YELLOW`: A minor problem, no risks to accessibility. We recommend you continue monitoring the problem. - * `BLUE`: Temporary minor degradation that does not affect database accessibility. - * `GREEN`: No problems were detected. - * `GREY`: Failed to determine the status (a problem with the self-diagnostic mechanism). -* `message`: [Text that describes the problem](#problems). -* `location`: Location of the problem. -* `reason`: Possible IDs of the nested problems that led to the current problem. -* `type`: Problem category (by subsystem). -* `level`: Depth of the problem nesting. +| Parameter | Description | +|:----|:----| +| `ReturnVerboseStatus` | as was said earlier this parameter affects the filling of `database_status` field. | +| `MinimumStatus` | the minimum status that will be given in the response. Issues with a better status will be discarded. | +| `MaximumLevel` | maximum depth of issues in response. Deeper levels will be discarded | ## Possible problems {#problems} -* `Pool usage over 90/95/99%`: One of the pools' CPUs is overloaded. -* `System tablet is unresponsive / response time over 1000ms/5000ms`: The system tablet is not responding or it takes too long to respond. -* `Tablets are restarting too often`: Tablets are restarting too often. -* `Tablets are dead`: Tablets are not started (or cannot be started). -* `LoadAverage above 100%`: A physical host is overloaded. -* `There are no compute nodes`: The database has no nodes to start the tablets. -* `PDisk state is ...`: Indicates problems with a physical disk. -* `PDisk is not available`: A physical disk is not available. -* `Available size is less than 12%/9%/6%`: Free space on the physical disk is running out. -* `VDisk is not available`: A virtual disk is not available. -* `VDisk state is ...`: Indicates problems with a virtual disk. -* `DiskSpace is ...`: Indicates problems with virtual disk space. -* `Storage node is not available`: A node with disks is not available. -* `Replication in progress`: Disk replication is in progress. -* `Group has no redundancy`: A storage group lost its redundancy. -* `Group failed`: A storage group lost its integrity. -* `Group degraded`: The number of disks allowed in the group is not available. +| Message | Description | +|:----|:----| +| **DATABASE** || +| `Database has multiple issues`
    `Database has compute issues`
    `Database has storage issues` | These issues depend solely on the underlying `COMPUTE` and `STORAGE` layers. This is the most general status of the database. | +| **STORAGE** || +| `There are no storage pools` | Unable to determine `STORAGE_POOLS` issues below. | +| `Storage degraded`
    `Storage has no redundancy`
    `Storage failed` | These issues depend solely on the underlying `STORAGE_POOLS` layer. | +| `System tablet BSC didn't provide information` | Storage diagnostics will be generated with alternative way. | +| `Storage usage over 75%/85%/90%` | Need to increase disk space. | +| **STORAGE_POOL** || +| `Pool degraded/has no redundancy/failed` | These issues depend solely on the underlying `STORAGE_GROUP` layer. | +| **STORAGE_GROUP** || +| `Group has no vslots` || +| `Group degraded` | The number of disks allowed in the group is not available. | +| `Group has no redundancy` | A storage group lost its redundancy. | +| `Group failed` | A storage group lost its integrity. | +||`HealthCheck` checks various parameters (fault tolerance mode, number of failed disks, disk status, etc.) and, depending on this, sets the appropriate status and displays a message. | +| **VDISK** || +| `System tablet BSC didn't provide known status` | This case is not expected, it inner problem. | +| `VDisk is not available` | the disk is not operational at all. | +| `VDisk is being initialized` | initialization in process. | +| `Replication in progress` | the disk accepts queries, but not all the data was replicated. | +| `VDisk have space issue` | These issues depend solely on the underlying `PDISK` layer. | +| **PDISK** || +| `Unknown PDisk state` | `HealthCheck` the system can't parse pdisk state. | +| `PDisk is inactive/PDisk state is FAULTY/BROKEN/TO_BE_REMOVED` | Indicates problems with a physical disk. | +| `Available size is less than 12%/9%/6%` | Free space on the physical disk is running out. | +| `PDisk is not available` | A physical disk is not available. | +| **STORAGE_NODE** || +| `Storage node is not available` | A node with disks is not available. | +| **COMPUTE** || +| `There are no compute nodes` | The database has no nodes to start the tablets.
    Unable to determine `COMPUTE_NODE` issues below. | +| `Compute has issues with system tablets` | These issues depend solely on the underlying `SYSTEM_TABLET` layer. | +| `Some nodes are restarting too often` | These issues depend solely on the underlying `NODE_UPTIME` layer. | +| `Compute is overloaded` | These issues depend solely on the underlying `COMPUTE_POOL` layer. | +| `Compute quota usage` | These issues depend solely on the underlying `COMPUTE_QUOTA` layer. | +| `Compute has issues with tablets`| These issues depend solely on the underlying `TABLET` layer. | +| **COMPUTE_QUOTA** || +| `Paths quota usage is over than 90%/99%/Paths quota exhausted`
    `Shards quota usage is over than 90%/99%/Shards quota exhausted` |Quotas exhausted| +| **COMPUTE_NODE** | *There is no specific issues on this layer.* | +| **SYSTEM_TABLET** || +| `System tablet is unresponsive / response time over 1000ms/5000ms`| The system tablet is not responding or it takes too long to respond. | +| **TABLET** || +| `Tablets are restarting too often` | Tablets are restarting too often. | +| `Tablets/Followers are dead` | Tablets are not running (probably cannot be started). | +| **LOAD_AVERAGE** || +| `LoadAverage above 100%` | A physical host is overloaded.
    The `Healthcheck` tool monitors system load by evaluating the current workload in terms of running and waiting processes (load) and comparing it to the total number of logical cores on the host (cores). For example, if a system has 8 logical cores and the current load value is 16, the load is considered to be 200%.
    `Healthcheck` only checks if the load exceeds the number of cores (load > cores) and reports based on this condition. This indicates that the system is working at or beyond its capacity, potentially due to a high number of processes waiting for I/O operations.

    Load Information:
    Source:
    `/proc/loadavg`
    Logical Cores Information

    The number of logical cores:
    Primary Source:
    `/sys/fs/cgroup/cpu.max`

    Fallback Source:
    `/sys/fs/cgroup/cpu/cpu.cfs_quota_us`
    `/sys/fs/cgroup/cpu/cpu.cfs_period_us`
    The number of cores is calculated by dividing the quota by the period (quota / period) +| **COMPUTE_POOL** || +| `Pool usage is over than 90/95/99%` | One of the pools' CPUs is overloaded. | +| **NODE_UPTIME** || +| `Node is restarting too often/The number of node restarts has increased` | The number of node restarts has exceeded the threshold. | +| **NODES_SYNC** || +| `The nodes have a time difference of ... ms` | Time drift on nodes might lead to potential issues with coordinating distributed transactions. | diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_assets/hc_cards_hierarchy.png b/ydb/docs/ru/core/reference/ydb-sdk/_assets/hc_cards_hierarchy.png new file mode 100644 index 0000000000000000000000000000000000000000..d3615fc85b6733fad0339f4be715207e6de89055 GIT binary patch literal 80093 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 | +| `issue_log` | Это набор элементов, каждый из которых описывает проблему в системе на определенном уровне. | +| `issue_log.id` | Уникальный идентификатор проблемы в этом ответе. | +| `issue_log.status` | Статус (серьезность) текущей проблемы.
    Может принимать одно из следующих значений:
    • `RED`: Компонент неисправен или недоступен.
    • `ORANGE`: Серьезная проблема, мы в шаге от потери доступности. Может потребоваться обслуживание.
    • `YELLOW`: Небольшая проблема, нет рисков для доступности. Рекомендуется продолжать мониторинг проблемы.
    • `BLUE`: Временная небольшая деградация, не влияющая на доступность базы данных. Ожидается переход системы в `GREEN`.
    • `GREEN`: Проблем не обнаружено.
    • `GREY`: Не удалось определить статус (проблема с механизмом самодиагностики).
    | +| `issue_log.message` | Текст, описывающий проблему. | +| `issue_log.location` | Местоположение проблемы. | +| `issue_log.reason` | Это набор элементов, каждый из которых описывает причину проблемы в системе на определенном уровне. | +| `issue_log.type` | Категория проблемы. | +| `issue_log.level` | Глубина вложенности проблемы. | +| `database_status` | Если в настройках содержится параметр `verbose`, то поле `database_status` будет заполнено.
    Оно предоставляет сводку общего состояния базы данных.
    Используется для быстрой оценки состояния базы данных и выявления серьезных проблем на высоком уровне. | +| `location` | Содержит информацию о хосте, на котором был вызван сервис `HealthCheck`. | + + +## Call parameters {#call-parameters} +Полный список дополнительных параметров представлен ниже: +```c++ +struct TSelfCheckSettings : public TOperationRequestSettings{ + FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); + FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); + FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); +}; +``` + +| Параметр | Описание | +|:----|:----| +| `ReturnVerboseStatus` | Как было сказано ранее, этот параметр влияет на заполнение поля `database_status`. | +| `MinimumStatus` | Минимальный статус, который будет указан в ответе. Проблемы с лучшим статусом будут отброшены. | +| `MaximumLevel` | Максимальная глубина проблем в ответе. Более глубокие уровни будут отброшены. | ## Возможные проблемы {#problems} -* `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` — в группе недоступно допустимое число дисков. +| Сообщение | Описание | +|:----|:----| +| **DATABASE** || +| `Database has multiple issues`
    `Database has compute issues`
    `Database has storage issues` | Зависит от нижележащих слоев `COMPUTE` и `STORAGE`. Это самый общий статус базы данных. | +| **STORAGE** || +| `There are no storage pools` | Недоступна информация по пулам на уровне `STORAGE_POOLS`. | +| `Storage degraded`
    `Storage has no redundancy`
    `Storage failed` | Зависит от нижележащего слоя `STORAGE_POOLS`. | +| `System tablet BSC didn't provide information` | Информация о сторадже не доступна. | +| `Storage usage over 75%/85%/90%` | Необходимо увеличить дисковое пространство. | +| **STORAGE_POOL** || +| `Pool degraded/has no redundancy/failed` | Зависит от нижележащего слоя `STORAGE_GROUP`. | +| **STORAGE_GROUP** || +| `Group has no vslots` || +| `Group degraded` | В группе недоступно допустимое число дисков. | +| `Group has no redundancy` | Группа хранения потеряла избыточность. | +| `Group failed` | Группа хранения потеряла целостность. | +|| `HealthCheck` проверяет различные параметры (режим отказоустойчивости, количество отказавших дисков, статус дисков и т. д.) и в зависимости от этого устанавливает соответствующий статус у группы. | +| **VDISK** || +| `System tablet BSC didn't provide known status` | Эта ошибка не ожидается. Внутренняя ошибка. | +| `VDisk is not available` | Отсутствует виртуальный диск. | +| `VDisk is being initialized` | Инициализация виртуального диска в процессе. | +| `Replication in progress` | Диск в процессе репликации, но может принимать запросы. | +| `VDisk have space issue` | Зависит от нижележащего слоя `PDISK`. | +| **PDISK** || +| `Unknown PDisk state` | `HealthCheck` не может разобрать состояние PDisk. Внутренняя ошибка. | +| `PDisk is inactive/PDisk state is FAULTY/BROKEN/TO_BE_REMOVED` | Cообщает о проблемах с физическим диском. | +| `Available size is less than 12%/9%/6%` | Заканчивается свободное место на физическом диске. | +| `PDisk is not available` | Отсутствует физический диск. | +| **STORAGE_NODE** || +| `Storage node is not available` | Отсутствует нода с дисками. | +| **COMPUTE** || +| `There are no compute nodes` | В базе нет нод для запуска таблеток.
    Невозможно определить уровень `COMPUTE_NODE` ниже. | +| `Compute has issues with system tablets` | Зависит от нижележащего слоя `SYSTEM_TABLET`. | +| `Some nodes are restarting too often` | Зависит от нижележащего слоя `NODE_UPTIME`. | +| `Compute is overloaded` | Зависит от нижележащего слоя `COMPUTE_POOL`. | +| `Compute quota usage` | Зависит от нижележащего слоя `COMPUTE_QUOTA`. | +| `Compute has issues with tablets` | Зависит от нижележащего слоя `TABLET`. | +| **COMPUTE_QUOTA** || +| `Paths quota usage is over than 90%/99%/Paths quota exhausted`
    `Shards quota usage is over than 90%/99%/Shards quota exhausted` | Квоты исчерпаны. | +| **COMPUTE_NODE** | *Нет сообщений на этом уровне.* | +| **SYSTEM_TABLET** || +| `System tablet is unresponsive / response time over 1000ms/5000ms` | Системная таблетка не отвечает или отвечает долго | +| **TABLET** || +| `Tablets are restarting too often` | Таблетки слишком часто перезапускаются. | +| `Tablets/Followers are dead` | Таблетки не запущены (или не могут быть запущены). | +| **LOAD_AVERAGE** || +| `LoadAverage above 100%` | Физический хост перегружен.
    Сервис `Healthcheck` мониторит системную нагрузку, оценивая ее в терминах выполняющихся, ожидающих процессов (load) и сравнивая её с общим числом логических ядер на хосте (cores). Например, если у системы 8 логических ядер и текущая нагрузка составляет 16, нагрузка считается равной 200%.
    `Healthcheck` проверяет только превышение нагрузки над количеством ядер (load > cores) и сообщает на основе этого предупреждение. Это указывает на то, что система работает на пределе, скорее всего из-за большого количества процессов, ожидающих операций ввода-вывода.

    Информация о нагрузке:
    Источник:
    `/proc/loadavg`
    Информация о логических ядрах

    Количество логических ядер:
    Основной источник:
    `/sys/fs/cgroup/cpu.max`

    Дополнительный источник:
    `/sys/fs/cgroup/cpu/cpu.cfs_quota_us`
    `/sys/fs/cgroup/cpu/cpu.cfs_period_us`
    Количество ядер вычисляется путем деления квоты на период (quota / period) | +| **COMPUTE_POOL** || +| `Pool usage is over than 90/95/99%` | один из CPU пулов перегружен. | +| **NODE_UPTIME** || +| `Node is restarting too often` | Узлы слишком часто перезапускаются. | +| `The number of node restarts has increased` | Количество рестартов ноды превысило порог. | +| **NODES_SYNC** || +| `The nodes have a time difference of ... ms` | Расхождение времени на узлах, что может приводить к возможным проблемам с координацией распределённых транзакций. | From 63b738296ad66476a1cbc96e28854903faccbc15 Mon Sep 17 00:00:00 2001 From: Andrei Rykov Date: Tue, 25 Jun 2024 09:14:00 +0200 Subject: [PATCH 02/15] Update ydb/docs/en/core/reference/ydb-sdk/health-check-api.md Co-authored-by: Ivan Blinkov --- ydb/docs/en/core/reference/ydb-sdk/health-check-api.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index d989ef547673..58046723d063 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -73,9 +73,9 @@ struct TSelfCheckSettings : public TOperationRequestSettings | Parameter | Description | |:----|:----| -| `ReturnVerboseStatus` | as was said earlier this parameter affects the filling of `database_status` field. | -| `MinimumStatus` | the minimum status that will be given in the response. Issues with a better status will be discarded. | -| `MaximumLevel` | maximum depth of issues in response. Deeper levels will be discarded | +| `ReturnVerboseStatus` | This parameter determins whether the `database_status` response field is filled. | +| `MinimumStatus` | The minimum status that will be included in the response. Issues with a lower status will be discarded. | +| `MaximumLevel` | The maximum depth of issues to include in the response. Deeper levels will be discarded. | ## Possible problems {#problems} From e9a1b945ce8b81587d01b6b3a555dd4ab4e39378 Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Tue, 25 Jun 2024 08:45:59 +0000 Subject: [PATCH 03/15] doc update --- .../ydb-sdk/_assets/hc_types_hierarchy.png | Bin 34000 -> 55745 bytes .../reference/ydb-sdk/health-check-api.md | 229 +++++++++++++++-- .../ydb-sdk/_assets/hc_types_hierarchy.png | Bin 34000 -> 55745 bytes .../reference/ydb-sdk/health-check-api.md | 230 ++++++++++++++++-- 4 files changed, 431 insertions(+), 28 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/_assets/hc_types_hierarchy.png b/ydb/docs/en/core/reference/ydb-sdk/_assets/hc_types_hierarchy.png index 00253f7ac42eeb1290e4c2e50a4251f6bb594073..c89b8fbc82153f2d402db081d8b0513a5086b598 100644 GIT binary patch literal 55745 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

    qi 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 z%0A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 z z1n?<_LIAtGURFTxcO5jO!~?9g6rJP$@}iW07gb_W)KqjZJG$|bAzq1%w+m1O!$#RZ zNQH-qN(J5|#*`KsXZ~vk-UdKO6Vr>; zPGAcOD4daTPy>7@!a#T2Qerce4mabmzE$v86r?p#QJ-p^F7ZAI7G{GLW`O{MfsOrf zN6&Jk%XMKv$#(VEw@*xbKke`JrJa_xBUEHa3AjC}$KilcJuv}o_t}a|l&A8#m<`_m zDGX_PpXXy)OkKKGIb7&-c<-0eqM|bu#ihC`^C$MxzkL_cPMhqu=dO7LyTwGsnTdg- z%8GHONeK<$_$5WW)jL;hF3Zy2Q!n*(6gpc%K8TQT18I6Z*%*=u6IcVhE#Rc&L zFq^02uy0dH+u<(;W<-k}D%&m}#?IX3r?Z(Upof%= zsy`-YKM+755GbtIjq93^g4U3LB~E$9{km5-5$B;k7Xyk3&QTDKXw&OGG zuirxZWY}qva1XOWqGD-9cavH5u%&7#M?WeQ19-}Wd*Azo>5S(q$ChEZi-!5$=lPc! zW{@`Wvz=&-2b0c_vEAYIQs@~q0`^P$@6jLCu#LO4T5Y$E5Tb0YdFx`8*s2M5rw3bOM2WXd7cQCdLXsU; zu?s`w#p#KUb4PU@z6A!pOo}qTmM>*Z(oBd-K_h0*9Y7>#3ROPL>q^#1-<)#%O1g7M zOVAkGNR$`8P?-hwMZcf{<4UExZj&kH2y>OBF16jL4^&i_SN}+Sk(&}fkv}j2m;uJn zIF7l~tuwxtWr?SVw6N?-L$+;vu_`1r|NZnn>dvm?yo3tlC(oXx#j(m!a@M8~6?z|bAt-SrEhvG=~q+Qx1)%M#%DE;}p%Di5=t;QU(q>aR|VUB^1IP&{~ds@&996H+Z(>1uP zRfmZ*aDU8CN@&WMf7;y^Drls_<8?ztaafPqFyqTHJ^7D)Jhu-G!9tL8+KmorS{RFu zlw;2CjX22!8Rvv1rxSr+Fbv{U2WxG_feqewfvUD`_vk*PG>nwwv$F>6c(pzI#uwGB z0Ms|xaL%HoczJl^zIlRM=ATnhhx_q zcCU-zCLfZUb82~NzjGt!n)$hLp~uf*B0~6_T1sViLuMMet-hI97(UJO>ywuX&WXi# z#EQAZ@u$hlDM(79^>Cv%pORtT{MCPi@|?{r^iN|ARhl5AaC%5c?a~SN#+IDQuOSHI z4Qg%?fpbC3F|bOdf~Ksfvu`cNdnWy>bp)NaO$RNhSGfkF%WN=M7&I3rIe|KzVC>?H z3s6)qHd^)yE{$!6^*ke1#940byV|5OEut>XCF|PY`IbZU#|Y!PWqtZe=_Rdb!dH4J zB>eN;Jql+Q%nuaIG`rVm2bzLK5Xkuns@CKWG9(BRt3XQl(mn6xE!u?gVgItvfM|Q@ z^MM`B>%v!xc)-@kw)73fCqx%H{1j+dl}9SA);5f@%=(a*pLNuQKziDlpkuwcC{?&` zzx~M#(ZwY&Jbmi^++L!*H)eBZ+a~|)U^z1~BNaHGu_`z^k`YPYJk*{&PA1!aDXuMQ zAMY2z4Fi`s7>5=j7QQ|z-gh{i`}4JI^U{N~th8mxY~iH>hV)HqpGZl=@UQw9MONX- zF-$fdfsd>nyiyr5*GJG@xl>KisN10F;hBSt9ZTG(wdo$UbLH?>t;SUgJd`!rDf_va z&@!sgql2KpA#Jh%-rpWc2(TYtRo>0}&7osNNt(N+eV#}U+|k6t7=2rPbk@NM9N=ea z%*VI1q)|sBjEU-iN6Us)PHR5V`WVLPyfCHmR+@*K@dPV8v_%>*l|F7IXhR@_uOCuK zNdJC&2y%!Y(x(0 z=k6IGe<9jrfeaU|oEP^V+N<7pm$bt}jPgT*S0@}-oGEYr3;66oLW2ue3#s7#1sv#0 zV4c4(UCMpY*s88BQ!CHV>!v&5mVUHFRX>zG4xF1MMxy!o3PZN7Tso$V^EII)I3`SO zItTfyh7|y#ld?dk!c4xVImxoeIzpqW(a8mSc(LczZs@`E>OwE_^6<8on`dd;1m36j zwht7_q}%r`*({%sq`0_-vM!hyL}J*-Lr{I?T^TnG$0s|n%LH$l3DJmz%35yRRPjCYHoABoc-k$K(n=F*c_-@b+JF6 zZUryoMWkhYj60OX@IJQqg45)SK9lX)aYvxB^=SyNr;F3Y#OnPTs$iVCTNEI7Yavi1 zF8{bhz2L0EspgdUC1an-tCtJ)$l2&5FVIs%>USXTZ3b`jjN@UHlTw5#L#p$%v&=I2 znxn(_F!Eh=-n_6Z91#;!`pv*-)R1t7?b%Opfxb0RFW!w7AH^{-c|YOX$Oz?4hQ$Sw zKIu7Sf%NJ^i}E!R50iaiSJqh8Aa#?`ut8SqH?tObniyjfc~Nc!N7M0#Mw`@uOGTiO z<5y1SNk>X+Zbdz@r44Hb78Wn94t^0YnVx(P@}f_@Tx{;;uFS{NdfRlC!qdka0gMTfWqD>SIJU^3IOL!6c$(9<1YzFb zA9f^uXq*Yz=Dd|*3U_#2b-jF3sXmN)nS8KawYp(}^NUWT*`1P$31m({rn9Tp2Pk-i)ddS=4K(}y!v#Q`7=@vO zw4c61Bu(rn!#2U=KqSn;W@o&S`u{N|F zMumHfuM*sRmeB1ek#3F0eYW0zX;Nl$W8mVpPaVxO>PY7@jM14#NqA+j`$}*&n&(N== zb{nB?|D_5j*ho`Mw1Ii@fyn!GB|igFy}#H0m@Y6m=|S*=9F8Rqi@$Sgm8{(XsQ&@! z4CxObI~`oj1OHszE^jY_FEAJKdvUTqa(w%M@wq-YBt#V#m3m6rU&{j0^?T2u^^t4+ zcKC$H{u7b>o`q~a3wc(}??lJyo;&t|;`*KfaGKobrR|*n7{xQ|O2KEoej16YoJn&W zdsPD(fq_#{cQ}yu-+FZ>ZNJO?cVZ%RlASlhs0TSfFJSe9@jV>Q#n8ovJs{hs(1`C5 zdR_{)kt-{e=NXVIt^QR6|7LoC==x?hCd!Ku7aO}M8$T#G$hmTFsjG|&12_ZwFT>hw z40`fjU^%L74{X8!@F@&fhxxy%`2db%lL$ikw9CH zRFO)I{Yb8;U-de9`IYp9qrD+JUtLSeq4NG(nJ(DVP)kJw*fG=v>1 zE6S_!e*F`hs}VMEfY&>su0Hk4G16x*6Q~L2>>L9JRS)xRW5ZTMHE;#6{CHH%=u-Sw zK&NXm;E7*D5JuB$3!rrNSA9kvv5a=?$LdUQR)2hY{icS zgWkT}@=$@ML1b!F629?!2m#y?`OkeA7AU?wFSe&@g$%#mYV6b=D#F z;`-~t?&!!uU2fv@aeO$?3YR8NEl?r;3s?2?Q&Tg@NNHfE22kx#zoDj{8UhxFQcAK; zM@K)?us>WfP;Wm)YC$#W59NrvO^j*r98xt^^XrwUV;yLsZS{PhB;Rp@WO~_I`1+Sc z1;xb##VOo|?@Dez1DQZ89d6ZEmgzeF(|t$+i2=ywI{Q-cCbFR{$`$S3yyb_{*}ltPR8nd%&a5iT6lzU zHnzKbUkE?H(Ye2^h>S$<9~+(M78?GYr90IKxH&kWVhs8+)1)#y`wMOrc8{4w;xIO5 ztOg!fv{6-)3V~`Wxm~k5UW7)~@!X)1@WnvsmCQ#44Cbm1ypEP@zDPd4NQq#b@o~vw z=o+xl1n$5cHFdiykG2pIXG`s!T>Xj3iEckb=-cHo_$Q?%zj-o^cJJu5HQxe+1@#ks zX?9>ut+00Jd#7Nr8a=SOV^_7{C#Lh8PPbN{Vy?R#t%OHF$RM9C0waKjDMC!2uEKfaBp)!?y=|rd|o72%vSGI9B3)q8ncRZ@PD?Qxj&wnSS{X40&`#`S|!t$19 zeu9#TvEBhIP+7ASRQUXvEHC@M8PIi$`4+cVYSqmOU#a0nV)&T^xWKH0_iA`fEql3H zGK0g*Lw|ppc2an%Y#P+04Rj(TqO&?F1fQXn=_FoX;s84|GnQ@$o%zCKgbW(_xe`wZ z^sKrNlu<$Ga_aK*Tsz7JHtpjR5O@}IEOQ!tWCS%oC&}%i7a4Z;>_dc1jI?Zy&^mwj z&(j37e}?B<9p<(dQq|015>FMHd|ZQ84;*|B{u@9 zrzRE1OvH03|4$^>e&+oCig)}PX5N%E$-2=lo->Zs=y#||?bboRaj|je7d0?yMpXsv zg(u)3*v&7N^tqH7h^D=MZDj)m+$8DqVgsBxP8i|Zg0-lvoSeXhPvG0fQr?&|J}&?n z6(vMr4Eq|vVjt3gdQjBor*1qSv}=6g_|_AcxiDyS?qy!y)DXO|w49>6E?DKj4ZCOQ zgY#YHs6rDOUbjR19L?Kz9D2zzT!xcE>j(qd^*Ra>T@G1uWD8k-pWm4KFiuhAF?gPl zrx82!KV~R2sSL>PY%QvaEEhQBA*lP|NUeBm~M)D=8R)48k^aytQJa2vC)o8pP zkgEVU* zwnraZosG>dmrM8VqTX6*Vz@FXfJ0QvbFuIsRgdH7PhgN`!A1f zLI4E)3Lh(x=ZoQWa=9}HnQZW zT!ZMCo}srQq%ok07y&2H;;C!#H1-!Y z4$-MjT&iP{JY9d zPmR-TFNHPN90(MOuj&_oIB`hl$w0zmF2wSven-h^b+FG2czU+Un42OoSy_{X)JdRX zt?{Amu^A;Gxsx`HFVccSf7;$#YZz|XQ=YSV6oIc0#DDg;<33wB1802|>$l@A0s$PB zQ+eVfB@^k5{mnh^XE`y$%^F>)hqX#~L_{PfcGf)$6Ly0&3#;t|1h{E5E7b`LE^Byx zmcIk3T{#s-{D}k|=JNVWCWc9P#5%5boY)7{4==hD^ez-sC?|5AM@L!D`&uigQHo3njaj#N9HLq%*HgR?~Fm(_0L+B(z~zjS4Iehy$+mYC>p% zaBSfQcEnR`Y;P^9Z#G}bxe)o6s`He6Cv%|&P`Lkx%_BfPu1kPW@}9TC4wQItIvcan z;&av8VXH-rq2C9iNcRS#GMvZb%kjLiSrL3!aK2a)QYdZ?gfXa+V zPapEqQoJ8_NPT%=I+va4z4y!6nz~B}O6Xi^x1(#iJ*KS|_XHX?eSo_QdG?OL{P|um zS_zT&jf$co9x(|fwhhJ3P+0SD#(-rS!$D)xJV($I^Q9ESB|4egEz8)to-CVs&W{bPv9K`ea)|Gy`$%tcaz2V>%m_VT_l44j$qWUQL^gT;fLZ%3T*O$9(HL z`h>7>IMf6nmAxbILY=}PRpkWLz9R#ZZ?t;-(Q2b96w@jtX0Xtr-`6w%h#*6gKXCv8 zfHueGMaVfDSH!x+*U~?p8O&a%6?Nit$jS#MWZz@XJ;k<~K9M=!3mjhaAU2m4m01F_ z>8_XPn{+rZ0=c3r>%;4R81)>@k7yu+-2ti$0Q6u+VYxZd*)i2MGC`zrQG&xsTD9ed z7NaDqSz}ZmSnzJ#HaWcG`}epr8pBqPYNKgehxjrafN?Xr`U4o``?Iob17o$BhQxWW z#!RDVO|$`+0L01#NcQrdWPIDU;(99wj{=8_uCeHrCVILDGo1@l4QbIx;|nGO7-S1c7}eXbYeTFTNV^JtfbD$=^2KO1!uy6?SMq2l9X;=Ym| zNlO7VClV3Afz>{ivNx{f%*M908T>QZMc3E9blW_L@cEjy2V5SC}ddQ9i?w7E@= z)9^r%9Pn}}8k>G$mQ#`GegEOZ@ue3ayF_pZ!@g$8ep8bAT)hQtw*xE4q|c@wFGN1AOew^3e+NH0ge@W^-(xo;aCrx60A5AY2=@~xGRh|8)S zeXU>TYAT=Yh{w!T75sg<)?}OfENk@GCDt}8WJ>S^M^7x zICdgzIl6D(Lm)zcG>$mX;5E(y(3o-+m_|(Kg!`H5(-Rml$^^<#z$Lrfa?8_1W+w1j9bKXXEE~~Q^R^zqE zgyD2lLcaTXo3`TZO`Lh#BPGN(>D(B9aT=82sF+h;FIPNlbocG8Ucq@GjbODo=jy5> zD+?pP5KK7!0|D4X@~_4lxZBSwu^9J(q7cOzK>xQoJxA)H5pkR%_*xsW{a1J68Ngh;3fK9=(>9UAp{zpq{?-cD zi4n;%E^+7uD2#B(^bTKD1qWr%{GNlVaz9dspD!l@h#vc$pm{KLrlqwapl5nbMNb+xIN%bGhRZ z#^Lt06AQJTl>lQBP=wAa$y2rZo-W6?bltA)t2W{LOMmXUxX;t4N3@A2S*Q0o{DY%_ zhURbJX-ZCN+}x!6c*Jetn~0P3h7HHSOLJ7p+_|4WQP0)tx5dAV?Hi`}`DyH{x6Mq- z+d~Izry0|R`UY0`8Wqi7SSiRtSC6J2((AESGpCtE6jvr_VN%kwP4owx{*?vym=(X4O zb*at%(P~zHKjOqI{5-kWf^r31WjwBPTfecrZA)6V=-AO+NK+k^oDajd7CgMRKYBhd zC)M9EHQO;HG(A!?);%tQ7KntLUg^Ta$nhHV)0J)l72t#}-nwdXI|klXxapuNhK|hO zym@1(#r8O6szd&)X!G z&QK3j&psU2dBAut7jNFx?X`cYFxnd|-gdUqZm?e$cYuh_W{0#kO=p`J_yS@9;k#wg zKQ_M(ZwRaQOAGNUl>j)B)?tJ62OZy!O3sqfvEQ(HtP<$1;=ZOv z@b(9Z5SYK*E0T{;zzl#@1MU^Dg&xM`9;tvIa&8&dL&kFj1;<|wJK>G*00vuO?+Fmy zf$+d59t!BX%4x?+cl*0p&NswHd;Ou`WO2My`6E;2ThS!<+`F9eEYA0*Njxd>wlZPG zCihDU%9o3KoS2HcfGB_tp21r|{9c$kv45y{th3uGE6Ytm?wu-Qh;2aVW{*DVG{iD>Qo;RGwi{)eO?@ciNuT`6@4j=1B z*l=2kie~|dBZ}1Jqeo2P7uiA}vi+&Z{F`mv19cR@h2A|llO3JW99AP)&X>=5O7?hn znFxcvyll)Duq60k0NC=1H<^AS>a*jsGA(e6F7)-GrT)*;Gv4iOk0s9y`G9b<*Dv9D z1rBdKit*&$vl9Wj?lw{e?(sKe_di@if%w(1XRN#3;UIh^4Y;)8T74Ds9w;*Odb~!E zYieuTkk7wd$c2`cHhpDQe;K;RQH@NH4HVqc_S}a^ zmUT{O;o!dY+N-=KSyg&0%mf2$W0$jCPO~om^8HGYE+^v4wALX9@`8nB5!k-wwgS}A zYB3-zgWLIq(>Z7msWJZ{G(%ejNb_n*UgF7#SmRodNxiH?UqRDAJPu%Ze$|=aRA9W5 zuD;BnD@o(6L;XcL0E^H5Wj&MmyQMa-sHE$=``c}N{9)jS^rUNU;3d5vv5bfNZ6w6w zrk2tG5n__94&1TlUy$J*@D>C(QpY3`ri37xQE^J~aR+ZH#y?9-s|n}%lvp6(e8%@F^Z)=3EOuW1d*LYNR9#LD=aiJB(zkyi|rJ%fF4X|prdc4JBK3aV13oc+Byj`KUR?|6o39C-*>qMIAXj*J{y z1v;yBS%Cn}`_-D}(U>wVzYFKn2X z6eEf3JlZANhfV1yMZg@Krygx`U3ibag0P$%R8MV5p$-nYsij#@$1z+eaEb?Dn+MS7%y;{mE{V8=yikk9}aY2v~G#1C|S;xOOv`Q3wPNm}E@&UIfy_DkZhb z{n47*D2DTz}YdrE~q>*NlSC3+kc2 zWL}`3&bNw&)?Y*6j7uvM|6FE&Gxu z)vc6^RHvQz&R}n6Svfym*+iSbD>LFDZ$u!S;vp3m=;-?23NEn}*P~hnOcfLp{aUSGyJx`8}hkIz=-cD*rv{R(@B+v(=V-X{IZ1Iz23is$v`H}z{ZxvcJ` z^#2lrZTYoJ9{PL_#DUGDF&7xD36MvpNxck}a~tqf4hWHDF6!`lGrT?RQc{KdN5Xa> zEvEEf`cXIE=5eSrm{dZFpj^t2U~)MM7vxYXe{%k`IfY5CN38g|Cqlh>Hda*BeyN=ufk|i+Lr!-hS!0a%o=xM} zOw)dHq5W$8aS9h5cdual7VW~=mdTTvY@&^hulOYS*+fHQQ9g%^(_osDnCtJ#wr4TY z7Wk*8M;Nb3%A?aJ(z&)rgLM9J5%Po@l{QPZbV_~`VY!{g-$qB(B7EC`+^YRYc0;YL}+_rq!Dp z``(!bvbdyNowkVR7pX5d`SlGOaWgxPnW6?VMwIvIfNtX>Nn5(Qr_IHuSD&f+zXb<< zi`Zi~($C4y!*yDp&=D(NPKYIBH0Rogs0q1cfzA#hV>qP?YMhvBDm>}8XsvXRw%0BG zYPpwY*J!X@!F65n!kA54!5gdsybX8;58Fp4fGx95OG6<3o!i66B<@!W9A`hGDK}Y{ z*4t~sn9KHFtGiojbRraWc1BIO8NYp)>jN@ouWJ>BKQ?IZL^$=tYU7=S(GHEe3^QkV!$yZnSqr1bx5q zq-tc|x9L2AFf;R2%unZ79|Uz`+riN`+75AZLa$37BKnmZp_SQIU+ZT5Y?BRp$&<58*nrW6L#Xc~~zNJdrL zy4TOxGNbmr>4H@^-jvg7%X;g`iwLb}CyEN~i7h)1>S@t)l?F=Dj8R}tz)lsRRj`R1 ztD@P@z~FVYO&%3cJ9MMu5{ zSW)BK3J-3LuCd&2oy(s!ks%X*8XB;On+Fbiz%&4Y8 zC(F5JhELo;^%m-6Saig$+;WqCwI`#~sLSn;L8(OxywaOyj;#BmV{PptDOs0amjJmt zpKMV>KpB0JuR}4Nk^1H{lZYr_Gv+aCnAdD@|J7y`;yN%2d482TUvs4DNAG`sX*9>Nz}6RN9r zUXk=!9je!`e{{~sj3>Cff2}0M_Cj8vWIviBjU5Vam#SIc78ed`Gkoz#WaCJm2MVu+%n za0#uP$GY?pOO=^!5J5qbw!_=lG5fYuEWH0G&KMnE*;srY-gx-q4wNl;PwIv4@9UeR zqW8r25rHNvs(pL{>r7+WFvUn2F|>DK1J49mUT${TpydBo$aT?~5i2Y~##ozQrk|)jOH4rYJtL6pE+KpC%)*;!WO_ zbeki|P6K$R>;KJtQS}(|IlZ~8X6fnOaGen4>x+G_vp@QKU07|}noWHe=F}PYZ-t~3 za(Dg1CTrws)({!Oa*5=|bVn;Uxo`6@qaxYwhXb0OBgMgDMI$Dpr=x4LGlOAy`#F|W z8=NVSzSl>i0o_(PB7$NHAyyW7Uz`3Iv1|rM=COw@2zvC_lx%T^u?_Y<&Q`IMJ`kl~ z{tD+kYY}&UTwd}J5wfkdCGx_3PKe8IA-Dgc>3eXnUPwU!1_s2UK((Si5zj4*Y9_4Z zJ#Gc8pz=8m3IW>-{SX2PZ8r%;#mjqmp*ecw{g1In+b-PuK;oK?f5>>3n6!w(cyHYH zN4dSX*P~9tz^#&b`5aZJZfW*tDWv2D0qgPnUiwIY>dsQQ?0rx3>m zyCL&{TDtPHH{2daG|aSMBgoOQ;a-~Ca?2xomWj_Q&0O3->WVN{gO5r$>20y}bl#{o z+#nrSy+)1Q0nfA?{)U-xZXvm;Ssf&y-&8o;1BYF-zx&luSA0@BL73PUeM2w~?R=m9 zesH7EKsJ;3e%^TDa7vTbVpU7$R?*a}ZV(U^J8cIsq;k+4=StU+l> z@BgUoy~Cntwtmr3R9+>CiU<=ykO;n z5~CrWg-pFB>dA%$uRhJV4H?&{nwsyP0W$;eOr1)-S|IO7N8Pe($s^PIj$4_F4Np}q z9Xj@z2v&Obj=SbiD#dyd?n#(WEiIet^%X4KvEIc%lZdR_?$WFUj(4TSbQb2#EE`T+ z@a5>bb22R^FdUwCVW|eXNRG)7jTXWW#JzXd+6h0{x2Mwi-+L-*3)iyE<&8AaEuZUU z(o(V@I!blHAgv9j?hxriN#LXn!3ue9jYNV`5^ARJB}GSCi@$v{4xU#H7+0ndK<-?B3jRKsQ_atc>!CXOYKI$-Pl<5NCkA#fp;p32f^yXnKN$0NiHIEi%0@BE!Z zN1o)bzuo#|Kgs=3KhVDf{DOhV4AQJWj(=Z62LD8Aypj1k)6TO6XG)FF?JqEQqH8_9 zY(_b+6;krvsO6UaO2vCaDwdQ|L;n2)148M!$WzhHi0`R#KeGbtZTg~njLA_P>CW3O zyX2VKO3dKMut?NiRl@aBI#n8RLj5|cjun3X4ZgKC(XTSe`*Jh-iVOU>YC(+nNkFXV z!rnnwPC#9q-%NpNAnO<&NyaAkFRC2o_IP9K^n%r|Y9H_i5?H|2R;mMBP|tJ{@j^E> z5GdCz&H4t&``+Fqc8Jyut|zcMGgUo1b1vuxiDQXNM$1xYS8Y8sG&rwy-zxL#$hXeH zU+#vCHM@V+XvwD}BHy_Nx=RAkLrRA6qAyik4+YUjJdb+qJ9lY>D%r_)lWjM*u$V1} zJVgmm`-;@NA7$@697vgHcK@-;F+E}=e+%>^86a=;khtHmncj~uj?JXRQgxr+L)m3E z%dgcK9&T>O%lg2BRgV6k$41pI{lmfo!Xpf;{4MC&^OfrZHkGLhb@zhMxUQ@x2u1X-0!GV z&SqZYSK@)&>U9W)l)P@?JPA+l$!b~+)Ip0TYUI#r{-i6|Ua`mnny-B}&XS`Z0>hPTq zw=2GieT|F~lt`8uz&bM^6zz?L{>Wd^do#bTg~60H$k!=Ah2IxnU8OPK+bD;-5U zJ6Gv7w9T<;Bf@`ZRE`8jCqO%zFJDpwY*xm8p*j8HXHpv{l$9^%@>w2~R$Y zPkFfa#PC+5T>*di2f&1sfBKU%L$BJdzs;G>9#iKaw#%EzZDqI2I_W3shw0k{Ur!u3 zaw?qdg*POrW{PsP%b!%_YR==afe&~OH-)ChA&zs`E> zBy;j1hSyI2bwQ8~_y&NYk?cMfL5Ll+19%XvhUar<^5MZT^_v_Oyg!W7!BH(y47&f! zYGxRds-@-lP26*PgJ+oyWx@p&`3Xt8f>E3vM!NBewZ-sgFn>u<%H700>;_+ux z=_k060IDL?r>81itnQHc3J)}V14nTYQc}_m;%&ofm*Z4aDZr4-@p4GMvV{%#O}uA@ z-S&r-fmhR5=wkOx>J(7{H^}1h$SUuY$)B0ZISr(lDeRou-NjIWy#!%po_*ORK0&2Z zKIKR~=si=BxTbgWFBl5!r~R10_AoSyW&=<;wWP&vpSC-QUeaAimuRCpvpTNLRe zscB9z9|Jc}MELEB+|-_D>nDyk;>q2h5d)W$V|QmU!N-SU?jqWlY!D~}C!hVhX)bnV z^EKyoW~!QjiH?N1Kj2W4!-PdUm0R@8mV_Ho?QBbK-PzB4&JIlE&*HbnAfx&@L*EQ2 zK_J@q`J|w?&Wq?wjmCA~rCorq_P~ zJmX9iZG+j)Y0;!tSoD;*S%druBLVTs!uq=d3nWGG+23shqZ;p9!k_aBg6rsWMaFDI zG-2y50HHP$dv)r}+&0}LXwtn_$}6>S9RG8K$ic=e?hqoE=dGw7IVoXGhHrgNAb$M# ziDBs_)YGFQ$l#h1L@E9>JICl|FdC2@ihGpVEfpOk?hg8H9;@v|pO2c>mMnW3N0^nsPR{a|aa1+YxfqRX?owX+v3rU1F$MpKy^rrc2H6mBZ7Zq2NdQn}IG}ivqj7BsH4Qs2 z6Mr$MN}1R*d=}pC^EizXCpw;_Gw@yar!#0e+^pg!_~|Qr;FtXJbW6p={nC15i)E9U$VCpB{gabhp=WM?j2 zq~5ZlRu&x+!X9!)H^zs6;%vIS~S=ilUKtHzniz!=hGOZRAEe-pZZ+~5eCoM zfu4l^oU6ZdTx~a?N<=SljW(VnjoApkt)n;7XWC*VO0E69-DfL0&b2*PW$1&d;%I>C zPA-7~Zc2Gc0rOV|y0_JJ`9l-Gs+dC$dG2n?ks0zG1Gxec9;bWkGf1fh#jNH}D)i?+& zltrp=@@p0|JuYCelDx?2MRmEdo`WxN^G=?(rqq6e50$T-!(jiBlG9QzW<1Z~$m=y9 zWh7cQPr5!Rx8BB;QVTY+yI*QqU25>C#=FY4Zu>RbrQ0G#8n-MJri7wzJ|XHcvk)lO z7^!FuHbrC-Nr)9|X!LhI;W*n_4#(J%A6px+9To)m&M9Zs+d+ve$?xUF>{4bY4wGR3 z*AoG^%XU%0(qm_LT~WVoz(hXEc?T5j<(N;ZV43{XC??jtfOvD`*XV@ht`Ox&W}e|~L;e@z&$!?dcL!}Rvy&Czbw6iNz0=E%K$GS9)dzipy(v@oc{SjD z*iYMXA5rm!w|+74AW}pfI3zw} z`T4N!a@9fPY-jfS7Jyq=v}iz2_@D66>vV%*nl&EQq@Gll%o|rf+mw<@wUm~-L8PQZ zHV9zWyB%!M?r}C;Od%;2_Hq`>5~RDO6!UH@(> zv^=3mm3CXyQ7YKTPlD88AQgP|+jsamTr2e_8Q`TUVrmEfsCLVF=-udP^TSqtBX`KE2xZIT zxn4EPke@E>^)*Tl11trG*puOn#msjC>?w{`Q2$!l>mc=8z-A2Zz2nYB%Q!+8u9Y+N z-he_qAe#1sGhKpbW4^GZj$Gxe{G$)N)PkK$tF}HYkj@a8G8W54N*~O43dOlK z)m|8u<2;(3H}Xmsm|zp%kzvc%K20dl|V|C+>baz)J+OV z4)-lFF4(Pld)jh$X-6TV@O~*>Autu(@Hz${BY6&;^Wtieq@+8mpQ+#Pt-d2807NwC zB?BSD{t~F*udlT*Km9M<^&L~y^Fvf~4Maw~?h6s6PzmV1JpAWZDxj|Eil zAVyj?l2>{GEmtUV7g zB3l3TL~p@`kT9W&zWQU{j=u0k^%6V#41T9ffvVqAt8+(qF*4UhmV#dfjrP^W+6pG; z#~kS8IaP9J8YRXMm`!(uE z;=i5DqTn{|kEiDj+85%;=I)E-w^W-d=b);KEC%x>^}{0O+-sBSi^8e8)@9K#hY~LZ5%7; z7jvuM{(g!kr^!PI`GOr&0Q71%X^#z0>%!~Av+BZiqcVM@M9cc1)2&V6-qOzGx@+ks z0~J{a<#Hd_%(>5bF|>C_cja*=8T-g=i)Fd=EW|P2WNGP8g!DX>o_ZgN3~i6`3OBx}?@%}*yLZ~--YTo(zzUZg z*MD%ONGsA*$H|G!bs-VvQ?#q-JnAX;%6nYQ#F0&u@Wkgp&yS2#+vitupYE&(o!I)ym!L%@07#UWU1MRjLR$jRlr zK0KkRB8r<*VrVw)H|8W5b~3%Hmlbk6-*x{5%&(LmY4b8phH-ODdd|T1m(hZB%Mn(z zx<0X;Hc8G0RdP{Paei@nV5$6D+4vk1Y(E|*pC)$Kg`RY-xF(g#Do@|7xf5+siBF!`L=3Gs~yW?(y5F=J&&wc4Ri3_p=YT zS;&eRZQTmBHC8w;?p7}#%=0D=<8L3eGS|h!*{GnM^$Gh9Y4$qKp-PsHzcqZXCY(H~ zmu%@q44B?k*I!Klc7J(G9Sog0gi(*U@EsTL$|l;Y{*Z#vUfgRtB(@mYhDe=wMfKeD zT+nRuB8?_>YI171*XAG@`{@OZ=P_jJY^7z`y@`gPb6Kpxw4uJa!#CnwnQY{7;wc7J z2f5rJIGEA9Zp32G)GuVg$wAeGu0D~ez$jg z4X^KWHHD9rbd-&q++^&!C%So<+yw&V1j=FHOd7AYx|b0y$Cn4r`5yJUW3HIV_oSp# z{Tu`icP37rYh78M=hJ*&+Y4+!E`)h`Idi_d$WY8_f7@wMldkZ33u88aU3jm$ek|u8 zc`nbqL6w9+SZQx=X+UVkP%;S*wydncLVhZwuSFZn*_Rg&dmze=FF|w3khL)T9C@_K zE5GG+I7`Y@n$ev>c2DY^z>3)mu5~VFqN3)(U#v?QW3Kk!mScs%CQ)BthkJ3{wkp}PWdSo5#Y{lldB?(Zy>TMV`dpY@SguuZMh`noU z-`#;Mxqe#+JM-{#?En5M9!#v+ap1j1<68G_ zRI@NMC~T4@yfHuq_9~NF?Vj+v@ig`Pa&}s-s@q2ckG92qQmU=`t%!sVR=k|HL*=<+ zP+7M9WIGF{9Q3pOvK=%;K01iRpTf|dkBL|5V39ehD; zQRk_T3y(N-wH-jgDi|jVu4@3((Cs?=L&Ip4kFS%G<89r%wbFXZUcf0DyTXAgORA!*2hzixSrhdG-*%2b*A9K{IudZ zNS-9(0c9!HbErLQsz9)yQyn3fMd3G1%EDn{vN}~1?fhe$=04h|rfKUku`t-#?W8pQ z^^!X^8}nM*o?1^yH7$3sx5y=LR$&4mC0&4A=VnK_CBh>z{y<4)eW&o|ekb-R{i%e6 zFa61Z{0A%Q>(Y5}t&Hi1S9|3 z8sc3OUJjS;%{u%hIsal|Gza>sSDEPo-dP|iCGWw^t!k!8q5NSQxg+VvdCygJ_~3ki zoj^M*L`>ZE@SX4~ldz1;{%Fb0MDH5Vh$=yTmTOiHTMACwv<^O%ipt#FsWk3y1Wt;B>_4*(vv&?M&@7A8G+knbum!Y%`F$EjE%DnJ`JsvEN2SFuVrg-yTe zCC4(A1_sTBdR;toS-nzx%k_+YK!B$1_u;B%A^>YuRbQh#MK2q^uZ&iB;D^>YJN018 zRrY9Ys23ls&17p2mc&IFWgJQxm}oCv?3K_4w~Ik9nGNyIW{m`%A0~X>!(g^bGKEb) zDa{VUd6<+8&zF;G3NQ&z75I`_j~yO0?#tIW94Ov4oK_ocUl|Z}&*q=LU6)#|J_EI@xD8jeN{GgdOf>SyW$x)F9nF_8AG~tWoP0{<5VrA??DMM zH*9`2rKvgSr~!7Ccq#hsEOc6eH_dsiB3mWOX!_LJc$1#Mv?@pl9mYpXS^muDqU`;* z%=jbHBqx&tLtp);mYCd+PL?MnJSCYCU0irYT`fkf?uCbXPxdnTyScEi&U&o+X~M;< z{%i!+rQCk!MsmH8msfaQsW(d1%OZg*y-gr>y5<>5mT&KKeh#BJ{;9SqOyKrbNHvTv zg_HkPh%?>kNmXw;9a2~RR7NYI8Hf>_aX(mcOWkL;HRK#P`0g2geMgXbIYVcuS=IKk zq)zl})Mf`Nu)2x;!p?TLuf1eQVt4`DQ$WIHBrI%>DRJj`RULUE$ezBqR5VkBZ6}ik z+j0q=-eTGwUlfz*>;61RexVv87`7-{MO|g9zS*X;f^hnl__SveKS_0l{I!XtwVa7s z#p}7R3K^+R94>|LU_KtK9zCjow_X<&i7A+{&er^(?rv8xdzE~XKFFf0HmTY=a-Y_D+R)l2k5|{- zs>!o0=$WCjRn(nwI}DW{7Gg~?DXM$ce}76ZwneKpGI6Lo>9iK9aCOSF+Th`H%EBEM zqC~KVRVndMDjeQ#Q9kwhAk-I6zM@_f@tZw9k+yE#Q#B{K|HZ<%b3^0<6q13=$1JjQ zB5S|ns+B%ds5%;A5b-3p4)QbWuH&b2U3E_Ym4!XqhxvoYfBx8TlO|-8-}8 za;n&_H%?JyiTTDj$Po=R_)3>@!%CWXxU|1owVat+$U#ruZodiZ%k5kv_1yv6zh9R; zm#w<4qOx6KKtHvZ$*3^*pPBr52cB-G=H*;|a^uJ-AdFvfN*S^;3M3ll*_UQ@q0yt} zdgA3<8uvUrHWW+<`Ym<;kyB3#kmJy8TJhtf+ZgOoo9V5sXDfnb2^vU!^tt=b&$K!x z;N_d95=`MCb0~!E@gf0?d~&9V=&`~6ViZ|A8?(R-N(nyZQ*BQnw2k!r?Vz_Ri%)_) z%3E7nhTIN$9s( zuGbKW3TOL4gx~U-xN>*(+ETrHcVV}0gJKG!g)DAMEv3l)&dN@LFW2+1Lq`efmbpA> z;2Ag#AHP)@R$$=SHjyfCry#GOmidh|@Py}eRJOz<{T=Z8X8A966!>$tAbA6vwfnCH zr)fgE{WuQ)2S3bugnk?1Np1WT4Z<}5dH`5MasU6_O?>MrU;g9B05sVX*Mq~+ZwA-Z z`GIbl0+mI48vOF|y0m?v!N(zhG!~y``0f!?14UAT7Jq?$c+`lI;Trm%jOT!o7kB-? z`Xc|dz5gG59QR@%P-yO$4e!lhai{VMVq$2n8@DxHhax^PkRS~dogp--Lx8i!1Bc6# z|JAP0uW!#F$u3u3*M|cdd!+lS)*Td(_W<bnPIz*_sh01ZQGYtdiAy{wtCrsWOjyrocoTcPC*8 zPJ5U*ldYgM@GbbYu9roReb#>z{e@?>IP*GZC?rHKXC4itK>Bl+;CVs^U06+a*f(HL;`F4V|oxG#D;j>-jMu)qLkR=X%)9itY z+qg|q^u08;C5^fpIRrT70jYUFQr&dGD299kM)4#cu?-maL@qmEUB{g~`!9~DPX8>& z)n}ra3_(KQ?#e93i=+*7Xd3;W*jI-Y}%gwELAXV2f#tH@8>qtMl5K8)Qn zF2mR1k*m@HR4)5gr8it+HrbZn^%ARc%Ex7?JEtkb>~pcW`rd)s2_n%Qk^>a0I&FDQ zFOuZ?@*$@T`!aFUUuH1jEGYT~m#E*S*5P+93tGs)GGW|F#t^e@IZs+RhetrYQ_?_R z4!?Qq^}sw=@Z_Yd1!vqUcZZOtn%7DE9j#dYy0^tF&g6>WR!R=EL3>{xZsOx zSzf{v*w{wiG$NX|pEU2Qz3*3&Id(ZGJ4>Jv93JujvtnR|T}US}Ir6JFT}XWFBQnYd z)>ku<^j$U6YkJwt>}q>_zCV?NGNQ0c;)&hQP`7BZ^E}<#Q`(b!(jvC7V~5fXGm17c z5kOCM{k-Y4;NVGBa78eu}ES4Y= z^}BX_i0lQIjEs}O*1D(jtb3Cj$^Cgc*h;4B@j+Lqt*npPX|ZwXwM%?~%-Smc_pSwD zejJ!-8*HA8xk^ZgygkLZ)J3(ghl?vL&6d#+`9Ne!zL|WV&q6P=aQHI)5W^(A89wq% z_yMN$#v-#)IQMYLSMH5lIEK6f00r1rJhN1##Y8QtLaS7BYhcb^*1r5>W)h}dmdaj^ zqoLYyVOzgJbi5}YDl5*nr}um~FW+GHu@1+65`5Bg&)tV({M5nABE+EEiqbW@I+f{n zdZ%bILg&mgJXsxu?<82D-EPN=h<(AZbYbXOu6au@93_v$Iu8AIU|gfp@t*NO;6%{# zFUsu{$NgAnQ>lYZgOFFM!saX5#_mmYi_dbBhH908wrFZ+6MiD+WzOsbQQ&<;?lQic zDV5Iz7?xsPijrGNd7kT0=xSY%CvIG!fmVRIuCedebbV{=ETLOT@7rL#ca6#C#E zDXFNSunA|RS5FU;r?Qxo75LT%=$#Ni2;p+Q(MOf0MtZ5g$x~6=J8ECYV-v8pM;uU} zB6&(NY!_e)JUvt>mrvj)?8rp~x!%!dRMuKo9S<8;;A z!53UTHElda%3H($&`Tau@6p`%>in%&Zt*jCBtk8WKgN{7eC8d6Te}Ao*Xk2wgiAhm zs`K2n)LPfW0iM1(U)i1zKYOg3*-6+YKlpXgL0PbD+y}U&;Fp>8RZA@iB?I`8k=o?t zq@gIgsM|MhHvyjWFa*kRb4)s{+=DSy1f9LEJ)Y((g#_LzX$Wrrie(v_6 zombn_DFVe)qs9i|@$9zAPczXsagE8BDBFsR_a02oNNN6O)jKv79HNTK2%gDnfcWG4PvA#cMQ>ae?l!K%J%P(>vjm-JrPis%lk6^sIN=i=bQiD| za&D*dQ$~hZ@llq%#^HqF`+&vo>-)Xos9z(`B>6kpmSW4V(%aP+eW$po`{_)aQ%EIV32sWv5>&K%d zxF_Uwa4s;w@gGj7|K|9LxhB16=+`kz2f&li)DRCBmiMi{kB`&SdXA3Q5$gr14v~7e zMnSoj>s!i;BL}=9CAI29i*+q*#DOZOwX&__N91EAEEpRcP8kxCKbBL6glyHH7Y^m- zFWED@zUoBxaG&AJihD4Qw98wQcdf9Kop)~W?lY@of>C*hVDBSmMGOhhf`6+LIBO3x zxuYe%Cb2-Z@E9)%A-hihS5TlBn1T?az2 zwEAZaP{o^UT`2~vJlV>;>ZtGo?e#S-hVBBXQ(Wt@{n|hjzHQeiX`PcNM|#86 zMH&lDsg|n&R6t**waU5YXX^E1@rbdj$;Lu_b}w&ZhmsnTpPUAlW8-II`!{`$>V(N1 z=6?9TzbZX8@XqDm%`lhwho)V(yG_UJZzQu&IrR@D6AD#b{~wS{yv-jZ6OBVM6>Q|G zE`}2bg`2Rghl$Je*jra^I>EvJ4d^G-A6fg;H$A9|ExzWe1_)-*^$yS^Z=B33s+m~ zrgf(mv<6hSZ{GYEZ^}uWo#Q!r-@k2-s8~1TrX$sbB(maZxjLwc8*OjtIFYkVIRV)O zs)EV!C3pu7&81>a_%2U!E_jrt@3f&7KTP+rBs!+NhMNukCENtguuEtjU*K1__tWRQ zq`G}3_s~etWD>_9LZ&#!poWuOU+wR~5UE3fxQDa@uO+VVBsdDPp#BJH0lts9B+T`sY`(eE=N}Ph}Inz@vxd0s@mFV^B z_ULn$YW^W-S!$;#QA=Szo_4)0vD*^fEhSE6j70cMG{h$AO5MN1uFNT_wdE2*3kH6a zI9VV@of7J4crFu*lb@7v+H;J{e2$EF4KSZbe!v2_DuSe9AFV5!R;A2fj|q1T5fp!BkJ?X@8`LC+;K~8zbu`ry3jlKui0op1(O4WEd z@E(4CwCsn?E9|p$>nEx`j&h{VRyci_o_3-ltT|Z5MwHJA^HEreo>>G%#dH&>pz-t6Jq#25Jd7%7)JbW23h>)bY+~`A%E$9 zt0XieBxH<+l(dZZeIIZ|vkE0{B)qe~55_=G4|r}ZY|OsEIsF0aJK*-$70XtwnPXvJMoGo*+>sK>y<(@e@Gen0x9UuRhJ&B)xM1LXm*j72qLx;ZN=V;R5tGn)Z)x zTQ0=4@^8EO{LlQdo@7WCkW;La7qBdxcx90pBS;USmbt%b6de*WeJ3$7BNm>xbP^xa ze2)~8`wdafAIloRxTY0>@y0Nx2sqKLv;)pNmw0*66=skpWM1778vD#EZ_27@zTI(}5}UZ2n6;Nxu8j3dA?Na?;DolBSKg@J)&HBCA}Ph@3h@ zXcw$e29S5(WYVI)Gx1bbDz7muwk%AN`c&a`icel7k8=L-*L{5l`T(|`$=_FZbru-F zy8LLaD|{Fl^tO|kUcD^87hVWENK7yp(O@3EPg+(8xKqfFCGfa}nMF-<*m63qvlH7c zyT<_E|NDne1w!4STDg=lpPs(_Z?}p)WB8q8o)!s~x`LY#5Um$AGoQ-4sfzl)EjO=}>>=9TpjQs*IpfcqX)RHsHt<$}ZEXw7@Y-CAd7 zq~&G5`i0;ruSzv)VEKoQu!efKtORk=Sa7bAGs`k-8*$HvU6Ps4pTeLmW;^~N3b#-D z4I2rSO%U`Ze*+uBH-9vV9*?;AY-q2lDcmiQ1Yi%Ek|`y%`UZX*&8V%ACeY8 zTWOW_-tJ0L1Ndp7L88{GG{GS?Y+c~dNir*DPGQb4wxUreGFFQw&I4l4HICFK5f`HgArCe zERAu}LppyDbGlNf>`-0urD3@Xr+fakQnF_e!c!i-b?%|g^|vK@@4ErPsqsm$hed+Y zrRVP~)xi$EXQqUCR|bJv`{}6>x}=NV)*k^~vDEfT{Mxm+zgI3i9(5~kACq~p5gN8z zwOZw6oiPRKtE5IKky`q-z!3TVAaQYr{_}0r8Y!Ka+1N!zzpuopEBuQPx`*wfeJxa= z>#lpPdD*=aLlau&CYF;zLlrmbtHa%6ZlsoBck4zjY0pm{>)7cpA*5+PK%g7y3NkO= zvWi~a_hg4jo1L$b6l}3~bdG40pO%HlHx!j)zcp`gp}tWv5xcy$T9$j;IzxOEqA?ppM{#)t%i{!|M{kddqbuChUmz=>;8V-ch*JfcOSYts zZMKDno0R7U?tUMHiXCp*~2#=@h8H3&0Yva#CQ z5Jj`i)|BQ|j`@k6l(`iD?y^UF)NcPQZ8yvdTJCy~#hQVy$moeb{ON;%`2s7&NvhZY zyPKwY-wl@B>B-87Eou&*)ldvamoeLnT+iBYSo+L#?v;1)fnj~)g99rJCr9gvC~|=# zPqBxDcX{*X0-uKA7o|d;g^D-2zFRA#2Ur`tqZ&Cr2j0CI#<`Hg(Hvb8{Gl)M#B7Cc zHQPB7iStYd6F$LlQ0t9J?%)@OI@!n74TsKTlh#~03albwwq956 zr~)9@k-pdArL__1DQr3cxxRn2OKo{CvdZ+r#^c0~7B(phDv&wT?hys4*8E7S-FaKs zopQ4*_94?cFU@Z;rQjZv*IO9W8(WPNfl{<`wPFYxL<;I7$(-8uo8CUu(QJ2Da0x`G zexp=G9GdhTK(XTWq7;>TuQyeW`tEK2*&GkH$!GmhoRv22tTkbK8wyGdB`-Jk_sDpC zi{~Oq | **DATABASE** || | `Database has multiple issues`
    `Database has compute issues`
    `Database has storage issues` | These issues depend solely on the underlying `COMPUTE` and `STORAGE` layers. This is the most general status of the database. | | **STORAGE** || -| `There are no storage pools` | Unable to determine `STORAGE_POOLS` issues below. | +| `There are no storage pools` | Storage pools aren't configured. | | `Storage degraded`
    `Storage has no redundancy`
    `Storage failed` | These issues depend solely on the underlying `STORAGE_POOLS` layer. | | `System tablet BSC didn't provide information` | Storage diagnostics will be generated with alternative way. | | `Storage usage over 75%/85%/90%` | Need to increase disk space. | | **STORAGE_POOL** || | `Pool degraded/has no redundancy/failed` | These issues depend solely on the underlying `STORAGE_GROUP` layer. | | **STORAGE_GROUP** || -| `Group has no vslots` || +| `Group has no vslots` | This case is not expected, it inner problem. | | `Group degraded` | The number of disks allowed in the group is not available. | -| `Group has no redundancy` | A storage group lost its redundancy. | -| `Group failed` | A storage group lost its integrity. | +| `Group has no redundancy` | A storage group lost its redundancy. Аnother failure of vdisk may lead to the loss of the group. | +| `Group failed` | A storage group lost its integrity. Data is not available | ||`HealthCheck` checks various parameters (fault tolerance mode, number of failed disks, disk status, etc.) and, depending on this, sets the appropriate status and displays a message. | | **VDISK** || | `System tablet BSC didn't provide known status` | This case is not expected, it inner problem. | @@ -129,6 +122,214 @@ struct TSelfCheckSettings : public TOperationRequestSettings | **COMPUTE_POOL** || | `Pool usage is over than 90/95/99%` | One of the pools' CPUs is overloaded. | | **NODE_UPTIME** || -| `Node is restarting too often/The number of node restarts has increased` | The number of node restarts has exceeded the threshold. | -| **NODES_SYNC** || -| `The nodes have a time difference of ... ms` | Time drift on nodes might lead to potential issues with coordinating distributed transactions. | +| `The number of node restarts has increased` | The number of node restarts has exceeded the threshold. By default, 10 restarts per hour | +| `Node is restarting too often` | The number of node restarts has exceeded the threshold. By default, 30 restarts per hour | +| **NODES_TIME_DIFFERENCE** || +| `The nodes have a time difference of ... ms` | Time drift on nodes might lead to potential issues with coordinating distributed transactions. This message starts to appear from 5 ms | + + +## Example {#examples} +The shortest `HealthCheck` response looks like this. It is returned if there is nothing wrong with the database +```json +{ + "self_check_result": "GOOD" +} +``` + +Response with `EMERGENCY` status +```json +{ + "self_check_result": "EMERGENCY", + "issue_log": [ + { + "id": "RED-27c3-70fb", + "status": "RED", + "message": "Database has multiple issues", + "location": { + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-27c3-4e47", + "RED-27c3-53b5", + "YELLOW-27c3-5321" + ], + "type": "DATABASE", + "level": 1 + }, + { + "id": "RED-27c3-4e47", + "status": "RED", + "message": "Compute has issues with system tablets", + "location": { + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-27c3-c138-BSController" + ], + "type": "COMPUTE", + "level": 2 + }, + { + "id": "RED-27c3-c138-BSController", + "status": "RED", + "message": "System tablet is unresponsive", + "location": { + "compute": { + "tablet": { + "type": "BSController", + "id": [ + "72057594037989391" + ] + } + }, + "database": { + "name": "/slice" + } + }, + "type": "SYSTEM_TABLET", + "level": 3 + }, + { + "id": "RED-27c3-53b5", + "status": "RED", + "message": "System tablet BSC didn't provide information", + "location": { + "database": { + "name": "/slice" + } + }, + "type": "STORAGE", + "level": 2 + }, + { + "id": "YELLOW-27c3-5321", + "status": "YELLOW", + "message": "Storage degraded", + "location": { + "database": { + "name": "/slice" + } + }, + "reason": [ + "YELLOW-27c3-595f-8d1d" + ], + "type": "STORAGE", + "level": 2 + }, + { + "id": "YELLOW-27c3-595f-8d1d", + "status": "YELLOW", + "message": "Pool degraded", + "location": { + "storage": { + "pool": { + "name": "static" + } + }, + "database": { + "name": "/slice" + } + }, + "reason": [ + "YELLOW-27c3-ef3e-0" + ], + "type": "STORAGE_POOL", + "level": 3 + }, + { + "id": "RED-84d8-3-3-1", + "status": "RED", + "message": "PDisk is not available", + "location": { + "storage": { + "node": { + "id": 3, + "host": "man0-0026.ydb-dev.nemax.nebiuscloud.net", + "port": 19001 + }, + "pool": { + "group": { + "vdisk": { + "pdisk": [ + { + "id": "3-1", + "path": "/dev/disk/by-partlabel/NVMEKIKIMR01" + } + ] + } + } + } + } + }, + "type": "PDISK", + "level": 6 + }, + { + "id": "RED-27c3-4847-3-0-1-0-2-0", + "status": "RED", + "message": "VDisk is not available", + "location": { + "storage": { + "node": { + "id": 3, + "host": "man0-0026.ydb-dev.nemax.nebiuscloud.net", + "port": 19001 + }, + "pool": { + "name": "static", + "group": { + "vdisk": { + "id": [ + "0-1-0-2-0" + ] + } + } + } + }, + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-84d8-3-3-1" + ], + "type": "VDISK", + "level": 5 + }, + { + "id": "YELLOW-27c3-ef3e-0", + "status": "YELLOW", + "message": "Group degraded", + "location": { + "storage": { + "pool": { + "name": "static", + "group": { + "id": [ + "0" + ] + } + } + }, + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-27c3-4847-3-0-1-0-2-0" + ], + "type": "STORAGE_GROUP", + "level": 4 + } + ], + "location": { + "id": 5, + "host": "man0-0028.ydb-dev.nemax.nebiuscloud.net", + "port": 19001 + } +} +``` diff --git a/ydb/docs/ru/core/reference/ydb-sdk/_assets/hc_types_hierarchy.png b/ydb/docs/ru/core/reference/ydb-sdk/_assets/hc_types_hierarchy.png index 00253f7ac42eeb1290e4c2e50a4251f6bb594073..c89b8fbc82153f2d402db081d8b0513a5086b598 100644 GIT binary patch literal 55745 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

    qi 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 z%0A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 z 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 | **DATABASE** || | `Database has multiple issues`
    `Database has compute issues`
    `Database has storage issues` | Зависит от нижележащих слоев `COMPUTE` и `STORAGE`. Это самый общий статус базы данных. | | **STORAGE** || -| `There are no storage pools` | Недоступна информация по пулам на уровне `STORAGE_POOLS`. | +| `There are no storage pools` | Пулы хранения не настроены. | | `Storage degraded`
    `Storage has no redundancy`
    `Storage failed` | Зависит от нижележащего слоя `STORAGE_POOLS`. | | `System tablet BSC didn't provide information` | Информация о сторадже не доступна. | | `Storage usage over 75%/85%/90%` | Необходимо увеличить дисковое пространство. | | **STORAGE_POOL** || | `Pool degraded/has no redundancy/failed` | Зависит от нижележащего слоя `STORAGE_GROUP`. | | **STORAGE_GROUP** || -| `Group has no vslots` || +| `Group has no vslots` | Эта ошибка не ожидается. Внутренняя ошибка. | | `Group degraded` | В группе недоступно допустимое число дисков. | -| `Group has no redundancy` | Группа хранения потеряла избыточность. | -| `Group failed` | Группа хранения потеряла целостность. | +| `Group has no redundancy` | Группа хранения потеряла избыточность. Еще один сбой в работе диска может привести к потере группы. | +| `Group failed` | Группа хранения потеряла целостность. Данные не доступны. | || `HealthCheck` проверяет различные параметры (режим отказоустойчивости, количество отказавших дисков, статус дисков и т. д.) и в зависимости от этого устанавливает соответствующий статус у группы. | | **VDISK** || | `System tablet BSC didn't provide known status` | Эта ошибка не ожидается. Внутренняя ошибка. | @@ -130,7 +123,216 @@ struct TSelfCheckSettings : public TOperationRequestSettings | **COMPUTE_POOL** || | `Pool usage is over than 90/95/99%` | один из CPU пулов перегружен. | | **NODE_UPTIME** || -| `Node is restarting too often` | Узлы слишком часто перезапускаются. | -| `The number of node restarts has increased` | Количество рестартов ноды превысило порог. | -| **NODES_SYNC** || +| `The number of node restarts has increased` | Количество рестартов ноды превысило порог. По-умолчанию, это 10 рестартов в час. | +| `Node is restarting too often` | Узлы слишком часто перезапускаются. По-умолчанию, это 30 рестартов в час. | +| **NODES_TIME_DIFFERENCE** || | `The nodes have a time difference of ... ms` | Расхождение времени на узлах, что может приводить к возможным проблемам с координацией распределённых транзакций. | + + +## Пример ответа {#examples} +Самый короткий ответ сервиса будет выглядеть следующим образом. Он возвращается, если с базой данных все в порядке: + +```json +{ + "self_check_result": "GOOD" +} +``` + +Ответ в случаи проблем может выглядеть так + +```json +{ + "self_check_result": "EMERGENCY", + "issue_log": [ + { + "id": "RED-27c3-70fb", + "status": "RED", + "message": "Database has multiple issues", + "location": { + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-27c3-4e47", + "RED-27c3-53b5", + "YELLOW-27c3-5321" + ], + "type": "DATABASE", + "level": 1 + }, + { + "id": "RED-27c3-4e47", + "status": "RED", + "message": "Compute has issues with system tablets", + "location": { + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-27c3-c138-BSController" + ], + "type": "COMPUTE", + "level": 2 + }, + { + "id": "RED-27c3-c138-BSController", + "status": "RED", + "message": "System tablet is unresponsive", + "location": { + "compute": { + "tablet": { + "type": "BSController", + "id": [ + "72057594037989391" + ] + } + }, + "database": { + "name": "/slice" + } + }, + "type": "SYSTEM_TABLET", + "level": 3 + }, + { + "id": "RED-27c3-53b5", + "status": "RED", + "message": "System tablet BSC didn't provide information", + "location": { + "database": { + "name": "/slice" + } + }, + "type": "STORAGE", + "level": 2 + }, + { + "id": "YELLOW-27c3-5321", + "status": "YELLOW", + "message": "Storage degraded", + "location": { + "database": { + "name": "/slice" + } + }, + "reason": [ + "YELLOW-27c3-595f-8d1d" + ], + "type": "STORAGE", + "level": 2 + }, + { + "id": "YELLOW-27c3-595f-8d1d", + "status": "YELLOW", + "message": "Pool degraded", + "location": { + "storage": { + "pool": { + "name": "static" + } + }, + "database": { + "name": "/slice" + } + }, + "reason": [ + "YELLOW-27c3-ef3e-0" + ], + "type": "STORAGE_POOL", + "level": 3 + }, + { + "id": "RED-84d8-3-3-1", + "status": "RED", + "message": "PDisk is not available", + "location": { + "storage": { + "node": { + "id": 3, + "host": "man0-0026.ydb-dev.nemax.nebiuscloud.net", + "port": 19001 + }, + "pool": { + "group": { + "vdisk": { + "pdisk": [ + { + "id": "3-1", + "path": "/dev/disk/by-partlabel/NVMEKIKIMR01" + } + ] + } + } + } + } + }, + "type": "PDISK", + "level": 6 + }, + { + "id": "RED-27c3-4847-3-0-1-0-2-0", + "status": "RED", + "message": "VDisk is not available", + "location": { + "storage": { + "node": { + "id": 3, + "host": "man0-0026.ydb-dev.nemax.nebiuscloud.net", + "port": 19001 + }, + "pool": { + "name": "static", + "group": { + "vdisk": { + "id": [ + "0-1-0-2-0" + ] + } + } + } + }, + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-84d8-3-3-1" + ], + "type": "VDISK", + "level": 5 + }, + { + "id": "YELLOW-27c3-ef3e-0", + "status": "YELLOW", + "message": "Group degraded", + "location": { + "storage": { + "pool": { + "name": "static", + "group": { + "id": [ + "0" + ] + } + } + }, + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-27c3-4847-3-0-1-0-2-0" + ], + "type": "STORAGE_GROUP", + "level": 4 + } + ], + "location": { + "id": 5, + "host": "man0-0028.ydb-dev.nemax.nebiuscloud.net", + "port": 19001 + } +} +``` From 783826ff64d5a97e74335895026d24bcd1a4cff6 Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Tue, 25 Jun 2024 09:56:12 +0000 Subject: [PATCH 04/15] added examples --- .../reference/ydb-sdk/health-check-api.md | 285 +++++++++++++++++- .../reference/ydb-sdk/health-check-api.md | 284 ++++++++++++++++- 2 files changed, 537 insertions(+), 32 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index fd4a6f899a57..3ef4cb96ef89 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -46,16 +46,19 @@ Each issue has a nesting `level` - the higher the `level`, the deeper the ish is | `issue_log.id` | A unique problem ID within this response. | | `issue_log.status` | Status (severity) of the current problem.
    It can take one of the following values:

  • `RED`: A component is faulty or unavailable.
  • `ORANGE`: A serious problem, we are one step away from losing availability. Maintenance may be required.
  • `YELLOW`: A minor problem, no risks to availability. We recommend you continue monitoring the problem.
  • `BLUE`: Temporary minor degradation that does not affect database availability. The system is expected to switch to `GREEN`.
  • `GREEN`: No problems were detected.
  • `GREY`: Failed to determine the status (a problem with the self-diagnostic mechanism).
  • | | `issue_log.message` | Text that describes the problem. | -| `issue_log.location` | Location of the problem. | +| `issue_log.location` | Location of the problem. This can be a physical location or an execution context. | | `issue_log.reason` | This is a set of elements, each of which describes a problem in the system at a certain level. | -| `issue_log.type` | Problem category (by subsystem). | -| `issue_log.level` | Depth of the problem nesting. | -| `database_status` | If settings contains `verbose` parameter than `database_status` field will be filled.
    It provides a summary of the overall health of the database.
    It's used to quickly review the overall health of the database, helping to assess its health and whether there are any serious problems at a high level. | +| `issue_log.type` | Problem category (by subsystem). Each type is at a certain level and interconnected with others through a rigid hierarchy (as shown in the picture above). | +| `issue_log.level` | The depth of problem nesting. | +| `database_status` | If settings contains `verbose` parameter than `database_status` field will be filled.
    It provides a summary of the overall health of the database.
    It's used to quickly review the overall health of the database, helping to assess its health and whether there are any serious problems at a high level. [Example](#example-verbose). | | `location` | Contains information about host, where `HealthCheck` service was called | ## Call parameters {#call-parameters} The whole list of extra parameters presented below: + +{% list tabs %} +- C++ ```c++ struct TSelfCheckSettings : public TOperationRequestSettings{ FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); @@ -63,12 +66,13 @@ struct TSelfCheckSettings : public TOperationRequestSettings FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); }; ``` +{% endlist %} -| Parameter | Description | +| Parameter | Type | Description | |:----|:----| -| `ReturnVerboseStatus` | This parameter determins whether the `database_status` response field is filled. | -| `MinimumStatus` | The minimum status that will be included in the response. Issues with a lower status will be discarded. | -| `MaximumLevel` | The maximum depth of issues to include in the response. Deeper levels will be discarded. | +| `ReturnVerboseStatus` | `bool` | As mentioned earlier, this parameter affects the filling of the `database_status` field. Default is false. | +| `MinimumStatus` | `EStatusFlag` | The minimum severity status that will appear in the response. Less severe issues will be discarded. By default, all issues will be listed. | +| `MaximumLevel` | `int32` | The maximum depth of issues in the response. Issues at deeper levels will be discarded. By default, all issues will be listed. | ## Possible problems {#problems} @@ -80,9 +84,9 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `There are no storage pools` | Storage pools aren't configured. | | `Storage degraded`
    `Storage has no redundancy`
    `Storage failed` | These issues depend solely on the underlying `STORAGE_POOLS` layer. | | `System tablet BSC didn't provide information` | Storage diagnostics will be generated with alternative way. | -| `Storage usage over 75%/85%/90%` | Need to increase disk space. | +| `Storage usage over 75%`
    `Storage usage over 85%`
    `Storage usage over 90%` | Need to increase disk space. | | **STORAGE_POOL** || -| `Pool degraded/has no redundancy/failed` | These issues depend solely on the underlying `STORAGE_GROUP` layer. | +| `Pool degraded`
    `Pool has no redundancy`
    `Pool failed` | These issues depend solely on the underlying `STORAGE_GROUP` layer. | | **STORAGE_GROUP** || | `Group has no vslots` | This case is not expected, it inner problem. | | `Group degraded` | The number of disks allowed in the group is not available. | @@ -97,8 +101,8 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `VDisk have space issue` | These issues depend solely on the underlying `PDISK` layer. | | **PDISK** || | `Unknown PDisk state` | `HealthCheck` the system can't parse pdisk state. | -| `PDisk is inactive/PDisk state is FAULTY/BROKEN/TO_BE_REMOVED` | Indicates problems with a physical disk. | -| `Available size is less than 12%/9%/6%` | Free space on the physical disk is running out. | +| `PDisk is inactive`
    `PDisk state is FAULTY`
    `PDisk state is BROKEN`
    `PDisk state is TO_BE_REMOVED` | Indicates problems with a physical disk. | +| `Available size is less than 12%`
    `Available size is less than 9%`
    `Available size is less than 6%` | Free space on the physical disk is running out. | | `PDisk is not available` | A physical disk is not available. | | **STORAGE_NODE** || | `Storage node is not available` | A node with disks is not available. | @@ -110,17 +114,17 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `Compute quota usage` | These issues depend solely on the underlying `COMPUTE_QUOTA` layer. | | `Compute has issues with tablets`| These issues depend solely on the underlying `TABLET` layer. | | **COMPUTE_QUOTA** || -| `Paths quota usage is over than 90%/99%/Paths quota exhausted`
    `Shards quota usage is over than 90%/99%/Shards quota exhausted` |Quotas exhausted| +| `Paths quota usage is over than 90%`
    `Paths quota usage is over than 99%`
    `Paths quota exhausted`
    `Shards quota usage is over than 90%`
    `Shards quota usage is over than 99%`
    `Shards quota exhausted` |Quotas exhausted| | **COMPUTE_NODE** | *There is no specific issues on this layer.* | | **SYSTEM_TABLET** || -| `System tablet is unresponsive / response time over 1000ms/5000ms`| The system tablet is not responding or it takes too long to respond. | +| `System tablet is unresponsive `
    `System tablet response time over 1000ms`
    `System tablet response time over 5000ms`| The system tablet is not responding or it takes too long to respond. | | **TABLET** || | `Tablets are restarting too often` | Tablets are restarting too often. | | `Tablets/Followers are dead` | Tablets are not running (probably cannot be started). | | **LOAD_AVERAGE** || | `LoadAverage above 100%` | A physical host is overloaded.
    The `Healthcheck` tool monitors system load by evaluating the current workload in terms of running and waiting processes (load) and comparing it to the total number of logical cores on the host (cores). For example, if a system has 8 logical cores and the current load value is 16, the load is considered to be 200%.
    `Healthcheck` only checks if the load exceeds the number of cores (load > cores) and reports based on this condition. This indicates that the system is working at or beyond its capacity, potentially due to a high number of processes waiting for I/O operations.

    Load Information:
    Source:
    `/proc/loadavg`
    Logical Cores Information

    The number of logical cores:
    Primary Source:
    `/sys/fs/cgroup/cpu.max`

    Fallback Source:
    `/sys/fs/cgroup/cpu/cpu.cfs_quota_us`
    `/sys/fs/cgroup/cpu/cpu.cfs_period_us`
    The number of cores is calculated by dividing the quota by the period (quota / period) | **COMPUTE_POOL** || -| `Pool usage is over than 90/95/99%` | One of the pools' CPUs is overloaded. | +| `Pool usage is over than 90%`
    `Pool usage is over than 95%`
    `Pool usage is over than 99%` | One of the pools' CPUs is overloaded. | | **NODE_UPTIME** || | `The number of node restarts has increased` | The number of node restarts has exceeded the threshold. By default, 10 restarts per hour | | `Node is restarting too often` | The number of node restarts has exceeded the threshold. By default, 30 restarts per hour | @@ -136,7 +140,256 @@ The shortest `HealthCheck` response looks like this. It is returned if there is } ``` -Response with `EMERGENCY` status +#### Verbose example {#example-verbose} +`GOOD` response with `verbose` parameter: +```json +{ + "self_check_result": "GOOD", + "database_status": [ + { + "name": "/amy/db", + "overall": "GREEN", + "storage": { + "overall": "GREEN", + "pools": [ + { + "id": "/amy/db:ssdencrypted", + "overall": "GREEN", + "groups": [ + { + "id": "2181038132", + "overall": "GREEN", + "vdisks": [ + { + "id": "9-1-1010", + "overall": "GREEN", + "pdisk": { + "id": "9-1", + "overall": "GREEN" + } + }, + { + "id": "11-1004-1009", + "overall": "GREEN", + "pdisk": { + "id": "11-1004", + "overall": "GREEN" + } + }, + { + "id": "10-1003-1011", + "overall": "GREEN", + "pdisk": { + "id": "10-1003", + "overall": "GREEN" + } + }, + { + "id": "8-1005-1010", + "overall": "GREEN", + "pdisk": { + "id": "8-1005", + "overall": "GREEN" + } + }, + { + "id": "7-1-1008", + "overall": "GREEN", + "pdisk": { + "id": "7-1", + "overall": "GREEN" + } + }, + { + "id": "6-1-1007", + "overall": "GREEN", + "pdisk": { + "id": "6-1", + "overall": "GREEN" + } + }, + { + "id": "4-1005-1010", + "overall": "GREEN", + "pdisk": { + "id": "4-1005", + "overall": "GREEN" + } + }, + { + "id": "2-1003-1013", + "overall": "GREEN", + "pdisk": { + "id": "2-1003", + "overall": "GREEN" + } + }, + { + "id": "1-1-1008", + "overall": "GREEN", + "pdisk": { + "id": "1-1", + "overall": "GREEN" + } + } + ] + } + ] + } + ] + }, + "compute": { + "overall": "GREEN", + "nodes": [ + { + "id": "50073", + "overall": "GREEN", + "pools": [ + { + "overall": "GREEN", + "name": "System", + "usage": 0.000405479 + }, + { + "overall": "GREEN", + "name": "User", + "usage": 0.00265229 + }, + { + "overall": "GREEN", + "name": "Batch", + "usage": 0.000347933 + }, + { + "overall": "GREEN", + "name": "IO", + "usage": 0.000312022 + }, + { + "overall": "GREEN", + "name": "IC", + "usage": 0.000945925 + } + ], + "load": { + "overall": "GREEN", + "load": 0.2, + "cores": 4 + } + }, + { + "id": "50074", + "overall": "GREEN", + "pools": [ + { + "overall": "GREEN", + "name": "System", + "usage": 0.000619053 + }, + { + "overall": "GREEN", + "name": "User", + "usage": 0.00463859 + }, + { + "overall": "GREEN", + "name": "Batch", + "usage": 0.000596071 + }, + { + "overall": "GREEN", + "name": "IO", + "usage": 0.0006241 + }, + { + "overall": "GREEN", + "name": "IC", + "usage": 0.00218465 + } + ], + "load": { + "overall": "GREEN", + "load": 0.08, + "cores": 4 + } + }, + { + "id": "50075", + "overall": "GREEN", + "pools": [ + { + "overall": "GREEN", + "name": "System", + "usage": 0.000579126 + }, + { + "overall": "GREEN", + "name": "User", + "usage": 0.00344293 + }, + { + "overall": "GREEN", + "name": "Batch", + "usage": 0.000592347 + }, + { + "overall": "GREEN", + "name": "IO", + "usage": 0.000525747 + }, + { + "overall": "GREEN", + "name": "IC", + "usage": 0.00174265 + } + ], + "load": { + "overall": "GREEN", + "load": 0.26, + "cores": 4 + } + } + ], + "tablets": [ + { + "overall": "GREEN", + "type": "SchemeShard", + "state": "GOOD", + "count": 1 + }, + { + "overall": "GREEN", + "type": "SysViewProcessor", + "state": "GOOD", + "count": 1 + }, + { + "overall": "GREEN", + "type": "Coordinator", + "state": "GOOD", + "count": 3 + }, + { + "overall": "GREEN", + "type": "Mediator", + "state": "GOOD", + "count": 3 + }, + { + "overall": "GREEN", + "type": "Hive", + "state": "GOOD", + "count": 1 + } + ] + } + } + ] +} +``` + +#### Emergency example {#example-emergency} +Response with `EMERGENCY` status: ```json { "self_check_result": "EMERGENCY", diff --git a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md index 341140cbd53d..9e4554bc0a17 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md @@ -45,18 +45,20 @@ message IssueLog { | `self_check_result` | содержит результат проверки БД:
    • `GOOD`: Проблем не обнаружено.
    • `DEGRADED`: Обнаружена деградация одной из систем базы данных, но база данных все еще функционирует (например, допустимая потеря диска).
    • `MAINTENANCE_REQUIRED`: Обнаружена значительная деградация, есть риск потери доступности, требуется обслуживание.
    • `EMERGENCY`: Обнаружена серьезная проблема в базе данных с полной или частичной потерей доступности.
    | | `issue_log` | Это набор элементов, каждый из которых описывает проблему в системе на определенном уровне. | | `issue_log.id` | Уникальный идентификатор проблемы в этом ответе. | -| `issue_log.status` | Статус (серьезность) текущей проблемы.
    Может принимать одно из следующих значений:
    • `RED`: Компонент неисправен или недоступен.
    • `ORANGE`: Серьезная проблема, мы в шаге от потери доступности. Может потребоваться обслуживание.
    • `YELLOW`: Небольшая проблема, нет рисков для доступности. Рекомендуется продолжать мониторинг проблемы.
    • `BLUE`: Временная небольшая деградация, не влияющая на доступность базы данных. Ожидается переход системы в `GREEN`.
    • `GREEN`: Проблем не обнаружено.
    • `GREY`: Не удалось определить статус (проблема с механизмом самодиагностики).
    | +| `issue_log.status` | Статус (серьезности) текущей проблемы.
    Может принимать одно из следующих значений:
    • `RED`: Компонент неисправен или недоступен.
    • `ORANGE`: Серьезная проблема, мы в шаге от потери доступности. Может потребоваться обслуживание.
    • `YELLOW`: Небольшая проблема, нет рисков для доступности. Рекомендуется продолжать мониторинг проблемы.
    • `BLUE`: Временная небольшая деградация, не влияющая на доступность базы данных. Ожидается переход системы в `GREEN`.
    • `GREEN`: Проблем не обнаружено.
    • `GREY`: Не удалось определить статус (проблема с механизмом самодиагностики).
    | | `issue_log.message` | Текст, описывающий проблему. | -| `issue_log.location` | Местоположение проблемы. | +| `issue_log.location` | Местоположение проблемы. Это может быть физической местоположение или контекст выполнения. | | `issue_log.reason` | Это набор элементов, каждый из которых описывает причину проблемы в системе на определенном уровне. | -| `issue_log.type` | Категория проблемы. | +| `issue_log.type` | Категория проблемы. Каждый тип находится на определённом уровне и связан с другими через жёсткую иерархию (как показано на изображении выше). | | `issue_log.level` | Глубина вложенности проблемы. | -| `database_status` | Если в настройках содержится параметр `verbose`, то поле `database_status` будет заполнено.
    Оно предоставляет сводку общего состояния базы данных.
    Используется для быстрой оценки состояния базы данных и выявления серьезных проблем на высоком уровне. | +| `database_status` | Если в настройках содержится параметр `verbose`, то поле `database_status` будет заполнено.
    Оно предоставляет сводку общего состояния базы данных.
    Используется для быстрой оценки состояния базы данных и выявления серьезных проблем на высоком уровне. [Пример](#example-verbose). | | `location` | Содержит информацию о хосте, на котором был вызван сервис `HealthCheck`. | ## Call parameters {#call-parameters} Полный список дополнительных параметров представлен ниже: +{% list tabs %} +- C++ ```c++ struct TSelfCheckSettings : public TOperationRequestSettings{ FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); @@ -64,12 +66,13 @@ struct TSelfCheckSettings : public TOperationRequestSettings FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); }; ``` +{% endlist %} -| Параметр | Описание | +| Параметр | Тип | Описание | |:----|:----| -| `ReturnVerboseStatus` | Как было сказано ранее, этот параметр влияет на заполнение поля `database_status`. | -| `MinimumStatus` | Минимальный статус, который будет указан в ответе. Проблемы с лучшим статусом будут отброшены. | -| `MaximumLevel` | Максимальная глубина проблем в ответе. Более глубокие уровни будут отброшены. | +| `ReturnVerboseStatus` | 'bool' | Как было сказано ранее, этот параметр влияет на заполнение поля `database_status`. По-умолчанию `false`. | +| `MinimumStatus` | 'EStatusFlag' | Минимальный статус опасности, который будет появляться в ответе. Менее важные проблемы будут отброшены. По-умолчанию все проблемы будут перечислены. | +| `MaximumLevel` | 'int32' | Максимальная глубина проблем в ответе. Проблемы более глубокого уровня будут отброшены. По-умолчанию все проблемы будут перечислены. | ## Возможные проблемы {#problems} @@ -81,9 +84,9 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `There are no storage pools` | Пулы хранения не настроены. | | `Storage degraded`
    `Storage has no redundancy`
    `Storage failed` | Зависит от нижележащего слоя `STORAGE_POOLS`. | | `System tablet BSC didn't provide information` | Информация о сторадже не доступна. | -| `Storage usage over 75%/85%/90%` | Необходимо увеличить дисковое пространство. | +| `Storage usage over 75%`
    `Storage usage over 85%`
    `Storage usage over 90%` | Необходимо увеличить дисковое пространство. | | **STORAGE_POOL** || -| `Pool degraded/has no redundancy/failed` | Зависит от нижележащего слоя `STORAGE_GROUP`. | +| `Pool degraded`
    `Pool has no redundancy`
    `Pool failed` | Зависит от нижележащего слоя `STORAGE_GROUP`. | | **STORAGE_GROUP** || | `Group has no vslots` | Эта ошибка не ожидается. Внутренняя ошибка. | | `Group degraded` | В группе недоступно допустимое число дисков. | @@ -98,8 +101,8 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `VDisk have space issue` | Зависит от нижележащего слоя `PDISK`. | | **PDISK** || | `Unknown PDisk state` | `HealthCheck` не может разобрать состояние PDisk. Внутренняя ошибка. | -| `PDisk is inactive/PDisk state is FAULTY/BROKEN/TO_BE_REMOVED` | Cообщает о проблемах с физическим диском. | -| `Available size is less than 12%/9%/6%` | Заканчивается свободное место на физическом диске. | +| `PDisk is inactive`
    `PDisk state is FAULTY`
    `PDisk state is BROKEN`
    `PDisk state is TO_BE_REMOVED` | Cообщает о проблемах с физическим диском. | +| `Available size is less than 12%`
    `Available size is less than 9%`
    `Available size is less than 6%` | Заканчивается свободное место на физическом диске. | | `PDisk is not available` | Отсутствует физический диск. | | **STORAGE_NODE** || | `Storage node is not available` | Отсутствует нода с дисками. | @@ -111,17 +114,17 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `Compute quota usage` | Зависит от нижележащего слоя `COMPUTE_QUOTA`. | | `Compute has issues with tablets` | Зависит от нижележащего слоя `TABLET`. | | **COMPUTE_QUOTA** || -| `Paths quota usage is over than 90%/99%/Paths quota exhausted`
    `Shards quota usage is over than 90%/99%/Shards quota exhausted` | Квоты исчерпаны. | +| `Paths quota usage is over than 90%`
    `Paths quota usage is over than 99%`
    `Paths quota exhausted`
    `Shards quota usage is over than 90%`
    `Shards quota usage is over than 99%`
    `Shards quota exhausted` | Квоты исчерпаны. | | **COMPUTE_NODE** | *Нет сообщений на этом уровне.* | | **SYSTEM_TABLET** || -| `System tablet is unresponsive / response time over 1000ms/5000ms` | Системная таблетка не отвечает или отвечает долго | +| `System tablet is unresponsive `
    `System tablet response time over 1000ms`
    `System tablet response time over 5000ms` | Системная таблетка не отвечает или отвечает долго | | **TABLET** || | `Tablets are restarting too often` | Таблетки слишком часто перезапускаются. | -| `Tablets/Followers are dead` | Таблетки не запущены (или не могут быть запущены). | +| `Tablets are dead`
    `Followers are dead` | Таблетки не запущены (или не могут быть запущены). | | **LOAD_AVERAGE** || | `LoadAverage above 100%` | Физический хост перегружен.
    Сервис `Healthcheck` мониторит системную нагрузку, оценивая ее в терминах выполняющихся, ожидающих процессов (load) и сравнивая её с общим числом логических ядер на хосте (cores). Например, если у системы 8 логических ядер и текущая нагрузка составляет 16, нагрузка считается равной 200%.
    `Healthcheck` проверяет только превышение нагрузки над количеством ядер (load > cores) и сообщает на основе этого предупреждение. Это указывает на то, что система работает на пределе, скорее всего из-за большого количества процессов, ожидающих операций ввода-вывода.

    Информация о нагрузке:
    Источник:
    `/proc/loadavg`
    Информация о логических ядрах

    Количество логических ядер:
    Основной источник:
    `/sys/fs/cgroup/cpu.max`

    Дополнительный источник:
    `/sys/fs/cgroup/cpu/cpu.cfs_quota_us`
    `/sys/fs/cgroup/cpu/cpu.cfs_period_us`
    Количество ядер вычисляется путем деления квоты на период (quota / period) | | **COMPUTE_POOL** || -| `Pool usage is over than 90/95/99%` | один из CPU пулов перегружен. | +| `Pool usage is over than 90%`
    `Pool usage is over than 95%`
    `Pool usage is over than 99%` | один из CPU пулов перегружен. | | **NODE_UPTIME** || | `The number of node restarts has increased` | Количество рестартов ноды превысило порог. По-умолчанию, это 10 рестартов в час. | | `Node is restarting too often` | Узлы слишком часто перезапускаются. По-умолчанию, это 30 рестартов в час. | @@ -138,6 +141,255 @@ struct TSelfCheckSettings : public TOperationRequestSettings } ``` +#### Пример verbose {#example-verbose} +Ответ `GOOD` при использовании параметра `verbose`: +```json +{ + "self_check_result": "GOOD", + "database_status": [ + { + "name": "/amy/db", + "overall": "GREEN", + "storage": { + "overall": "GREEN", + "pools": [ + { + "id": "/amy/db:ssdencrypted", + "overall": "GREEN", + "groups": [ + { + "id": "2181038132", + "overall": "GREEN", + "vdisks": [ + { + "id": "9-1-1010", + "overall": "GREEN", + "pdisk": { + "id": "9-1", + "overall": "GREEN" + } + }, + { + "id": "11-1004-1009", + "overall": "GREEN", + "pdisk": { + "id": "11-1004", + "overall": "GREEN" + } + }, + { + "id": "10-1003-1011", + "overall": "GREEN", + "pdisk": { + "id": "10-1003", + "overall": "GREEN" + } + }, + { + "id": "8-1005-1010", + "overall": "GREEN", + "pdisk": { + "id": "8-1005", + "overall": "GREEN" + } + }, + { + "id": "7-1-1008", + "overall": "GREEN", + "pdisk": { + "id": "7-1", + "overall": "GREEN" + } + }, + { + "id": "6-1-1007", + "overall": "GREEN", + "pdisk": { + "id": "6-1", + "overall": "GREEN" + } + }, + { + "id": "4-1005-1010", + "overall": "GREEN", + "pdisk": { + "id": "4-1005", + "overall": "GREEN" + } + }, + { + "id": "2-1003-1013", + "overall": "GREEN", + "pdisk": { + "id": "2-1003", + "overall": "GREEN" + } + }, + { + "id": "1-1-1008", + "overall": "GREEN", + "pdisk": { + "id": "1-1", + "overall": "GREEN" + } + } + ] + } + ] + } + ] + }, + "compute": { + "overall": "GREEN", + "nodes": [ + { + "id": "50073", + "overall": "GREEN", + "pools": [ + { + "overall": "GREEN", + "name": "System", + "usage": 0.000405479 + }, + { + "overall": "GREEN", + "name": "User", + "usage": 0.00265229 + }, + { + "overall": "GREEN", + "name": "Batch", + "usage": 0.000347933 + }, + { + "overall": "GREEN", + "name": "IO", + "usage": 0.000312022 + }, + { + "overall": "GREEN", + "name": "IC", + "usage": 0.000945925 + } + ], + "load": { + "overall": "GREEN", + "load": 0.2, + "cores": 4 + } + }, + { + "id": "50074", + "overall": "GREEN", + "pools": [ + { + "overall": "GREEN", + "name": "System", + "usage": 0.000619053 + }, + { + "overall": "GREEN", + "name": "User", + "usage": 0.00463859 + }, + { + "overall": "GREEN", + "name": "Batch", + "usage": 0.000596071 + }, + { + "overall": "GREEN", + "name": "IO", + "usage": 0.0006241 + }, + { + "overall": "GREEN", + "name": "IC", + "usage": 0.00218465 + } + ], + "load": { + "overall": "GREEN", + "load": 0.08, + "cores": 4 + } + }, + { + "id": "50075", + "overall": "GREEN", + "pools": [ + { + "overall": "GREEN", + "name": "System", + "usage": 0.000579126 + }, + { + "overall": "GREEN", + "name": "User", + "usage": 0.00344293 + }, + { + "overall": "GREEN", + "name": "Batch", + "usage": 0.000592347 + }, + { + "overall": "GREEN", + "name": "IO", + "usage": 0.000525747 + }, + { + "overall": "GREEN", + "name": "IC", + "usage": 0.00174265 + } + ], + "load": { + "overall": "GREEN", + "load": 0.26, + "cores": 4 + } + } + ], + "tablets": [ + { + "overall": "GREEN", + "type": "SchemeShard", + "state": "GOOD", + "count": 1 + }, + { + "overall": "GREEN", + "type": "SysViewProcessor", + "state": "GOOD", + "count": 1 + }, + { + "overall": "GREEN", + "type": "Coordinator", + "state": "GOOD", + "count": 3 + }, + { + "overall": "GREEN", + "type": "Mediator", + "state": "GOOD", + "count": 3 + }, + { + "overall": "GREEN", + "type": "Hive", + "state": "GOOD", + "count": 1 + } + ] + } + } + ] +} +``` + +#### пример EMERGENCY: {#example-emergency} Ответ в случаи проблем может выглядеть так ```json From 3629dbe88096c334ac8ea54700d62bf12a8f0f41 Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Tue, 25 Jun 2024 12:01:27 +0000 Subject: [PATCH 05/15] creating client snippet --- .../reference/ydb-sdk/health-check-api.md | 59 +++++++++++++------ .../reference/ydb-sdk/health-check-api.md | 45 ++++++++++---- 2 files changed, 73 insertions(+), 31 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index 3ef4cb96ef89..99a12b34ec90 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -7,10 +7,28 @@ description: "The article will tell you how to initiate the check using the Heal {{ ydb-short-name }} has a built-in self-diagnostic system, which can be used to get a brief report on the database status and information about existing problems. -To initiate the check, call the `SelfCheck` method from `Ydb.Monitoring`. You must also pass the name of the checked DB as usual. +To initiate the check, call the `SelfCheck` method from SDK `Ydb.Monitoring`. You must also pass the name of the checked DB as usual. + +{% list tabs %} + +- C++ + App code snippet for creating a client: + ```cpp + auto client = NYdb::NMonitoring::TMonitoringClient(driver); + ``` + Calling `SelfCheck` method: + ``` + + auto settings = TSelfCheckSettings(); + settings.ReturnVerboseStatus(true); + auto result = client.SelfCheck(settings).GetValueSync(); + ``` + +{% endlist %} ## Response Structure {#response-structure} -Calling the method will return the following structure: +For the full response structure, see the [ydb_monitoring.proto](https://github.com/ydb-platform/ydb/public/api/protos/ydb_monitoring.proto) file in the {{ ydb-short-name }} Git repository. +Calling the `SelfCheck` method will return the following message: ```protobuf message SelfCheckResult { @@ -44,6 +62,8 @@ Each issue has a nesting `level` - the higher the `level`, the deeper the ish is | `self_check_result` | enum field which contains the DB check result:
    • `GOOD`: No problems were detected.
    • `DEGRADED`: Degradation of one of the database systems was detected, but the database is still functioning (for example, allowable disk loss).
    • `MAINTENANCE_REQUIRED`: Significant degradation was detected, there is a risk of availability loss, and human maintenance is required.
    • `EMERGENCY`: A serious problem was detected in the database, with complete or partial loss of availability.
    | | `issue_log` | This is a set of elements, each of which describes a problem in the system at a certain level. | | `issue_log.id` | A unique problem ID within this response. | +| `issue_log.id` | A unique problem ID within this response. | +| `issue_log.id` | A unique problem ID within this response. | | `issue_log.status` | Status (severity) of the current problem.
    It can take one of the following values:
  • `RED`: A component is faulty or unavailable.
  • `ORANGE`: A serious problem, we are one step away from losing availability. Maintenance may be required.
  • `YELLOW`: A minor problem, no risks to availability. We recommend you continue monitoring the problem.
  • `BLUE`: Temporary minor degradation that does not affect database availability. The system is expected to switch to `GREEN`.
  • `GREEN`: No problems were detected.
  • `GREY`: Failed to determine the status (a problem with the self-diagnostic mechanism).
  • | | `issue_log.message` | Text that describes the problem. | | `issue_log.location` | Location of the problem. This can be a physical location or an execution context. | @@ -58,14 +78,16 @@ Each issue has a nesting `level` - the higher the `level`, the deeper the ish is The whole list of extra parameters presented below: {% list tabs %} + - C++ -```c++ -struct TSelfCheckSettings : public TOperationRequestSettings{ - FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); - FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); - FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); -}; -``` + ```c++ + struct TSelfCheckSettings : public TOperationRequestSettings{ + FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); + FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); + FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); + }; + ``` + {% endlist %} | Parameter | Type | Description | @@ -79,20 +101,20 @@ struct TSelfCheckSettings : public TOperationRequestSettings | Message | Description | |:----|:----| | **DATABASE** || -| `Database has multiple issues`
    `Database has compute issues`
    `Database has storage issues` | These issues depend solely on the underlying `COMPUTE` and `STORAGE` layers. This is the most general status of the database. | +| `Database has multiple issues`
    `Database has compute issues`
    `Database has storage issues` | These issues depend solely on the underlying `COMPUTE` and `STORAGE` layers. This is the most general status of a database. | | **STORAGE** || | `There are no storage pools` | Storage pools aren't configured. | | `Storage degraded`
    `Storage has no redundancy`
    `Storage failed` | These issues depend solely on the underlying `STORAGE_POOLS` layer. | -| `System tablet BSC didn't provide information` | Storage diagnostics will be generated with alternative way. | -| `Storage usage over 75%`
    `Storage usage over 85%`
    `Storage usage over 90%` | Need to increase disk space. | +| `System tablet BSC didn't provide information` | Storage diagnostics will be generated alternatively. | +| `Storage usage over 75%`
    `Storage usage over 85%`
    `Storage usage over 90%` | Some data needs to be removed, or the database needs to be reconfigured with additional disk space. | | **STORAGE_POOL** || | `Pool degraded`
    `Pool has no redundancy`
    `Pool failed` | These issues depend solely on the underlying `STORAGE_GROUP` layer. | | **STORAGE_GROUP** || | `Group has no vslots` | This case is not expected, it inner problem. | -| `Group degraded` | The number of disks allowed in the group is not available. | +| `Group degraded` | A number of disks allowed in the group are not available. | | `Group has no redundancy` | A storage group lost its redundancy. Аnother failure of vdisk may lead to the loss of the group. | | `Group failed` | A storage group lost its integrity. Data is not available | -||`HealthCheck` checks various parameters (fault tolerance mode, number of failed disks, disk status, etc.) and, depending on this, sets the appropriate status and displays a message. | +||`HealthCheck` checks various parameters (fault tolerance mode, number of failed disks, disk status, etc.) and, depending on them, sets the appropriate status and displays a message. | | **VDISK** || | `System tablet BSC didn't provide known status` | This case is not expected, it inner problem. | | `VDisk is not available` | the disk is not operational at all. | @@ -101,7 +123,7 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `VDisk have space issue` | These issues depend solely on the underlying `PDISK` layer. | | **PDISK** || | `Unknown PDisk state` | `HealthCheck` the system can't parse pdisk state. | -| `PDisk is inactive`
    `PDisk state is FAULTY`
    `PDisk state is BROKEN`
    `PDisk state is TO_BE_REMOVED` | Indicates problems with a physical disk. | +| `PDisk state is ...` | Indicates state of physical disk. | | `Available size is less than 12%`
    `Available size is less than 9%`
    `Available size is less than 6%` | Free space on the physical disk is running out. | | `PDisk is not available` | A physical disk is not available. | | **STORAGE_NODE** || @@ -114,22 +136,21 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `Compute quota usage` | These issues depend solely on the underlying `COMPUTE_QUOTA` layer. | | `Compute has issues with tablets`| These issues depend solely on the underlying `TABLET` layer. | | **COMPUTE_QUOTA** || -| `Paths quota usage is over than 90%`
    `Paths quota usage is over than 99%`
    `Paths quota exhausted`
    `Shards quota usage is over than 90%`
    `Shards quota usage is over than 99%`
    `Shards quota exhausted` |Quotas exhausted| -| **COMPUTE_NODE** | *There is no specific issues on this layer.* | +| `Paths quota usage is over than 90%`
    `Paths quota usage is over than 99%`
    `Paths quota exhausted`
    `Shards quota usage is over than 90%`
    `Shards quota usage is over than 99%`
    `Shards quota exhausted` | Quotas exhausted | | **SYSTEM_TABLET** || | `System tablet is unresponsive `
    `System tablet response time over 1000ms`
    `System tablet response time over 5000ms`| The system tablet is not responding or it takes too long to respond. | | **TABLET** || | `Tablets are restarting too often` | Tablets are restarting too often. | | `Tablets/Followers are dead` | Tablets are not running (probably cannot be started). | | **LOAD_AVERAGE** || -| `LoadAverage above 100%` | A physical host is overloaded.
    The `Healthcheck` tool monitors system load by evaluating the current workload in terms of running and waiting processes (load) and comparing it to the total number of logical cores on the host (cores). For example, if a system has 8 logical cores and the current load value is 16, the load is considered to be 200%.
    `Healthcheck` only checks if the load exceeds the number of cores (load > cores) and reports based on this condition. This indicates that the system is working at or beyond its capacity, potentially due to a high number of processes waiting for I/O operations.

    Load Information:
    Source:
    `/proc/loadavg`
    Logical Cores Information

    The number of logical cores:
    Primary Source:
    `/sys/fs/cgroup/cpu.max`

    Fallback Source:
    `/sys/fs/cgroup/cpu/cpu.cfs_quota_us`
    `/sys/fs/cgroup/cpu/cpu.cfs_period_us`
    The number of cores is calculated by dividing the quota by the period (quota / period) +| `LoadAverage above 100%` | ([Load](https://en.wikipedia.org/wiki/Load_(computing))) A physical host is overloaded .
    This indicates that the system is working at or beyond its capacity, potentially due to a high number of processes waiting for I/O operations.

    Load Information:
    Source:
    `/proc/loadavg`
    Logical Cores Information

    The number of logical cores:
    Primary Source:
    `/sys/fs/cgroup/cpu.max`

    Fallback Source:
    `/sys/fs/cgroup/cpu/cpu.cfs_quota_us`
    `/sys/fs/cgroup/cpu/cpu.cfs_period_us`
    The number of cores is calculated by dividing the quota by the period (quota / period) | **COMPUTE_POOL** || | `Pool usage is over than 90%`
    `Pool usage is over than 95%`
    `Pool usage is over than 99%` | One of the pools' CPUs is overloaded. | | **NODE_UPTIME** || | `The number of node restarts has increased` | The number of node restarts has exceeded the threshold. By default, 10 restarts per hour | | `Node is restarting too often` | The number of node restarts has exceeded the threshold. By default, 30 restarts per hour | | **NODES_TIME_DIFFERENCE** || -| `The nodes have a time difference of ... ms` | Time drift on nodes might lead to potential issues with coordinating distributed transactions. This message starts to appear from 5 ms | +| `The nodes have a time difference of ... ms` | Time drift on nodes might lead to potential issues with coordinating distributed transactions. This issus starts to appear from 5 ms | ## Example {#examples} diff --git a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md index 9e4554bc0a17..68d6b2d519f6 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md @@ -7,8 +7,27 @@ description: "Из статьи вы узнаете, как инициирова {{ ydb-short-name }} имеет встроенную систему самодиагностики, с помощью которой можно получить краткий отчет о состоянии базы данных и информацию об имеющихся проблемах. -Для инициации проверки необходимо сделать вызов метода `SelfCheck` из сервиса `Ydb.Monitoring`. Также необходимо передать имя проверяемой БД стандартным способом. +Для инициации проверки необходимо сделать вызов метода `SelfCheck` из сервиса YDB `Ydb.Monitoring`. Также необходимо передать имя проверяемой БД стандартным способом. +{% list tabs %} + +- C++ + Пример кода приложения для создания клиента: + ```cpp + auto client = NYdb::NMonitoring::TMonitoringClient(driver); + ``` + + Вызов метода `SelfCheck`: + ``` + auto settings = TSelfCheckSettings(); + settings.ReturnVerboseStatus(true); + auto result = client.SelfCheck(settings).GetValueSync(); + ``` + +{% endlist %} + +## Response Structure {#response-structure} +Полную структуру ответа можно посмотреть в файле [ydb_monitoring.proto](https://github.com/ydb-platform/ydb/public/api/protos/ydb_monitoring.proto) в {{ ydb-short-name }} Git репозитории. В результате вызова этого метода будет возвращена следующая структура: ```protobuf @@ -57,15 +76,18 @@ message IssueLog { ## Call parameters {#call-parameters} Полный список дополнительных параметров представлен ниже: + {% list tabs %} + - C++ -```c++ -struct TSelfCheckSettings : public TOperationRequestSettings{ - FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); - FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); - FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); -}; -``` + ```c++ + struct TSelfCheckSettings : public TOperationRequestSettings{ + FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); + FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); + FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); + }; + ``` + {% endlist %} | Параметр | Тип | Описание | @@ -101,7 +123,7 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `VDisk have space issue` | Зависит от нижележащего слоя `PDISK`. | | **PDISK** || | `Unknown PDisk state` | `HealthCheck` не может разобрать состояние PDisk. Внутренняя ошибка. | -| `PDisk is inactive`
    `PDisk state is FAULTY`
    `PDisk state is BROKEN`
    `PDisk state is TO_BE_REMOVED` | Cообщает о проблемах с физическим диском. | +| `PDisk state is ...` | Cообщает состояние физического диска. | | `Available size is less than 12%`
    `Available size is less than 9%`
    `Available size is less than 6%` | Заканчивается свободное место на физическом диске. | | `PDisk is not available` | Отсутствует физический диск. | | **STORAGE_NODE** || @@ -115,21 +137,20 @@ struct TSelfCheckSettings : public TOperationRequestSettings | `Compute has issues with tablets` | Зависит от нижележащего слоя `TABLET`. | | **COMPUTE_QUOTA** || | `Paths quota usage is over than 90%`
    `Paths quota usage is over than 99%`
    `Paths quota exhausted`
    `Shards quota usage is over than 90%`
    `Shards quota usage is over than 99%`
    `Shards quota exhausted` | Квоты исчерпаны. | -| **COMPUTE_NODE** | *Нет сообщений на этом уровне.* | | **SYSTEM_TABLET** || | `System tablet is unresponsive `
    `System tablet response time over 1000ms`
    `System tablet response time over 5000ms` | Системная таблетка не отвечает или отвечает долго | | **TABLET** || | `Tablets are restarting too often` | Таблетки слишком часто перезапускаются. | | `Tablets are dead`
    `Followers are dead` | Таблетки не запущены (или не могут быть запущены). | | **LOAD_AVERAGE** || -| `LoadAverage above 100%` | Физический хост перегружен.
    Сервис `Healthcheck` мониторит системную нагрузку, оценивая ее в терминах выполняющихся, ожидающих процессов (load) и сравнивая её с общим числом логических ядер на хосте (cores). Например, если у системы 8 логических ядер и текущая нагрузка составляет 16, нагрузка считается равной 200%.
    `Healthcheck` проверяет только превышение нагрузки над количеством ядер (load > cores) и сообщает на основе этого предупреждение. Это указывает на то, что система работает на пределе, скорее всего из-за большого количества процессов, ожидающих операций ввода-вывода.

    Информация о нагрузке:
    Источник:
    `/proc/loadavg`
    Информация о логических ядрах

    Количество логических ядер:
    Основной источник:
    `/sys/fs/cgroup/cpu.max`

    Дополнительный источник:
    `/sys/fs/cgroup/cpu/cpu.cfs_quota_us`
    `/sys/fs/cgroup/cpu/cpu.cfs_period_us`
    Количество ядер вычисляется путем деления квоты на период (quota / period) | +| `LoadAverage above 100%` | ([Load](https://en.wikipedia.org/wiki/Load_(computing))) Физический хост перегружен.
    Это указывает на то, что система работает на пределе, скорее всего из-за большого количества процессов, ожидающих операций ввода-вывода.

    Информация о нагрузке:
    Источник:
    `/proc/loadavg`
    Информация о логических ядрах

    Количество логических ядер:
    Основной источник:
    `/sys/fs/cgroup/cpu.max`

    Дополнительный источник:
    `/sys/fs/cgroup/cpu/cpu.cfs_quota_us`
    `/sys/fs/cgroup/cpu/cpu.cfs_period_us`
    Количество ядер вычисляется путем деления квоты на период (quota / period) | | **COMPUTE_POOL** || | `Pool usage is over than 90%`
    `Pool usage is over than 95%`
    `Pool usage is over than 99%` | один из CPU пулов перегружен. | | **NODE_UPTIME** || | `The number of node restarts has increased` | Количество рестартов ноды превысило порог. По-умолчанию, это 10 рестартов в час. | | `Node is restarting too often` | Узлы слишком часто перезапускаются. По-умолчанию, это 30 рестартов в час. | | **NODES_TIME_DIFFERENCE** || -| `The nodes have a time difference of ... ms` | Расхождение времени на узлах, что может приводить к возможным проблемам с координацией распределённых транзакций. | +| `The nodes have a time difference of ... ms` | Расхождение времени на узлах, что может приводить к возможным проблемам с координацией распределённых транзакций. Начинает появляться с расхождения в 5ms| ## Пример ответа {#examples} From 65051bfdb79ed0431517e75aaf027b7f6f6f9e35 Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Tue, 25 Jun 2024 12:51:33 +0000 Subject: [PATCH 06/15] border line --- ydb/docs/en/core/reference/ydb-sdk/health-check-api.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index 99a12b34ec90..e44ed404ecc9 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -92,9 +92,9 @@ The whole list of extra parameters presented below: | Parameter | Type | Description | |:----|:----| -| `ReturnVerboseStatus` | `bool` | As mentioned earlier, this parameter affects the filling of the `database_status` field. Default is false. | -| `MinimumStatus` | `EStatusFlag` | The minimum severity status that will appear in the response. Less severe issues will be discarded. By default, all issues will be listed. | -| `MaximumLevel` | `int32` | The maximum depth of issues in the response. Issues at deeper levels will be discarded. By default, all issues will be listed. | +| `ReturnVerboseStatus` | `bool` | As mentioned earlier, this parameter affects the filling of the `database_status` field. Default is false. | +| `MinimumStatus` | `EStatusFlag` | The minimum severity status that will appear in the response. Less severe issues will be discarded. By default, all issues will be listed. | +| `MaximumLevel` | `int32` | The maximum depth of issues in the response. Issues at deeper levels will be discarded. By default, all issues will be listed. | ## Possible problems {#problems} From d9ef7b6fb5f1ec46bcc2d046cfd93667ade27b2f Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Tue, 25 Jun 2024 13:04:16 +0000 Subject: [PATCH 07/15] tabulation --- .../en/core/reference/ydb-sdk/health-check-api.md | 12 +++++++++--- .../ru/core/reference/ydb-sdk/health-check-api.md | 13 ++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index e44ed404ecc9..918d19e1cf82 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -12,13 +12,15 @@ To initiate the check, call the `SelfCheck` method from SDK `Ydb.Monitoring`. Yo {% list tabs %} - C++ + App code snippet for creating a client: ```cpp auto client = NYdb::NMonitoring::TMonitoringClient(driver); ``` + Calling `SelfCheck` method: - ``` + ``` auto settings = TSelfCheckSettings(); settings.ReturnVerboseStatus(true); auto result = client.SelfCheck(settings).GetValueSync(); @@ -27,6 +29,7 @@ To initiate the check, call the `SelfCheck` method from SDK `Ydb.Monitoring`. Yo {% endlist %} ## Response Structure {#response-structure} + For the full response structure, see the [ydb_monitoring.proto](https://github.com/ydb-platform/ydb/public/api/protos/ydb_monitoring.proto) file in the {{ ydb-short-name }} Git repository. Calling the `SelfCheck` method will return the following message: @@ -57,6 +60,8 @@ Each issue has a nesting `level` - the higher the `level`, the deeper the ish is ![issues_hierarchy](./_assets/hc_types_hierarchy.png) +Description of all fields in the response is provided below: + | Field | Description | |:----|:----| | `self_check_result` | enum field which contains the DB check result:
    • `GOOD`: No problems were detected.
    • `DEGRADED`: Degradation of one of the database systems was detected, but the database is still functioning (for example, allowable disk loss).
    • `MAINTENANCE_REQUIRED`: Significant degradation was detected, there is a risk of availability loss, and human maintenance is required.
    • `EMERGENCY`: A serious problem was detected in the database, with complete or partial loss of availability.
    | @@ -73,13 +78,14 @@ Each issue has a nesting `level` - the higher the `level`, the deeper the ish is | `database_status` | If settings contains `verbose` parameter than `database_status` field will be filled.
    It provides a summary of the overall health of the database.
    It's used to quickly review the overall health of the database, helping to assess its health and whether there are any serious problems at a high level. [Example](#example-verbose). | | `location` | Contains information about host, where `HealthCheck` service was called | - ## Call parameters {#call-parameters} + The whole list of extra parameters presented below: {% list tabs %} - C++ + ```c++ struct TSelfCheckSettings : public TOperationRequestSettings{ FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); @@ -91,7 +97,7 @@ The whole list of extra parameters presented below: {% endlist %} | Parameter | Type | Description | -|:----|:----| +|:----|:----|:----| | `ReturnVerboseStatus` | `bool` | As mentioned earlier, this parameter affects the filling of the `database_status` field. Default is false. | | `MinimumStatus` | `EStatusFlag` | The minimum severity status that will appear in the response. Less severe issues will be discarded. By default, all issues will be listed. | | `MaximumLevel` | `int32` | The maximum depth of issues in the response. Issues at deeper levels will be discarded. By default, all issues will be listed. | diff --git a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md index 68d6b2d519f6..889915570716 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md @@ -12,12 +12,14 @@ description: "Из статьи вы узнаете, как инициирова {% list tabs %} - C++ + Пример кода приложения для создания клиента: ```cpp auto client = NYdb::NMonitoring::TMonitoringClient(driver); ``` Вызов метода `SelfCheck`: + ``` auto settings = TSelfCheckSettings(); settings.ReturnVerboseStatus(true); @@ -26,7 +28,8 @@ description: "Из статьи вы узнаете, как инициирова {% endlist %} -## Response Structure {#response-structure} +## Структура ответа {#response-structure} + Полную структуру ответа можно посмотреть в файле [ydb_monitoring.proto](https://github.com/ydb-platform/ydb/public/api/protos/ydb_monitoring.proto) в {{ ydb-short-name }} Git репозитории. В результате вызова этого метода будет возвращена следующая структура: @@ -59,6 +62,8 @@ message IssueLog { ![issues_hierarchy](./_assets/hc_types_hierarchy.png) +Описание всех полей в ответе представлено ниже: + | Поле | Описание | |:----|:----| | `self_check_result` | содержит результат проверки БД:
    • `GOOD`: Проблем не обнаружено.
    • `DEGRADED`: Обнаружена деградация одной из систем базы данных, но база данных все еще функционирует (например, допустимая потеря диска).
    • `MAINTENANCE_REQUIRED`: Обнаружена значительная деградация, есть риск потери доступности, требуется обслуживание.
    • `EMERGENCY`: Обнаружена серьезная проблема в базе данных с полной или частичной потерей доступности.
    | @@ -74,12 +79,14 @@ message IssueLog { | `location` | Содержит информацию о хосте, на котором был вызван сервис `HealthCheck`. | -## Call parameters {#call-parameters} +## Параметры вызова {#call-parameters} + Полный список дополнительных параметров представлен ниже: {% list tabs %} - C++ + ```c++ struct TSelfCheckSettings : public TOperationRequestSettings{ FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); @@ -91,7 +98,7 @@ message IssueLog { {% endlist %} | Параметр | Тип | Описание | -|:----|:----| +|:----|:----|:----| | `ReturnVerboseStatus` | 'bool' | Как было сказано ранее, этот параметр влияет на заполнение поля `database_status`. По-умолчанию `false`. | | `MinimumStatus` | 'EStatusFlag' | Минимальный статус опасности, который будет появляться в ответе. Менее важные проблемы будут отброшены. По-умолчанию все проблемы будут перечислены. | | `MaximumLevel` | 'int32' | Максимальная глубина проблем в ответе. Проблемы более глубокого уровня будут отброшены. По-умолчанию все проблемы будут перечислены. | From c81854a07c707238abb1ed25ca4543a632251721 Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Wed, 26 Jun 2024 06:22:08 +0000 Subject: [PATCH 08/15] changed namespace --- ydb/docs/en/core/reference/ydb-sdk/health-check-api.md | 6 ++---- ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index 918d19e1cf82..86bfd844198d 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -7,7 +7,7 @@ description: "The article will tell you how to initiate the check using the Heal {{ ydb-short-name }} has a built-in self-diagnostic system, which can be used to get a brief report on the database status and information about existing problems. -To initiate the check, call the `SelfCheck` method from SDK `Ydb.Monitoring`. You must also pass the name of the checked DB as usual. +To initiate the check, call the `SelfCheck` method from `NYdb::NMonitoring` namespace in the SDK. You must also pass the name of the checked DB as usual. {% list tabs %} @@ -28,7 +28,7 @@ To initiate the check, call the `SelfCheck` method from SDK `Ydb.Monitoring`. Yo {% endlist %} -## Response Structure {#response-structure} +## Response structure {#response-structure} For the full response structure, see the [ydb_monitoring.proto](https://github.com/ydb-platform/ydb/public/api/protos/ydb_monitoring.proto) file in the {{ ydb-short-name }} Git repository. Calling the `SelfCheck` method will return the following message: @@ -67,8 +67,6 @@ Description of all fields in the response is provided below: | `self_check_result` | enum field which contains the DB check result:
    • `GOOD`: No problems were detected.
    • `DEGRADED`: Degradation of one of the database systems was detected, but the database is still functioning (for example, allowable disk loss).
    • `MAINTENANCE_REQUIRED`: Significant degradation was detected, there is a risk of availability loss, and human maintenance is required.
    • `EMERGENCY`: A serious problem was detected in the database, with complete or partial loss of availability.
    | | `issue_log` | This is a set of elements, each of which describes a problem in the system at a certain level. | | `issue_log.id` | A unique problem ID within this response. | -| `issue_log.id` | A unique problem ID within this response. | -| `issue_log.id` | A unique problem ID within this response. | | `issue_log.status` | Status (severity) of the current problem.
    It can take one of the following values:
  • `RED`: A component is faulty or unavailable.
  • `ORANGE`: A serious problem, we are one step away from losing availability. Maintenance may be required.
  • `YELLOW`: A minor problem, no risks to availability. We recommend you continue monitoring the problem.
  • `BLUE`: Temporary minor degradation that does not affect database availability. The system is expected to switch to `GREEN`.
  • `GREEN`: No problems were detected.
  • `GREY`: Failed to determine the status (a problem with the self-diagnostic mechanism).
  • | | `issue_log.message` | Text that describes the problem. | | `issue_log.location` | Location of the problem. This can be a physical location or an execution context. | diff --git a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md index 889915570716..1e6910dc9ac6 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md @@ -7,7 +7,7 @@ description: "Из статьи вы узнаете, как инициирова {{ ydb-short-name }} имеет встроенную систему самодиагностики, с помощью которой можно получить краткий отчет о состоянии базы данных и информацию об имеющихся проблемах. -Для инициации проверки необходимо сделать вызов метода `SelfCheck` из сервиса YDB `Ydb.Monitoring`. Также необходимо передать имя проверяемой БД стандартным способом. +Чтобы инициировать проверку, вызовите метод `SelfCheck` из пространства имен `NYdb::NMonitoring` в SDK. Также необходимо передать имя проверяемой БД стандартным способом. {% list tabs %} From 52002dbd6513866953c05dbd385864ff7017640a Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Wed, 26 Jun 2024 06:40:14 +0000 Subject: [PATCH 09/15] issues issue --- .../reference/ydb-sdk/health-check-api.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index 86bfd844198d..fd7824661512 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -5,7 +5,7 @@ description: "The article will tell you how to initiate the check using the Heal # Health Check API -{{ ydb-short-name }} has a built-in self-diagnostic system, which can be used to get a brief report on the database status and information about existing problems. +{{ ydb-short-name }} has a built-in self-diagnostic system, which can be used to get a brief report on the database status and information about existing issues. To initiate the check, call the `SelfCheck` method from `NYdb::NMonitoring` namespace in the SDK. You must also pass the name of the checked DB as usual. @@ -40,7 +40,7 @@ message SelfCheckResult { } ``` -If any issues are detected, the `issue_log` field will contain descriptions of the problems with the following structure: +If any issues are detected, the `issue_log` field will contain descriptions of the issues with the following structure: ```protobuf message IssueLog { string id = 1; @@ -52,7 +52,7 @@ message IssueLog { uint32 level = 7; } ``` -These issues can be arranged hierarchically with `id` and `reason` fields, which help to visualize how problems in a separate module affect the state of the system as a whole. All issues are arranged in a hierarchy where higher levels can depend on nested levels: +These issues can be arranged hierarchically with `id` and `reason` fields, which help to visualize how issues in a separate module affect the state of the system as a whole. All issues are arranged in a hierarchy where higher levels can depend on nested levels: ![cards_hierarchy](./_assets/hc_cards_hierarchy.png) @@ -64,16 +64,16 @@ Description of all fields in the response is provided below: | Field | Description | |:----|:----| -| `self_check_result` | enum field which contains the DB check result:
    • `GOOD`: No problems were detected.
    • `DEGRADED`: Degradation of one of the database systems was detected, but the database is still functioning (for example, allowable disk loss).
    • `MAINTENANCE_REQUIRED`: Significant degradation was detected, there is a risk of availability loss, and human maintenance is required.
    • `EMERGENCY`: A serious problem was detected in the database, with complete or partial loss of availability.
    | -| `issue_log` | This is a set of elements, each of which describes a problem in the system at a certain level. | -| `issue_log.id` | A unique problem ID within this response. | -| `issue_log.status` | Status (severity) of the current problem.
    It can take one of the following values:
  • `RED`: A component is faulty or unavailable.
  • `ORANGE`: A serious problem, we are one step away from losing availability. Maintenance may be required.
  • `YELLOW`: A minor problem, no risks to availability. We recommend you continue monitoring the problem.
  • `BLUE`: Temporary minor degradation that does not affect database availability. The system is expected to switch to `GREEN`.
  • `GREEN`: No problems were detected.
  • `GREY`: Failed to determine the status (a problem with the self-diagnostic mechanism).
  • | -| `issue_log.message` | Text that describes the problem. | -| `issue_log.location` | Location of the problem. This can be a physical location or an execution context. | -| `issue_log.reason` | This is a set of elements, each of which describes a problem in the system at a certain level. | -| `issue_log.type` | Problem category (by subsystem). Each type is at a certain level and interconnected with others through a rigid hierarchy (as shown in the picture above). | -| `issue_log.level` | The depth of problem nesting. | -| `database_status` | If settings contains `verbose` parameter than `database_status` field will be filled.
    It provides a summary of the overall health of the database.
    It's used to quickly review the overall health of the database, helping to assess its health and whether there are any serious problems at a high level. [Example](#example-verbose). | +| `self_check_result` | enum field which contains the DB check result:
    • `GOOD`: No issues were detected.
    • `DEGRADED`: Degradation of one of the database systems was detected, but the database is still functioning (for example, allowable disk loss).
    • `MAINTENANCE_REQUIRED`: Significant degradation was detected, there is a risk of availability loss, and human maintenance is required.
    • `EMERGENCY`: A serious issue was detected in the database, with complete or partial loss of availability.
    | +| `issue_log` | This is a set of elements, each of which describes a issue in the system at a certain level. | +| `issue_log.id` | A unique issue ID within this response. | +| `issue_log.status` | Status (severity) of the current issue.
    It can take one of the following values:
  • `RED`: A component is faulty or unavailable.
  • `ORANGE`: A serious issue, we are one step away from losing availability. Maintenance may be required.
  • `YELLOW`: A minor issue, no risks to availability. We recommend you continue monitoring the issue.
  • `BLUE`: Temporary minor degradation that does not affect database availability. The system is expected to switch to `GREEN`.
  • `GREEN`: No issues were detected.
  • `GREY`: Failed to determine the status (a issue with the self-diagnostic mechanism).
  • | +| `issue_log.message` | Text that describes the issue. | +| `issue_log.location` | Location of the issue. This can be a physical location or an execution context. | +| `issue_log.reason` | This is a set of elements, each of which describes a issue in the system at a certain level. | +| `issue_log.type` | Issue category (by subsystem). Each type is at a certain level and interconnected with others through a rigid hierarchy (as shown in the picture above). | +| `issue_log.level` | The depth of issue nesting. | +| `database_status` | If settings contains `verbose` parameter than `database_status` field will be filled.
    It provides a summary of the overall health of the database.
    It's used to quickly review the overall health of the database, helping to assess its health and whether there are any serious issues at a high level. [Example](#example-verbose). | | `location` | Contains information about host, where `HealthCheck` service was called | ## Call parameters {#call-parameters} @@ -100,7 +100,7 @@ The whole list of extra parameters presented below: | `MinimumStatus` | `EStatusFlag` | The minimum severity status that will appear in the response. Less severe issues will be discarded. By default, all issues will be listed. | | `MaximumLevel` | `int32` | The maximum depth of issues in the response. Issues at deeper levels will be discarded. By default, all issues will be listed. | -## Possible problems {#problems} +## Possible issues {#issues} | Message | Description | |:----|:----| @@ -114,13 +114,13 @@ The whole list of extra parameters presented below: | **STORAGE_POOL** || | `Pool degraded`
    `Pool has no redundancy`
    `Pool failed` | These issues depend solely on the underlying `STORAGE_GROUP` layer. | | **STORAGE_GROUP** || -| `Group has no vslots` | This case is not expected, it inner problem. | +| `Group has no vslots` | This case is not expected; it is an internal issue. | | `Group degraded` | A number of disks allowed in the group are not available. | | `Group has no redundancy` | A storage group lost its redundancy. Аnother failure of vdisk may lead to the loss of the group. | | `Group failed` | A storage group lost its integrity. Data is not available | ||`HealthCheck` checks various parameters (fault tolerance mode, number of failed disks, disk status, etc.) and, depending on them, sets the appropriate status and displays a message. | | **VDISK** || -| `System tablet BSC didn't provide known status` | This case is not expected, it inner problem. | +| `System tablet BSC didn't provide known status` | This case is not expected; it is an internal issue. | | `VDisk is not available` | the disk is not operational at all. | | `VDisk is being initialized` | initialization in process. | | `Replication in progress` | the disk accepts queries, but not all the data was replicated. | From 8f0e0b5b1f6ceae8c29e3f0c21e509e77d51ec51 Mon Sep 17 00:00:00 2001 From: Andrei Rykov Date: Mon, 8 Jul 2024 00:37:28 +0200 Subject: [PATCH 10/15] Update ydb/docs/en/core/reference/ydb-sdk/health-check-api.md Co-authored-by: Ivan Blinkov --- ydb/docs/en/core/reference/ydb-sdk/health-check-api.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index fd7824661512..cba9f9aeadfe 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -158,6 +158,7 @@ The whole list of extra parameters presented below: ## Example {#examples} + The shortest `HealthCheck` response looks like this. It is returned if there is nothing wrong with the database ```json { From 3180b5678a4a9a1bf89e3284895d732f87a3ad08 Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Sun, 7 Jul 2024 23:44:45 +0000 Subject: [PATCH 11/15] switched reqest parameters and respond parts --- .../reference/ydb-sdk/health-check-api.md | 102 +++++++++++++----- .../reference/ydb-sdk/health-check-api.md | 97 +++++++++++++---- 2 files changed, 152 insertions(+), 47 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md index cba9f9aeadfe..fb1db1e204c4 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/en/core/reference/ydb-sdk/health-check-api.md @@ -28,6 +28,54 @@ To initiate the check, call the `SelfCheck` method from `NYdb::NMonitoring` name {% endlist %} +## Call parameters {#call-parameters} + +`SelfCheck` method provides information in the form of a [set of issues](#emergency-example) which could look like this: + +```json +{ + "id": "RED-27c3-70fb", + "status": "RED", + "message": "Database has multiple issues", + "location": { + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-27c3-4e47", + "RED-27c3-53b5", + "YELLOW-27c3-5321" + ], + "type": "DATABASE", + "level": 1 +} +``` + +This is a short messages each about a single problem. All parameters will affect the amount of information the service returns for the specified database. + +The whole list of extra parameters presented below: + +{% list tabs %} + +- C++ + + ```c++ + struct TSelfCheckSettings : public TOperationRequestSettings{ + FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); + FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); + FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); + }; + ``` + +{% endlist %} + +| Parameter | Type | Description | +|:----|:----|:----| +| `ReturnVerboseStatus` | `bool` | If `ReturnVerboseStatus` is specified, the response will also include a summary of the overall health of the database in the `database_status` field ([Example](#example-verbose)). Default is false. | +| `MinimumStatus` | [EStatusFlag] (#issue-status) | Each issue has a `status` field. If `minimum_status` is specified, issues with a higher `status` will be discarded. By default, all issues will be listed. | +| `MaximumLevel` | `int32` | Each issue has a `level` field. If `maximum_level` is specified, issues with deeper levels will be discarded. By default, all issues will be listed. | + ## Response structure {#response-structure} For the full response structure, see the [ydb_monitoring.proto](https://github.com/ydb-platform/ydb/public/api/protos/ydb_monitoring.proto) file in the {{ ydb-short-name }} Git repository. @@ -37,10 +85,15 @@ Calling the `SelfCheck` method will return the following message: message SelfCheckResult { SelfCheck.Result self_check_result = 1; repeated IssueLog issue_log = 2; + repeated DatabaseStatus database_status = 3; + LocationNode location = 4; } ``` +The shortest HealthCheck response looks like [this](#examples) . It is returned if there is nothing wrong with the database. + If any issues are detected, the `issue_log` field will contain descriptions of the issues with the following structure: + ```protobuf message IssueLog { string id = 1; @@ -52,6 +105,7 @@ message IssueLog { uint32 level = 7; } ``` + These issues can be arranged hierarchically with `id` and `reason` fields, which help to visualize how issues in a separate module affect the state of the system as a whole. All issues are arranged in a hierarchy where higher levels can depend on nested levels: ![cards_hierarchy](./_assets/hc_cards_hierarchy.png) @@ -64,41 +118,40 @@ Description of all fields in the response is provided below: | Field | Description | |:----|:----| -| `self_check_result` | enum field which contains the DB check result:
    • `GOOD`: No issues were detected.
    • `DEGRADED`: Degradation of one of the database systems was detected, but the database is still functioning (for example, allowable disk loss).
    • `MAINTENANCE_REQUIRED`: Significant degradation was detected, there is a risk of availability loss, and human maintenance is required.
    • `EMERGENCY`: A serious issue was detected in the database, with complete or partial loss of availability.
    | -| `issue_log` | This is a set of elements, each of which describes a issue in the system at a certain level. | +| `self_check_result` | enum field which contains the [DB check result](#selfcheck-result) | | `issue_log.id` | A unique issue ID within this response. | -| `issue_log.status` | Status (severity) of the current issue.
    It can take one of the following values:
  • `RED`: A component is faulty or unavailable.
  • `ORANGE`: A serious issue, we are one step away from losing availability. Maintenance may be required.
  • `YELLOW`: A minor issue, no risks to availability. We recommend you continue monitoring the issue.
  • `BLUE`: Temporary minor degradation that does not affect database availability. The system is expected to switch to `GREEN`.
  • `GREEN`: No issues were detected.
  • `GREY`: Failed to determine the status (a issue with the self-diagnostic mechanism).
  • | +| `issue_log.status` | enum field which contains the [issue status](#issue-status) | | `issue_log.message` | Text that describes the issue. | | `issue_log.location` | Location of the issue. This can be a physical location or an execution context. | | `issue_log.reason` | This is a set of elements, each of which describes a issue in the system at a certain level. | | `issue_log.type` | Issue category (by subsystem). Each type is at a certain level and interconnected with others through a rigid hierarchy (as shown in the picture above). | | `issue_log.level` | The depth of issue nesting. | -| `database_status` | If settings contains `verbose` parameter than `database_status` field will be filled.
    It provides a summary of the overall health of the database.
    It's used to quickly review the overall health of the database, helping to assess its health and whether there are any serious issues at a high level. [Example](#example-verbose). | +| `database_status` | If settings contains `ReturnVerboseStatus` parameter than `database_status` field will be filled.
    It provides a summary of the overall health of the database.
    It's used to quickly review the overall health of the database, helping to assess its health and whether there are any serious issues at a high level. [Example](#example-verbose). | | `location` | Contains information about host, where `HealthCheck` service was called | -## Call parameters {#call-parameters} +### DB check result {#selfcheck-result} -The whole list of extra parameters presented below: +The most general statuses of the database, which can have the following values: -{% list tabs %} +| Value | Description | +|:----|:----| +| `GOOD` | No issues were detected. | +| `DEGRADED` | Degradation of one of the database systems was detected, but the database is still functioning (for example, allowable disk loss). | +| `MAINTENANCE_REQUIRED` | Significant degradation was detected, there is a risk of availability loss, and human maintenance is required. | +| `EMERGENCY` | A serious issue was detected in the database, with complete or partial loss of availability. | -- C++ +### Issue status {#issue-status} - ```c++ - struct TSelfCheckSettings : public TOperationRequestSettings{ - FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); - FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); - FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); - }; - ``` - -{% endlist %} +Status (severity) of the current issue: -| Parameter | Type | Description | -|:----|:----|:----| -| `ReturnVerboseStatus` | `bool` | As mentioned earlier, this parameter affects the filling of the `database_status` field. Default is false. | -| `MinimumStatus` | `EStatusFlag` | The minimum severity status that will appear in the response. Less severe issues will be discarded. By default, all issues will be listed. | -| `MaximumLevel` | `int32` | The maximum depth of issues in the response. Issues at deeper levels will be discarded. By default, all issues will be listed. | +| Value | Description | +|:----|:----| +| `GREY` | Failed to determine the status (a issue with the self-diagnostic mechanism). | +| `GREEN` | No issues were detected. | +| `BLUE` | Temporary minor degradation that does not affect database availability. The system is expected to switch to `GREEN`. | +| `YELLOW` | A minor issue, no risks to availability. We recommend you continue monitoring the issue. | +| `ORANGE` | A serious issue, we are one step away from losing availability. Maintenance may be required. | +| `RED` | A component is faulty or unavailable. | ## Possible issues {#issues} @@ -154,8 +207,7 @@ The whole list of extra parameters presented below: | `The number of node restarts has increased` | The number of node restarts has exceeded the threshold. By default, 10 restarts per hour | | `Node is restarting too often` | The number of node restarts has exceeded the threshold. By default, 30 restarts per hour | | **NODES_TIME_DIFFERENCE** || -| `The nodes have a time difference of ... ms` | Time drift on nodes might lead to potential issues with coordinating distributed transactions. This issus starts to appear from 5 ms | - +| `Node is ... ms behind peer [id]`
    `Node is ... ms ahead of peer [id]` | Time drift on nodes might lead to potential issues with coordinating distributed transactions. This issus starts to appear from 5 ms | ## Example {#examples} @@ -167,6 +219,7 @@ The shortest `HealthCheck` response looks like this. It is returned if there is ``` #### Verbose example {#example-verbose} + `GOOD` response with `verbose` parameter: ```json { @@ -415,6 +468,7 @@ The shortest `HealthCheck` response looks like this. It is returned if there is ``` #### Emergency example {#example-emergency} + Response with `EMERGENCY` status: ```json { diff --git a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md index 1e6910dc9ac6..8da5fc576a72 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/health-check-api.md @@ -28,6 +28,54 @@ description: "Из статьи вы узнаете, как инициирова {% endlist %} +## Параметры вызова {#call-parameters} + +`SelfCheck` возвращает информацию в форме [списка проблем](#emergency-example), каждая из которых может выглядеть так: + +```json +{ + "id": "RED-27c3-70fb", + "status": "RED", + "message": "Database has multiple issues", + "location": { + "database": { + "name": "/slice" + } + }, + "reason": [ + "RED-27c3-4e47", + "RED-27c3-53b5", + "YELLOW-27c3-5321" + ], + "type": "DATABASE", + "level": 1 +} +``` + +Это короткое сообщение об одной из проблем. Все параметры вызова влиять на размер информации , которая содержится в ответе. + +Полный список дополнительных параметров представлен ниже: + +{% list tabs %} + +- C++ + + ```c++ + struct TSelfCheckSettings : public TOperationRequestSettings{ + FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); + FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); + FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); + }; + ``` + +{% endlist %} + +| Поле | Тип | Описание | +|:----|:----|:----| +| `ReturnVerboseStatus` | `bool` | Если задан, ответ также будет содержать сводку общего состояния базы данных в поле `database_status` ([Example](#example-verbose)). По умолчанию `false`. | +| `MinimumStatus` | [EStatusFlag] (#issue-status) | Каждая проблема содержит поле `status`. Если `minimum_status` определен, проблемы с менее серьезным статусом будут отброшены. По-умолчанию все проблемы будут перечислены. | +| `MaximumLevel` | `int32` | Каждая проблема содержит поле `level`. Если `maximum_level` определенd, более глубоки проблемы будут отброшены. По-умолчанию все проблемы будут перечислены. | + ## Структура ответа {#response-structure} Полную структуру ответа можно посмотреть в файле [ydb_monitoring.proto](https://github.com/ydb-platform/ydb/public/api/protos/ydb_monitoring.proto) в {{ ydb-short-name }} Git репозитории. @@ -37,6 +85,8 @@ description: "Из статьи вы узнаете, как инициирова message SelfCheckResult { SelfCheck.Result self_check_result = 1; repeated IssueLog issue_log = 2; + repeated DatabaseStatus database_status = 3; + LocationNode location = 4; } ``` @@ -66,10 +116,10 @@ message IssueLog { | Поле | Описание | |:----|:----| -| `self_check_result` | содержит результат проверки БД:
    • `GOOD`: Проблем не обнаружено.
    • `DEGRADED`: Обнаружена деградация одной из систем базы данных, но база данных все еще функционирует (например, допустимая потеря диска).
    • `MAINTENANCE_REQUIRED`: Обнаружена значительная деградация, есть риск потери доступности, требуется обслуживание.
    • `EMERGENCY`: Обнаружена серьезная проблема в базе данных с полной или частичной потерей доступности.
    | +| `self_check_result` | Перечисляемое поле, которое содержит [результат проверки базы данных](#selfcheck-result) | | `issue_log` | Это набор элементов, каждый из которых описывает проблему в системе на определенном уровне. | | `issue_log.id` | Уникальный идентификатор проблемы в этом ответе. | -| `issue_log.status` | Статус (серьезности) текущей проблемы.
    Может принимать одно из следующих значений:
    • `RED`: Компонент неисправен или недоступен.
    • `ORANGE`: Серьезная проблема, мы в шаге от потери доступности. Может потребоваться обслуживание.
    • `YELLOW`: Небольшая проблема, нет рисков для доступности. Рекомендуется продолжать мониторинг проблемы.
    • `BLUE`: Временная небольшая деградация, не влияющая на доступность базы данных. Ожидается переход системы в `GREEN`.
    • `GREEN`: Проблем не обнаружено.
    • `GREY`: Не удалось определить статус (проблема с механизмом самодиагностики).
    | +| `issue_log.status` | Перечисляемое поле, которое содержит [статус проблемы](#issue-status) | | `issue_log.message` | Текст, описывающий проблему. | | `issue_log.location` | Местоположение проблемы. Это может быть физической местоположение или контекст выполнения. | | `issue_log.reason` | Это набор элементов, каждый из которых описывает причину проблемы в системе на определенном уровне. | @@ -78,30 +128,29 @@ message IssueLog { | `database_status` | Если в настройках содержится параметр `verbose`, то поле `database_status` будет заполнено.
    Оно предоставляет сводку общего состояния базы данных.
    Используется для быстрой оценки состояния базы данных и выявления серьезных проблем на высоком уровне. [Пример](#example-verbose). | | `location` | Содержит информацию о хосте, на котором был вызван сервис `HealthCheck`. | +### Результат проверки базы данных {#selfcheck-result} -## Параметры вызова {#call-parameters} +Самый общий статусы базы данных, который может иметь следующие значения: -Полный список дополнительных параметров представлен ниже: - -{% list tabs %} - -- C++ +| Поле | Описание | +|:----|:----| +| `GOOD` | Проблем не обнаружено. | +| `DEGRADED` | Обнаружена деградация одной из систем базы данных, но база данных все еще функционирует (например, допустимая потеря диска). | +| `MAINTENANCE_REQUIRED` | Обнаружена значительная деградация, есть риск потери доступности, требуется обслуживание. | +| `EMERGENCY` | Обнаружена серьезная проблема в базе данных с полной или частичной потерей доступности. | - ```c++ - struct TSelfCheckSettings : public TOperationRequestSettings{ - FLUENT_SETTING_OPTIONAL(bool, ReturnVerboseStatus); - FLUENT_SETTING_OPTIONAL(EStatusFlag, MinimumStatus); - FLUENT_SETTING_OPTIONAL(ui32, MaximumLevel); - }; - ``` +### Статус проблемы {#issue-status} -{% endlist %} +Статус (серьезность) текущей проблемы: -| Параметр | Тип | Описание | -|:----|:----|:----| -| `ReturnVerboseStatus` | 'bool' | Как было сказано ранее, этот параметр влияет на заполнение поля `database_status`. По-умолчанию `false`. | -| `MinimumStatus` | 'EStatusFlag' | Минимальный статус опасности, который будет появляться в ответе. Менее важные проблемы будут отброшены. По-умолчанию все проблемы будут перечислены. | -| `MaximumLevel` | 'int32' | Максимальная глубина проблем в ответе. Проблемы более глубокого уровня будут отброшены. По-умолчанию все проблемы будут перечислены. | +| Поле | Описание | +|:----|:----| +| `GREY` | Обнаружена деградация одной из систем базы данных, но база данных все еще функционирует (например, допустимая потеря диска). | +| `GREEN` | Проблем не обнаружено. | +| `BLUE` | Временная небольшая деградация, не влияющая на доступность базы данных. Ожидается переход системы в `GREEN`. | +| `YELLOW` | Небольшая проблема, нет рисков для доступности. Рекомендуется продолжать мониторинг проблемы. | +| `ORANGE` | Серьезная проблема, мы в шаге от потери доступности. Может потребоваться обслуживание. | +| `RED` | Компонент неисправен или недоступен. | ## Возможные проблемы {#problems} @@ -157,10 +206,10 @@ message IssueLog { | `The number of node restarts has increased` | Количество рестартов ноды превысило порог. По-умолчанию, это 10 рестартов в час. | | `Node is restarting too often` | Узлы слишком часто перезапускаются. По-умолчанию, это 30 рестартов в час. | | **NODES_TIME_DIFFERENCE** || -| `The nodes have a time difference of ... ms` | Расхождение времени на узлах, что может приводить к возможным проблемам с координацией распределённых транзакций. Начинает появляться с расхождения в 5ms| - +| `Node is ... ms behind peer [id]`
    `Node is ... ms ahead of peer [id]` | Расхождение времени на узлах, что может приводить к возможным проблемам с координацией распределённых транзакций. Начинает появляться с расхождения в 5ms| ## Пример ответа {#examples} + Самый короткий ответ сервиса будет выглядеть следующим образом. Он возвращается, если с базой данных все в порядке: ```json @@ -170,6 +219,7 @@ message IssueLog { ``` #### Пример verbose {#example-verbose} + Ответ `GOOD` при использовании параметра `verbose`: ```json { @@ -418,6 +468,7 @@ message IssueLog { ``` #### пример EMERGENCY: {#example-emergency} + Ответ в случаи проблем может выглядеть так ```json From a6c4043057faa4ecedf5f1c2b6ea3e7133956d98 Mon Sep 17 00:00:00 2001 From: StekPerepolnen Date: Fri, 12 Jul 2024 15:40:53 +0000 Subject: [PATCH 12/15] changed pictures --- .../ydb-sdk/_assets/hc_cards_hierarchy.png | Bin 80093 -> 65258 bytes .../ydb-sdk/_assets/hc_types_hierarchy.png | Bin 55745 -> 40124 bytes .../reference/ydb-sdk/health-check-api.md | 50 +++++++++--------- .../ydb-sdk/_assets/hc_cards_hierarchy.png | Bin 80093 -> 65258 bytes .../ydb-sdk/_assets/hc_types_hierarchy.png | Bin 55745 -> 40124 bytes .../reference/ydb-sdk/health-check-api.md | 30 ++++++----- 6 files changed, 42 insertions(+), 38 deletions(-) diff --git a/ydb/docs/en/core/reference/ydb-sdk/_assets/hc_cards_hierarchy.png b/ydb/docs/en/core/reference/ydb-sdk/_assets/hc_cards_hierarchy.png index d3615fc85b6733fad0339f4be715207e6de89055..56456b2b9c78e64f1f287538b6a4c1611878701e 100644 GIT binary patch literal 65258 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

    TtF5xc?t=@wW8>KgO2F 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 literal 80093 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