Мониторинг состояния кластера Redis и хостов
Данные о состоянии кластера и его хостов доступны в консоли управления. Их можно посмотреть на вкладке Мониторинг страницы управления кластером или в сервисе Yandex Monitoring.
Диагностическая информация о состоянии кластера представлена в виде графиков.
Период обновления графиков:
- Для хостов стандартной конфигурации и хостов с увеличенным соотношением количества гигабайт RAM к количеству vCPU (
memory-optimized
): 15 секунд. - Для хостов с гарантированной долей vCPU ниже 100% (
burstable
): 150 секунд.
Примечание
На графиках автоматически применяются наиболее подходящие кратные единицы измерения (мегабайты, гигабайты и т. д.).
Вы можете настроить алерты в сервисе Yandex Monitoring для получения уведомлений о сбоях в работе кластера. В Yandex Monitoring используются два порога срабатывания алерта: Warning
и Alarm
. При превышении заданного порога вы получите оповещения через настроенные каналы уведомлений.
Мониторинг состояния кластера
Для просмотра детальной информации о состоянии кластера Managed Service for Redis:
-
В консоли управления
перейдите в каталог с нужным кластером. -
Выберите сервис Managed Service for Redis.
-
Нажмите на имя нужного кластера и выберите вкладку Мониторинг.
-
Чтобы перейти к работе с метриками, дашбордами или алертами в сервисе Yandex Monitoring, нажмите кнопку Открыть в Monitoring на панели сверху.
На странице появятся следующие графики:
-
Cache Hit Rate — процент попаданий в кеш на каждом хосте.
Значения, близкие к 1, говорят об эффективном использовании кластера в качестве кеширующего сервера. Если процент попаданий в кеш близок к 0, возможно, следует изменить логику работы приложения, время жизни ключей или политику управления оперативной памятью при ее дефиците.
-
Client recent max input buffer size — использование памяти для обслуживания клиентских подключений, выполняющих запись данных (в байтах).
-
Client recent max output buffer size — использование памяти для обслуживания клиентских подключений, выполняющих чтение данных:
- soft_limit — мягкий лимит использования памяти;
- hard_limit — жесткий лимит использования памяти;
- buffer — текущий размер данных в буфере.
Если значение параметра buffer возрастет до soft_limit, кластер в течение нескольких секунд будет ожидать его снижения. Если значение параметра buffer не уменьшится, подключение будет закрыто.
Если значение параметра buffer достигнет значения параметра hard_limit, соединение будет закрыто сразу же. -
Commands Processed — среднее количество команд, обработанных каждым хостом кластера.
-
Connected Clients — количество открытых соединений для каждого хоста кластера.
Если кластер шардированный или использует репликацию, часть соединений будет использована для обмена данными между хостами кластера.
Если при подключении к кластеру возникают ошибки, возможно, неактивные приложения держат соединения открытыми слишком долго. В этом случае измените в настройках Redis значение параметра Timeout. -
Copy-on-write allocation — потребление памяти процессами Redis при использовании механизма COW (Copy-on-write)
(в байтах).На графике показаны последние измеренные Redis значения параметров:
- module_fork_last_cow_size — количество данных, скопированных при вызове
fork()
с использованием механизма COW. - aof_last_cow_size — количество данных, скопированных при создании AOF-файла.
- rdb_last_cow_size — количество данных, скопированных при создании RDB-файла.
Подробнее см. в разделе Резервные копии.
- module_fork_last_cow_size — количество данных, скопированных при вызове
-
DB keys — количество ключей, хранящихся во всех базах данных кластера.
-
Evicted keys — количество ключей, удаленных из памяти при вставке новых данных.
По умолчанию для управления памятью используется политика noeviction — не удалять ключи, вернуть ошибку, если для вставки новых данных недостаточно памяти. Чтобы использовать другую политику управления памятью, измените в настройках Redis значение параметра Maxmemory policy.
-
Inner memory limit — объем оперативной памяти, доступной для использования процессами Redis (в байтах):
- maxmemory — максимальный объем памяти, выделяемый для пользовательских данных;
- used_memory — фактическое использованием памяти на хосте.
Если значение параметра used_memory достигнет значения параметра maxmemory, при попытке вставить новые записи Redis применит режим управления памятью, установленный настройкой Maxmemory policy.
Примечание
Значение параметра maxmemory для хостов Redis устанавливается в размере 75% от объема доступной памяти. Подробнее см. в разделе Управление памятью.
-
Is Alive — показывает доступность кластера в виде суммы состояний его хостов.
Каждый хост в состоянии Alive увеличивает общую доступность на 1. При выходе из строя одного из хостов общая доступность уменьшается на 1.
Для повышения доступности кластера вы можете добавить в него хосты. -
Is Master — показывает, какой хост и как долго является мастером.
Если включено шардирование, на графике будут отображаться данные о хостах-мастерах в каждом шарде.
-
Outer memory limit — показывает объем всей оперативной памяти, доступной для использования на хостах (в байтах):
- memory_limit — объем памяти, выделенной каждому хосту;
- used_memory_rss — использование памяти процессами Redis.
При приближении значения параметра used_memory_rss к значению параметра memory_limit процесс Redis может быть принудительно завершен операционной системой. Чтобы избежать этого:
- измените логику работы приложения таким образом, чтобы снизить объем данных, хранимых в Redis;
- измените в настройках Redis значение параметра Maxmemory policy, отвечающего за политику управления памятью при ее дефиците;
- повысьте класс хоста.
-
Redis Used Memory on Masters — использование оперативной памяти на хостах-мастерах (в байтах):
- db_hashtable_overhead — для хранения хеш-таблиц всех баз данных;
- used_memory_scripts — для хранения и работы скриптов
; - mem_aof_buffer — для буфера AOF;
- mem_clients_normal — для обслуживания внешних подключений;
- mem_clients_slaves — для обслуживания подключений репликации;
- mem_replication_backlog — для циклического буфера репликации;
- used_memory_startup — для процессов Redis при запуске (например, после перезагрузки кластера);
- used_memory_dataset — для хранения данных.
-
Redis Used Memory on Replicas — использование оперативной памяти на хостах-репликах (в байтах):
- db_hashtable_overhead — для хранения хеш-таблиц всех баз данных;
- used_memory_scripts — для хранения и работы скриптов
; - mem_aof_buffer — для буфера AOF;
- mem_clients_normal — для обслуживания внешних подключений;
- mem_clients_slaves — для обслуживания подключений репликации;
- mem_replication_backlog — для циклического буфера репликации;
- used_memory_startup — для процессов Redis при запуске (например, после перезагрузки кластера);
- used_memory_dataset — для хранения данных.
-
Redis-server OOM kills — количество прерываний процессов Redis из-за нехватки оперативной памяти (OOM — out-of-memory).
Чтобы сократить количество прерываний:
- измените логику работы приложения таким образом, чтобы снизить объем данных, хранимых в Redis;
- измените в настройках Redis значение параметра Maxmemory policy, отвечающего за политику управления оперативной памятью при ее дефиците;
- повысьте класс хоста.
-
Replication buffer size — размер буфера репликации (в байтах):
- repl_backlog_size — максимальный объем памяти, доступный под буфер репликации;
- repl_backlog_histlen — текущий объем памяти, занятый данными в буфере репликации.
Когда память в циклическом буфере будет исчерпана, запустится процесс полной репликации. Это снизит производительность кластера, т. к. при полной репликации значительно возрастает использование оперативной памяти и нагрузка на CPU и сеть.
-
Replication Lag — отставание реплики от мастера (в секундах).
Ненулевое значение говорит о долгом выполнении команд на реплике или ее перегруженности.
Подробнее читайте в разделе Репликация и отказоустойчивость.
-
Slowlog top operations — список из 5 самых медленных команд, выполненных на каждом хосте за одну минуту.
Медленной считается команда, время на выполнение которой превысило значение настройки кластера Slowlog log slower than. На графике показывается только первая часть команды, а также количество ее вызовов за одну минуту.
Мониторинг состояния хостов
Для просмотра детальной информации о состоянии отдельных хостов Managed Service for Redis:
- В консоли управления
перейдите в каталог с нужным кластером. - Выберите сервис Managed Service for Redis.
- Нажмите на имя нужного кластера и выберите вкладку Хосты → Мониторинги.
- Выберите нужный хост из выпадающего списка.
На этой странице выводятся графики, показывающие нагрузку на отдельный хост кластера:
- CPU — загрузка процессорных ядер. При повышении нагрузки значение
Idle
уменьшается. - Disk Bytes — скорость дисковых операций (байт/с).
- Disk IOPS — интенсивность дисковых операций (операций/с).
- Memory — использование оперативной памяти (в байтах). При высоких нагрузках значение параметра
Free
уменьшается, а значения остальных — растут. - Network Bytes — скорость обмена данными по сети (байт/с).
- Network Packets — интенсивность обмена данными по сети (пакетов/с).
На графиках Disk bytes и Disk IOPS характеристика Read растет при активном чтении из базы данных, а Write — при записи в нее.
Для хостов с ролью Replica нормально преобладание Received над Sent на графиках Network Bytes и Network Packets.
Настройка алертов в Yandex Monitoring
Чтобы настроить алерты показателей состояния кластера и хостов:
- В консоли управления
выберите каталог с кластером, для которого нужно настроить алерты. - В списке сервисов выберите
Monitoring. - В блоке Сервисные дашборды выберите:
- Managed Service for PostgreSQL — Cluster Overview для настройки алертов кластера;
- Managed Service for PostgreSQL — Host Overview для настройки алертов хостов.
- На нужном графике нажмите на значок
и выберите пункт Создать алерт. - Если на графике несколько показателей, выберите запрос данных для формирования метрики и нажмите Продолжить. Подробнее о языке запросов см. документацию Yandex Monitoring.
- Задайте значения порогов
Alarm
иWarning
для срабатывания алерта. - Нажмите кнопку Создать алерт.
Чтобы настроить автоматический мониторинг других показателей состояния кластера:
- Создайте алерт.
- Добавьте метрику состояния.
- Задайте значения порогов для оповещения в параметрах алерта.
Рекомендуемые значения порогов для некоторых метрик:
Метрика | Обозначение | Alarm |
Warning |
---|---|---|---|
Доступность БД на запись | can_write |
Равно 0 |
— |
Количество ошибок Out of Memory, за час | redis_oom_count |
Больше 2 |
Больше 0 |
Утилизация RAM (только для политики noeviction) | redis_used_memory |
90% от объема RAM | 75% от объема RAM |
Размер использованного хранилища | disk.used_bytes |
90% от размера хранилища | 80% от размера хранилища |
Для метрики disk.used_bytes
значения порогов Alarm
и Warning
задаются только в байтах. Например, рекомендуемые значения для диска размером в 100 ГБ:
Alarm
—96636764160
байтов (90%).Warning
—85899345920
байтов (80%).
Текущий объем RAM на хостах можно посмотреть в детальной информации о кластере. Полный список поддерживаемых метрик см. в документации Monitoring.
Состояние и статус кластера
Состояние кластера указывает на исправность его хостов, а Статус показывает, запущен кластер, остановлен или находится в промежуточном состоянии.
Для просмотра состояния и статуса кластера:
- В консоли управления
перейдите в каталог с нужным кластером. - Выберите сервис Managed Service for Redis.
- Наведите курсор на индикатор в столбце Доступность в строке нужного кластера.
Состояния кластера
Состояние | Описание | Предлагаемые действия |
---|---|---|
ALIVE | Кластер работает в штатном режиме. | Действий не требуется. |
DEGRADED | Кластер работает не на полную мощность: минимум один из хостов имеет состояние, отличное от ALIVE . |
Выполните диагностику:
|
DEAD | Кластер неработоспособен: ни один его хост не работает. | Составьте обращение в службу поддержки
|
UNKNOWN | Состояние кластера неизвестно. | Составьте обращение в службу поддержки
|
Статусы кластера
Статус | Описание | Предлагаемые действия |
---|---|---|
CREATING | Идет подготовка к первому запуску | Подождите немного и приступайте к работе. Время создания кластера зависит от класса хостов. |
RUNNING | Кластер работает в штатном режиме | Действий не требуется. |
STOPPING | Кластер останавливается | Через некоторое время кластеру будет присвоен статус STOPPED , и он будет выведен из работы. Действий не требуется. |
STOPPED | Кластер остановлен | Запустите кластер, чтобы вернуть его в работу. |
STARTING | Остановленный ранее кластер запускается | Через некоторое время кластеру будет присвоен статус RUNNING . Подождите немного и приступайте к работе. |
UPDATING | Выполняется обновление состояния кластера | По завершении обновления ему будет присвоен статус RUNNING . Подождите немного и приступайте к работе. |
ERROR | Произошла ошибка, которая не позволяет кластеру продолжить работу | Выполните начальную диагностику:
|
STATUS_UNKNOWN | Кластер не может определить свой статус | Выполните начальную диагностику:
|