Настройка Redis мониторинга через Prometheus (redis_exporter)

Redis может долго работать без видимых проблем, пока внезапный eviction или ошибка загрузки не остановит приложение. Мы настраиваем мониторинг Redis через Prometheus и redis_exporter, чтобы вы видели критические метрики и получали алерты до того, как проблема затронет пользователей. Наша команда реализует проект под ключ — от аудита до настройки дашбордов и уведомлений, обеспечивая стабильную работу и последующую поддержку.
Часто задаваемые вопросы

Настройка 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

  1. Оценка текущей инфраструктуры — определяем тип развёртывания (standalone, Sentinel, Cluster) и версию Redis.
  2. Установка redis_exporter — разворачиваем контейнер на узле Redis или отдельном сервере, настраиваем переменные окружения.
  3. Добавление конфигурации Prometheus — определяем target с метками для экспортера.
  4. Создание правил алертинга — описываем алерты на основе критических порогов.
  5. Импорт дашборда Grafana — используем стандартный ID 763 и настраиваем под свои нужды.
  6. Тестирование и запуск — проверяем сбор метрик, корректируем пороги алертов.

Алерты

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 уже сегодня и получите консультацию по оптимизации производительности. Получите консультацию — пишите нам.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1374
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142