Мониторинг
Тема дорожной карты · Redis
Мониторинг Redis основывается на команде INFO, возвращающей категоризированную статистику: время работы сервера, использование памяти, CPU, коэффициенты попаданий/промахов в кэше, подключённые клиенты, лаг репликации и статус персистентности. Команда MONITOR транслирует каждую команду, обрабатываемую сервером, в реальном времени — это удобно для коротких отладочных сессий, но слишком шумно для непрерывного мониторинга в продакшне. SLOWLOG GET получает команды, превысившие пороговое значение в микросекундах из параметра slowlog-log-slower-than, помогая выявлять узкие места производительности. Для автоматизированного мониторинга redis-exporter (от Oliver006) предоставляет метрики INFO в формате, совместимом с Prometheus, что позволяет создавать Grafana-дашборды для отображения памяти Redis, connected_clients, instantaneous_ops_per_sec и смещения репликации. Сочетание INFO all, анализа медленных запросов и LATENCY HISTORY даёт полную картину состояния Redis в продакшн-средах.
Как это работает
Мониторинг использует INFO (server stats), MONITOR (live-поток команд — только для debug, дорого), SLOWLOG (лог медленных команд с порогом slowlog-log-slower-than), CLIENT LIST (текущие соединения), LATENCY-команды (встроенная диагностика latency). Внешнее: prometheus redis_exporter, RedisInsight (GUI), Grafana-дашборды. Ключевые метрики: hit ratio (keyspace_hits / (hits + misses)), evicted keys, memory fragmentation ratio, connected clients, replication lag.
Когда применять
redis_exporter — с первого дня; метрики крошечные, но спасают день, когда что-то идёт не так. Алерты: memory > 80% maxmemory (eviction storm близко), connected_clients > 80% maxclients, replication lag > 30s, падение hit ratio > 20% за 1h. SLOWLOG — для поиска дорогих команд (KEYS, HGETALL на большом хеше, ZRANGEBYSCORE на огромном sorted set). Никогда не запускайте MONITOR в production больше секунд.
Типичные ошибки
Ловушки Мониторинг: MONITOR оставлен работать и валит throughput; alerts только на абсолютные метрики (нет rate() — пропускаете тренды); игнор memory fragmentation (mem_fragmentation_ratio > 1.5 — RAM тратится впустую — рестарт или defrag); нет разделения latency cache-miss от total request latency на дашбордах.