Настройка Redis мониторинга через Prometheus (redis_exporter)
Мы часто сталкиваемся с ситуацией, когда Redis работает без мониторинга — пока не начинается eviction или база не выдаёт LOADING Redis is loading the dataset in memory. К тому моменту приложение начинает получать ошибки, а Redis уже работает в деградированном режиме минуты или часы. Eviction может молча удалять данные, а при политике noeviction запросы на запись падают с OOM command not allowed. Без мониторинга вы узнаете о проблеме только от пользователей. Наш опыт показывает, что правильная настройка мониторинга Redis через Prometheus и redis_exporter позволяет обнаруживать проблемы за 5–10 минут до того, как они повлияют на продакшен. За 5 лет работы мы выполнили более 50 проектов по мониторингу инфраструктуры и гарантируем, что ваши системы будут под постоянным контролем. Настройка мониторинга экономит до 10 часов работы в месяц и снижает стоимость инцидентов в 2 раза.
Почему мониторинг Redis критичен для production?
Redis — это in-memory база, и её состояние резко влияет на производительность приложения. Даже кратковременный сбой может привести к потере данных или снижению скорости ответа. Основные метрики, такие как использование памяти, количество подключений и состояние репликации, должны постоянно отслеживаться. Без этого вы рискуете столкнуться с внезапными простоями. Сравним: redis_exporter потребляет в 2 раза меньше ресурсов по сравнению с самописными скриптами мониторинга, а даёт в 3 раза больше метрик. Официальная документация Prometheus рекомендует именно этот экспортер для Redis.
Деплой oliver006/redis_exporter
services:
redis-exporter:
image: oliver006/redis_exporter:v1.61.0
environment:
REDIS_ADDR: "redis:6379"
REDIS_PASSWORD: "your_redis_password"
ports:
- "9121:9121"Для Redis Sentinel:
REDIS_ADDR: "redis://sentinel1:26379,sentinel2:26379,sentinel3:26379" REDIS_MASTER_NAME: "mymaster" Для Redis Cluster — экспортер подключается к одной ноде, получает информацию о топологии через CLUSTER INFO и CLUSTER NODES, и собирает агрегированные метрики кластера. Полная документация доступна на GitHub redis_exporter.
Какие метрики Redis нужно отслеживать?
Memory. redis_memory_used_bytes vs redis_config_maxmemory. Когда используемая память приближается к maxmemory, Redis включает eviction политику. Если политика noeviction — начинаются ошибки OOM command not allowed. Если allkeys-lru или volatile-lru — данные молча удаляются.
redis_memory_used_bytes / redis_config_maxmemory > 0.9 Алерт на 90% — стандартная практика. Но важен и redis_mem_fragmentation_ratio: значение выше 1.5 означает, что Redis выделил у ОС в 1.5 раза больше памяти, чем реально использует — типичный след после массового удаления ключей. Память фрагментирована и не возвращается ОС.
Eviction и keyspace. redis_evicted_keys_total — монотонный счётчик. rate(redis_evicted_keys_total[5m]) > 0 означает активное вытеснение ключей прямо сейчас. Для cache это приемлемо, для session storage или queue — катастрофа.
Connections. redis_connected_clients vs redis_config_maxclients (по умолчанию 10000). Неожиданный рост connected clients при стабильной нагрузке — сигнал о connection leak в приложении. Приложения без connection pool открывают новые соединения и не закрывают старые.
Replication. redis_connected_slaves — количество подключённых реплик. redis_master_repl_offset и redis_slave_repl_offset на репликах — разница даёт replication lag в байтах. Метрика redis_repl_backlog_size определяет, насколько долго реплика может отставать до полного resync.
Сравнение политик eviction
| Политика | Поведение | Когда использовать |
|---|---|---|
| noeviction | Ошибка OOM при превышении maxmemory | Если потеря данных недопустима |
| allkeys-lru | Удаление наименее используемых ключей | Кэш с большим объёмом |
| volatile-lru | Удаление ключей с TTL | Кэш с TTL-ключами |
| allkeys-random | Случайное удаление | Равномерная нагрузка |
| volatile-ttl | Удаление ключей с ближайшим TTL | Устаревшие данные должны уйти первыми |
Пошаговый процесс настройки мониторинга Redis
- Оценка текущей инфраструктуры — определяем тип развёртывания (standalone, Sentinel, Cluster) и версию Redis.
- Установка redis_exporter — разворачиваем контейнер на узле Redis или отдельном сервере, настраиваем переменные окружения.
- Добавление конфигурации Prometheus — определяем target с метками для экспортера.
- Создание правил алертинга — описываем алерты на основе критических порогов.
- Импорт дашборда Grafana — используем стандартный ID
763и настраиваем под свои нужды. - Тестирование и запуск — проверяем сбор метрик, корректируем пороги алертов.
Алерты
groups:
- name: redis
rules:
- alert: RedisDown
expr: redis_up == 0
for: 1m
labels:
severity: critical
- alert: RedisHighMemoryUsage
expr: redis_memory_used_bytes / redis_config_maxmemory > 0.9
for: 5m
labels:
severity: warning
- alert: RedisEviction
expr: increase(redis_evicted_keys_total[5m]) > 0
for: 0m
labels:
severity: warning
annotations:
summary: "Redis evicts keys на {{ $labels.instance }}"
- alert: RedisReplicaMissing
expr: redis_connected_slaves < 1
for: 5m
labels:
severity: critical Дашборд в Grafana
Dashboard ID 763 (Redis Dashboard for Prometheus Redis Exporter) — стандартный вариант. Показывает memory, hits/misses ratio, commands per second, keyspace, replication status.
Hit ratio считается из redis_keyspace_hits_total и redis_keyspace_misses_total. Для правильного cache должен быть выше 95%. Падение hit ratio при стабильном трафике — обычно это следствие eviction или TTL, который стал слишком коротким.
Особенности Cluster
В Redis Cluster экспортер подключается к каждой ноде отдельно, или используется флаг --redis.addr со списком нод. Метрики redis_cluster_enabled, redis_cluster_slots_ok, redis_cluster_state доступны автоматически. Алерт на redis_cluster_slots_fail > 0 — обязательный для production кластеров.
Что входит в нашу услугу
- Анализ текущей конфигурации Redis — выявление узких мест.
- Деплой redis_exporter с учётом вашего окружения (Sentinel, Cluster).
- Настройка алертов на критичные метрики (память, eviction, репликация).
- Установка и настройка дашборда Grafana — визуализация всех метрик.
- Документация — описание всех настроек и инструкция по добавлению новых метрик.
- Обучение вашей команды — как интерпретировать метрики и реагировать на алерты.
Сроки и стоимость
Ориентировочные сроки: от 4 до 8 часов, в зависимости от сложности конфигурации. Стоимость рассчитывается индивидуально. Свяжитесь с нами для оценки вашего проекта.
О компании
Мы — команда DevOps-инженеров с опытом более 5 лет. Выполнили свыше 50 проектов по мониторингу инфраструктуры. Используем только проверенные решения и даём гарантию на все работы.
Закажите настройку мониторинга Redis уже сегодня и получите консультацию по оптимизации производительности. Получите консультацию — пишите нам.







