Redis и Valkey
Само хранилище в памяти: память относительно maxmemory, отклонённые подключения,
связь репликации и отставание каждой реплики, неудавшиеся снимки и записи
в append-only файл, а также размер пространства ключей.
DumbMonit открывает одно соединение, отправляет AUTH, затем INFO и закрывает его.
Используемая учётная запись может выполнять INFO и PING и ничего больше: она не может читать,
записывать и даже перечислять ключи. Поддерживаются Redis 6 и новее, Valkey и форки, которые отвечают
на INFO так же (KeyDB, Dragonfly).
Стоит следить за «тихими» сбоями. При достижении maxmemory Redis либо
молча вытесняет ключи, либо отклоняет любую запись с ошибкой OOM command not allowed, в зависимости от maxmemory-policy; без maxmemory он растёт,
пока его не убьёт ядро. Неудавшийся снимок заставляет Redis отклонять записи, пока
включён stop-writes-on-bgsave-error, а по умолчанию он включён. Реплика,
у которой оборвана связь с основным сервером, продолжает отвечать на чтение, но устаревшими данными.
За чем он следит
Заголовок раздела «За чем он следит»Все метрики имеют префикс dumbmonit_redis_. Итоговые значения — счётчики: графики и
правила превращают их в скорости.
| Метрика | Что | Метки |
|---|---|---|
version_info | значение 1 | product (redis, valkey), version, mode |
role_info | значение 1 | role: master или replica |
memory_used_bytes, memory_rss_bytes, memory_peak_bytes, memory_fragmentation_ratio | память так, как её считает Redis, и так, как её считает система | |
memory_max_bytes, memory_used_percent | maxmemory и доля использования; отсутствует, если maxmemory равен 0 (без ограничения) | |
maxmemory_policy_info | значение 1 | policy |
connected_clients, blocked_clients, max_clients | ||
rejected_connections_total | подключения, отклонённые из-за достижения maxclients | |
evicted_keys_total, expired_keys_total | ключи, вытесненные при maxmemory, и ключи, срок действия которых истёк | |
keyspace_hits_total, keyspace_misses_total | запросы, нашедшие свой ключ, и те, что не нашли | |
commands_processed_total, connections_received_total, ops_per_second | ||
error_replies_total, acl_denied_auth_total | отправленные ответы с ошибкой и отклонённые входы (подбор пароля виден здесь) | |
keys, keys_expiring | ключи во всех базах и те, у которых есть срок действия; присутствует всегда, даже при нуле | |
db_keys | ключи по базам | db |
rdb_last_save_ok | 0, если последний снимок (BGSAVE) не удался | |
rdb_changes_since_last_save, rdb_last_save_timestamp_seconds | ||
aof_enabled, aof_last_write_ok, aof_last_rewrite_ok | append-only файл; два статуса — только когда он включён | |
loading | 1, пока Redis загружает набор данных при запуске | |
connected_replicas | реплики, подключённые к этому основному серверу | |
replica_online, replica_lag_seconds, replica_lag_bytes | с точки зрения основного сервера, по каждой реплике: в сети или нет, секунды с её последнего подтверждения, отставание в байтах | replica (ip:port) |
master_link_up, master_last_io_seconds, master_link_down_seconds, master_sync_in_progress | на реплике: её связь с основным сервером | |
uptime_seconds, cluster_enabled |
Применяемые встроенные правила: Redis memory near maxmemory, Redis refusing connections, Redis replication link down, Redis replica lagging, Redis snapshot failed, Redis append-only file write failed, а также Monitor unreachable.
Страница монитора
Заголовок раздела «Страница монитора»Панель над графиками показывает то, что сохранил опрос; открытие страницы никогда не
обращается к Redis. Она одним предложением сообщает, что не так (репликация, память
относительно maxmemory и политика, действующая на пределе, персистентность,
отклонённые подключения), затем показывает ключи, память, клиентов, команды в секунду,
долю попаданий, ключи, вытесненные за последние 24 часа, и время работы, затем ключи по
базам и отставание каждой реплики.
Создайте пользователя Redis, который может выполнять только INFO
Заголовок раздела «Создайте пользователя Redis, который может выполнять только INFO»-
В Redis 6 или новее, либо в Valkey создайте пользователя, который может выполнять INFO и PING и ничего больше, без доступа к каким-либо ключам. В redis-cli, войдя под пользователем, которому разрешено управлять ACL:
ACL SETUSER dumbmonit on >a-long-password -@all +info +ping -
Сделайте это постоянным: ACL SAVE, если сервер загружает пользователей из aclfile, иначе CONFIG REWRITE.
ACL SAVE -
В Redis 5 или старше, либо если задан только requirepass, ниже выберите «Только пароль». Этот пароль даёт все права: по возможности предпочитайте пользователя ACL.
-
В DumbMonit введите адрес сервера, например “cache.lan” или “cache.lan:6380”. Если сервер принимает на этом порту только TLS (tls-port), отметьте TLS ниже.
-
DumbMonit отправляет AUTH, затем INFO. Он никогда не читает, не записывает и не перечисляет ключи.
Учётные данные
Заголовок раздела «Учётные данные»| Учётные данные | Поля |
|---|---|
| Пользователь ACL (рекомендуется) | Созданный выше пользователь и его пароль, отправляются как AUTH user password. |
| Только пароль | Значение requirepass, отправляется как AUTH password. |
| Без аутентификации | Для сервера вообще без пароля. |
Адрес: имя хоста или IP (cache.lan), host:port или строка подключения
(redis://cache.lan:6380; всё после порта игнорируется, а записанные
в ней учётные данные никогда не используются). Параметры: порт (6379), TLS (выкл.),
проверка сертификата и тайм-аут всей проверки (10 с). При включённом TLS
сертификат проверяется по публичным центрам сертификации, встроенным в DumbMonit;
для частного центра сертификации отметьте «Принимать непроверяемый сертификат».
Отклонённый пароль (WRONGPASS, NOAUTH, NOPERM) отображается как ошибка
учётных данных, и о самой ошибке никто не уведомляется, но DumbMonit при этом ничего
не собирает: правило Monitor unreachable продолжает срабатывать, как и для любого монитора, который он не может
прочитать, пока учётные данные не заработают снова. Именно это вызывает перезапуск Redis без его
пользователя ACL (пользователи, заданные через ACL SETUSER, но не сохранённые).
В развёртывании Redis Sentinel или Cluster добавьте каждый сервер, за которым хотите следить: каждый сообщает о собственной памяти, клиентах и персистентности, а основной сервер сообщает о своих репликах. Сам Sentinel не поддерживается.