[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for MySQL®](../index.md) > [Пошаговые инструкции](index.md) > Логи и мониторинг > Мониторинг состояния кластера и хостов

# Мониторинг состояния кластера MySQL® и хостов

Данные о состоянии кластера и его хостов доступны в [консоли управления](https://kz.console.yandex.cloud). Их можно посмотреть на вкладке **Мониторинг** страницы управления кластером  или в сервисе [Yandex Monitoring](../../monitoring/concepts/index.md).

Диагностическая информация о состоянии кластера представлена в виде графиков.

Период обновления графиков:

* Для хостов стандартной конфигурации и хостов с увеличенным соотношением количества гигабайт RAM к количеству vCPU (`memory-optimized`): 15 секунд.
* Для хостов с гарантированной долей vCPU ниже 100% (`burstable`): 150 секунд.

{% note info %}

На графиках автоматически применяются наиболее подходящие кратные единицы измерения (мегабайты, гигабайты и т. д.).

{% endnote %}

Вы можете [настроить алерты](#monitoring-integration) в сервисе Yandex Monitoring для получения уведомлений о сбоях в работе кластера. В Yandex Monitoring используются два порога срабатывания алерта: `Warning` и `Alarm`. При превышении заданного порога вы получите оповещения через настроенные [каналы уведомлений](../../monitoring/concepts/alerting.md#notification-channel).

## Мониторинг состояния кластера {#monitoring-cluster}

Для просмотра детальной информации о состоянии кластера Managed Service for MySQL®:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. Перейдите в сервис **Managed Service for&nbsp;MySQL**.
  1. Нажмите на имя нужного кластера и выберите вкладку **Мониторинг**.
      
      На открывшейся странице будут отображены графики, отражающие состояние кластера.
  
      Чтобы перейти к работе с метриками, дашбордами или алертами в сервисе Yandex Monitoring, нажмите кнопку **Открыть в Monium** на панели сверху.

  Для кластера отображаются графики:

  * **Queries per second** — количество пользовательских запросов в секунду для каждого хоста кластера.
  * **Average query time** — среднее время выполнения запросов для каждого хоста кластера.
  * **Slow queries per second** — количество запросов в секунду, выполняющихся дольше, чем указано в параметре [long_query_time](../concepts/settings-list.md#setting-long-query-time). Информация отображается для каждого хоста кластера.
  * **Connections** — количество подключений для каждого хоста кластера.
  * **Threads running** — количество запущенных потоков для каждого хоста кластера.
  * **Disk usage** — использование дискового пространства для каждого хоста и всего кластера.
  * **Is Primary, [boolean]** — показывает, является ли хост мастером.
  * **Is Alive, [boolean]** — показывает доступность каждого хоста кластера.
  * **Replication lag** — время отставания реплики от мастера.
  * **Free space** — свободное место на диске для каждого хоста и всего кластера.
  * **OOM Count** — количество случаев нехватки оперативной памяти на каждом хосте кластера. 

  В блоке **Master overview** отображаются расширенные сведения о мастере:

  * **Query quantiles** — время выполнения запросов по процентилям.
  * **Threads** — количество потоков. Отдельно отображаются:
   
    * **Threads cached** — количество потоков в кеше.
    * **Threads connected** — количество открытых подключений к БД.

      Максимальное количество открытых подключений задается в параметре [max_connections](../concepts/settings-list.md#setting-max-connections).

    * **Threads running** — количество запущенных потоков.

  * **Thread states** — количество потоков в каждом состоянии.
  * **Disk usage** — использование дискового пространства. Отдельно отображаются:
   
    * **data** — объем, занятый данными.
    * **default tablespace** — объем, занятый данными в табличном пространстве.
    * **innodb logs** — объем, занятый логами InnoDB.
    * **relaylogs**, **binlogs** — объем, занятый служебными логами MySQL®.
    * **temp tablespace** — объем, занятый данными во временном табличном пространстве.
    * **undo tablespace** — объем, занятый данными в [табличном пространстве отката InnoDB](https://dev.mysql.com/doc/refman/8.0/en/innodb-undo-tablespaces.html).
  
  * **InnoDB rows operation** — количество операций со строками в InnoDB.
  * **InnoDB locks** — ожидания блокировок строк в InnoDB. Отдельно отображаются:
    
    * **innodb_row_lock_current_waits** — текущее количество ожиданий блокировок строк;
    * **innodb_row_lock_waits** — количество операций, которым пришлось ждать блокировки строк, в секунду.

  * **Temp tables** — количество созданных временных таблиц и файлов в секунду.
  * **Sorts and joins** — количество операций сортировки и объединения в секунду.
  * **Table cache** — кеширование таблиц. Отдельно отображаются:
   
    * **open_tables** — количество открытых таблиц;
    * **opened_tables** — количество открытых таблиц в секунду;
    * **table_open_cache_hits** — количество успешных попыток поиска в кеше открытых таблиц в секунду;
    * **table_open_cache_misses** — количество неуспешных попыток поиска в кеше открытых таблиц в секунду.

{% endlist %}

## Мониторинг состояния хостов {#monitoring-hosts}

Для просмотра детальной информации о состоянии отдельных хостов Managed Service for MySQL®:

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. Перейдите в сервис **Managed Service for&nbsp;MySQL**.
  1. Нажмите на имя нужного кластера и выберите вкладку **Мониторинг**.
  1. Перейдите на вкладку **Хосты** и выберите хост.

      На открывшейся странице будут отображены графики, отражающие состояние хостов кластера.

      Чтобы перейти к работе с метриками, дашбордами или алертами в сервисе Yandex Monitoring, нажмите кнопку **Открыть в Monium** на панели сверху.

  Для хостов отображаются графики:
 
  * **CPU usage** — процент использования CPU по типам потребления.
  * **Memory usage** — использование оперативной памяти по типам потребления.
  * **Disk IOPS** — количество операций чтения и записи в секунду.
  * **Network Packets** — количество отправленных и полученных по сети пакетов в секунду.
  * **Network Bytes** — скорость отправки и получения данных по сети.
  
    Для хостов с ролью **Replica** нормально преобладание **Received** над **Sent** на графиках **Network Bytes** и **Network Packets**.

  В блоке **MySQL overview** отображаются расширенные сведения о состоянии СУБД на хосте:

  * **Query quantiles** — время выполнения запросов по процентилям.
  * **Queries per second** — количество пользовательских запросов в секунду.
  * **Slow queries per second** — количество запросов в секунду, выполняющихся дольше, чем указано в параметре [long_query_time](../concepts/settings-list.md#setting-long-query-time).
  * **Threads** — количество потоков. Отдельно отображаются:
   
    * **Threads cached** — количество потоков в кеше.
    * **Threads connected** — количество открытых подключений к БД.

      Максимальное количество открытых подключений задается в параметре [max_connections](../concepts/settings-list.md#setting-max-connections).

    * **Threads running** — количество запущенных потоков.

  * **Thread states** — количество потоков в каждом состоянии.
  * **Handlers** — количество обработчиков операций.
  * **Replication lag** — время отставания реплики от мастера.
  * **File IO write bytes** — скорость записи данных по типам файлов.
  * **File IO read bytes** — скорость чтения данных по типам файлов.
  * **Disk usage** — использование дискового пространства. Отдельно отображаются:
   
    * **data** — объем, занятый данными.
    * **default tablespace** — объем, занятый данными в табличном пространстве.
    * **innodb logs** — объем, занятый логами InnoDB.
    * **relaylogs**, **binlogs** — объем, занятый служебными логами MySQL®.
    * **temp tablespace** — объем, занятый данными во временном табличном пространстве.
    * **undo tablespace** — объем, занятый данными в [табличном пространстве отката InnoDB](https://dev.mysql.com/doc/refman/8.0/en/innodb-undo-tablespaces.html).

  * **File IO write operations** — количество операций записи по типам файлов в секунду.
  * **File IO read operations** — количество операций чтения по типам файлов в секунду.
  * **Temp tables** — количество созданных временных таблиц и файлов в секунду.
  * **Sorts and joins** — количество операций сортировки и объединения в секунду.
  * **Table cache** — кеширование таблиц. Отдельно отображаются:
   
    * **open_tables** — количество открытых таблиц;
    * **opened_tables** — количество открытых таблиц в секунду;
    * **table_open_cache_hits** — количество успешных попыток поиска в кеше открытых таблиц в секунду;
    * **table_open_cache_misses** — количество неуспешных попыток поиска в кеше открытых таблиц в секунду.

  * **InnoDB rows operation** — количество операций со строками в InnoDB.
  * **InnoDB locks** — ожидания блокировок строк в InnoDB. Отдельно отображаются:
   
    * **innodb_row_lock_current_waits** — текущее количество ожиданий блокировок строк.
    * **innodb_row_lock_waits** — количество операций, которым пришлось ждать блокировки строк, в секунду.

  * **InnoDB lock time** — максимальное время ожидания блокировки строк в InnoDB.
  * **InnoDB cache efficiency** — эффективность буфера InnoDB. Отдельно отображаются:
   
    * **innodb_buffer_pool_reads** — количество операций чтения, в которых InnoDB пришлось обращаться к диску, в секунду;
    * **innodb_buffer_pool_read_requests** — общее количество операций чтения в секунду.

  * **InnoDB data operations** — количество операций InnoDB в секунду. Отдельно отображаются:
   
    * **innodb data fsyncs** — количество операций `fsync()` при сбросе данных на диск;
    * **innodb data reads** — количество операций чтения с диска;
    * **innodb data writes** — количество операций записи на диск.

  * **SemiSync latency** — максимальное время ожидания подтверждения транзакции источником при [полусинхронной репликации](https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html).
  * **Inode usage** — использование inodes, в процентах от общего количества.

  В блоке **MySQL overview** → **Disk Metrics Details**:

  * **Disk write latency (percentiles)** — задержка записи на диск по процентилям.
  * **Disk write bytes** — средняя и максимальная скорость записи на диск.
  * **Disk write operations** — среднее и максимальное количество операций записи в секунду.
  * **Disk read latency (percentiles)** — задержка чтения с диска по процентилям.
  * **Disk read bytes** — средняя и максимальная скорость чтения с диска.
  * **Disk read operations** — среднее и максимальное количество операций чтения в секунду.
  * **Disk write throttler latency (percentiles)** — задержка записи, внесенная при превышении квоты диска, по процентилям.
  * **Disk read throttler latency (percentiles)** — задержка чтения, внесенная при превышении квоты диска, по процентилям.
  * **Disk used quota** — средний и максимальный процент использования квоты для дисковых операций.

{% endlist %}


## Настройка алертов в Yandex Monitoring {#monitoring-integration}

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог с кластером, для которого нужно настроить алерты.

    1. Перейдите в сервис ![image](../../_assets/console-icons/display-pulse.svg) **Monitoring**.

    1. В блоке **Сервисные дашборды** выберите:

        * **Managed Service for MySQL® — Cluster Overview** для настройки алертов кластера;
        * **Managed Service for MySQL® — Host Overview** для настройки алертов хостов.

    1. На нужном графике нажмите на значок ![options](../../_assets/console-icons/ellipsis.svg) и выберите пункт **Создать алерт**.

    1. Если на графике несколько показателей, выберите запрос данных для формирования метрики и нажмите **Продолжить**. Подробнее о языке запросов читайте в [документации Yandex Monitoring](../../monitoring/concepts/querying.md).

    1. Задайте значения порогов `Alarm` и `Warning` для срабатывания алерта.

    1. Нажмите кнопку **Создать алерт**.

{% endlist %}

Чтобы настроить автоматический мониторинг других показателей состояния кластера:

{% list tabs group=instructions %}

- Консоль управления {#console}

    1. [Создайте алерт](../../monitoring/operations/alert/create-alert.md).
    1. Добавьте метрику состояния.
    1. В параметрах алерта задайте значения порогов для оповещения.

{% endlist %}

Рекомендуемые значения порогов для некоторых метрик:

| Метрика                             | Обозначение               | `Alarm`                   | `Warning`                 |
|-------------------------------------|:-------------------------:|:-------------------------:|:-------------------------:|
| Задержка репликации                 | `mysql_replication_lag`   | `600`                     | `60`                      |
| Количество работоспособных хостов   | `mysql_is_alive`          | `<количество_хостов> - 2` | `<количество_хостов> - 1` |
| Среднее время выполнения запросов   | `mysql_latency_query_avg` | —                         | `2000`                    |
| Размер использованного хранилища    | `disk.used_bytes`         | 90% от размера хранилища  | 80% от размера хранилища  |
| Утилизация CPU                      | `cpu.idle`                | `10`                      | `20`                      |

Для метрики `disk.used_bytes` значения порогов `Alarm` и `Warning` задаются только в байтах. Например, рекомендуемые значения для диска размером в 100 ГБ:

* `Alarm` — `96636764160` байтов (90%).
* `Warning` — `85899345920` байтов (80%).

Текущий размер хранилища можно посмотреть в [детальной информации о кластере](cluster-list.md#get-cluster). Полный список поддерживаемых метрик приведен в [документации Monitoring](../../monitoring/metrics-ref/managed-mysql-ref.md).


## Состояние и статус кластера {#cluster-health-and-status}

**Состояние** кластера указывает на исправность его хостов, а **Статус** показывает, запущен кластер, остановлен или находится в промежуточном состоянии.

Для просмотра состояния и статуса кластера:

1. Перейдите в сервис **Managed Service for&nbsp;MySQL**.
1. Наведите курсор на индикатор в столбце **Доступность** в строке нужного кластера.

### Состояния кластера {#cluster-health}

Состояние | Описание | Предлагаемые действия
:--- | :--- | :---
**ALIVE** | Кластер работает в штатном режиме. | Действий не требуется.
**DEGRADED** | Кластер работает не на полную мощность: минимум один из хостов имеет состояние, отличное от `ALIVE`. | Выполните диагностику:<ul><li>Перейдите на вкладку **Хосты** и посмотрите, какие из них в нерабочем состоянии.</li><li>Перейдите на вкладку **Операции** и убедитесь, что все операции завершились.</li><li>Убедитесь, что кластер не находится в процессе технического обслуживания.</li></ul>Если причины не удалось выяснить самостоятельно, [обратитесь в службу поддержки](https://kz.center.yandex.cloud/support).
**DEAD** | Кластер неработоспособен:  ни один его хост не работает. | [Составьте обращение в службу поддержки](https://kz.center.yandex.cloud/support), указав:<ul><li>Идентификатор кластера.</li><li>Идентификаторы последних операций, которые на нем выполнялись.</li><li>Время по [графикам доступности](#monitoring-cluster), когда кластер перешел в состояние `DEAD`.</li></ul>
**UNKNOWN** | Состояние кластера неизвестно. | [Составьте обращение в службу поддержки](https://kz.center.yandex.cloud/support), указав:<ul><li>Идентификатор кластера.</li><li>Идентификаторы последних операций, которые на нем выполнялись.</li><li>Время по [графикам доступности](#monitoring-cluster), когда кластер перешел в состояние `UNKNOWN`.</li></ul>

### Статусы кластера {#cluster-status}

Статус | Описание | Предлагаемые действия
:--- | :--- | :---
**CREATING** | Идет подготовка к первому запуску | Подождите немного и приступайте к работе. Время создания кластера зависит от класса хостов.
**RUNNING** | Кластер работает в штатном режиме | Действий не требуется.
**STOPPING** | Кластер останавливается | Через некоторое время кластеру будет присвоен статус `STOPPED`, и он будет выведен из работы. Действий не требуется.
**STOPPED** | Кластер остановлен | Запустите кластер, чтобы вернуть его в работу.
**STARTING** | Остановленный ранее кластер запускается | Через некоторое время кластеру будет присвоен статус `RUNNING`. Подождите немного и приступайте к работе.
**UPDATING** | Обновляется конфигурация кластера | По завершении обновления кластеру будет присвоен статус, который был до обновления: `RUNNING` или `STOPPED`.
**ERROR** | Произошла ошибка при выполнении операции с кластером или во время окна технического обслуживания | Если кластер долго находится в этом статусе, [обратитесь в службу поддержки](https://kz.center.yandex.cloud/support). Доступность кластера можно определить по его состоянию.
**STATUS_UNKNOWN** | Кластер не может определить свой статус | Если кластер долго находится в этом статусе, [обратитесь в службу поддержки](https://kz.center.yandex.cloud/support).