Supervisión de Redis Con Prometheus y Grafana obtengo métricas fiables sobre la memoria, la latencia, la tasa de comandos, la replicación y la eficiencia de la caché, lo que me permite garantizar el rendimiento y la estabilidad de una instancia desde el principio. Para ello, utilizo un exportador al que Prometheus consulta periódicamente, y analizo los datos en los paneles de Grafana para detectar rápidamente tendencias, umbrales y anomalías.
Puntos centrales
Voy a resumir los datos clave para que puedas planificar la implementación con seguridad. Un exportador proporciona los datos de Redis en formato Prometheus. Prometheus los recopila a intervalos fijos. Grafana muestra gráficos claros a partir de ellos. Añado un sistema de alertas para que los problemas no pasen desapercibidos.
- Exportador: Proporcionar métricas de Redis en formato Prometheus
- Prometeo: Seleccionar intervalos de rastreo, comprobar objetivos
- Grafana: Importar paneles de control, configurar colores y umbrales
- Métricas: Supervisar la memoria, la latencia, la tasa de instrucciones y la tasa de aciertos de la caché
- Alerta: Analizar las tendencias, evitar el ruido
Resumen de la configuración: configuración de Exporter, Prometheus y Grafana
Empiezo con el Exportador, ya que proporciona las métricas que Prometheus entiende. A continuación, añado el objetivo en Prometheus y elijo un intervalo de recopilación adecuado. Por último, importo a Grafana un panel de control de Redis ya conocido y adapto los paneles a mi entorno. Para empezar rápidamente, me ayuda una guía probada Pila Grafana-Prometheus, que ya incluye funciones básicas de integración y visualización. Así puedo disponer en poco tiempo de un sistema de monitorización coherente, sin renunciar a detalles importantes.
Instalación del exportador de Redis
Voy a crear un redis_exporter Junto a la instancia, compruebo primero localmente si se puede acceder a las métricas. Para las instancias protegidas, defino un nombre de usuario y una contraseña para que el exportador pueda iniciar sesión correctamente. A continuación, compruebo si redis_up devuelve el valor 1 y si redis_uptime_in_seconds es un valor plausible. Me aseguro de que el exportador solo disponga de los permisos necesarios. De este modo, garantizo que los datos de medición estén disponibles de forma fiable y segura.
Opciones de exportación y estimación de la carga
Sopeso cuidadosamente cuáles Opciones de Collector Las activo. Las métricas de Commandstats, Keyspace y Replication vienen por defecto. Las comprobaciones adicionales, como los escaneos de claves o las comprobaciones basadas en patrones, las activo de forma selectiva para que no generen una carga innecesaria durante el funcionamiento. En las pruebas de carga, mido los costes del exportador: la CPU y la memoria del propio exportador, la carga de red adicional generada por los scrapes y la carga de CPU adicional en Redis debida a las consultas INFO. Como valor orientativo, calculo entre 15 y 30 segundos para los scrapes y, con conjuntos de colectores habituales, con < 1–2% de sobrecarga en una instancia productiva. Si la sobrecarga aumenta, reduzco la profundidad del colector o alargo los intervalos.
También presto atención a Cardinalidad de las etiquetas: Las funciones que generan muchas series temporales por base de datos, por comando o por rol, las dimensiono de forma deliberada. Con cientos de instancias, las series temporales se multiplican rápidamente. Establezco límites estrictos: nada de etiquetas dinámicas (p. ej., ID de cliente) ni métricas por clave en Prometheus. Para análisis puntuales de claves, utilizo mis propias mediciones puntuales o herramientas que no se ejecutan en el bucle principal de Prometheus.
Configuración de Prometheus: intervalos de recopilación y etiquetas
Elijo el Intervalo de modo que la carga y el nivel de detalle se ajusten entre sí. Para muchas cargas de trabajo bastan 30 segundos; para sistemas muy dinámicos, establezco 15 segundos. Asigno etiquetas únicas a cada instancia, como «cluster», «role» o «env», para que las consultas y las alertas se puedan asignar claramente. Superviso los objetivos a través del estado en Prometheus, ya que allí puedo detectar las interrupciones de inmediato. Utilizo sistemáticamente funciones de tasa para calcular métricas significativas a partir de los contadores por segundo.
Normas de registro, conservación y tendencias a largo plazo
Defino Normas de grabación para las derivaciones que se necesitan con frecuencia, de modo que los paneles de control y las alertas funcionen de forma rápida y estable. Algunos ejemplos son la tasa de comandos, el rendimiento de la red, la tasa de fragmentación y la tasa de aciertos de la caché. De este modo, reduzco las costosas consultas en tiempo de ejecución y mantengo los paneles reactivos. En cuanto a la capacidad, preveo una cantidad suficiente de Retención: A corto plazo (por ejemplo, entre 15 y 30 días), conservo datos de alta resolución; a largo plazo, guardo métricas agregadas o utilizo el submuestreo. Las tendencias trimestrales me ayudan a evaluar de forma fiable los efectos del crecimiento y la estacionalidad.
Documento mi Convenciones de nomenclatura y etiquetado y añado «external_labels» por cada instancia de Prometheus. De este modo, puedo asignar correctamente las métricas incluso tras una migración o en configuraciones federadas. Para entornos especialmente volátiles, utilizo Service Discovery con etiquetas estables y accedo a los destinos a través de objetos de servicio en lugar de direcciones IP de pods.
Paneles de control de Grafana: paneles, colores, variables
Creo paneles de control de tal manera que Tendencias que se ven a primera vista. Destaco claramente los colores y los umbrales de alerta, sobre todo en lo que respecta a la memoria, la latencia y la tasa de instrucciones. Las variables para clústeres, roles y espacios de nombres me facilitan cambiar de una instancia a otra. Las anotaciones identifican implementaciones o reversiones, lo que me permite evaluar los picos de métricas en su contexto temporal. Cada mosaico responde a una pregunta concreta, en lugar de limitarse a mostrar cifras.
Cuadros de mando para los SLO y análisis operativos detallados
Hago una distinción consciente entre Resumen- y Cuadros de mando con función de desglose. El resumen incluye métricas relacionadas con los SLO: tasa de comandos, latencia p95/p99 (siempre que sea medible), tasa de aciertos en caché, expulsiones, estado de la replicación y errores. Para el análisis utilizo desgloses con estadísticas de comandos, rendimiento de red, clientes bloqueados, porcentajes de CPU y estructura del espacio de claves de la base de datos (claves, claves con TTL, avg_ttl). Las variables para env, cluster, role, instance y db me permiten cambiar de contexto sin duplicar paneles. Defino códigos de color uniformes (p. ej., verde = correcto, amarillo = precaución, rojo = crítico), para que los equipos comprendan sin necesidad de explicaciones qué acciones hay que tomar.
Comprender las métricas clave y contextualizarlas correctamente
Me centro en la Cifras clave, que permiten identificar las causas. Los valores de memoria me indican hasta qué punto estoy trabajando al límite. Las tasas de comandos y la latencia apuntan a una sobrecarga o a patrones ineficientes. Las conexiones y la replicación revelan si los clientes se bloquean o si los nodos se desincronizan. La tasa de aciertos de la caché me indica si la caché es lo suficientemente grande y si la vida útil de los datos es la adecuada.
| Métricas | Ejemplo de PromQL | Significado | Valor de referencia/señal |
|---|---|---|---|
| redis_up | redis_up == 1 | El exportador se conecta a Redis | El 0 indica un fallo |
| redis_memory_used_bytes | media(redis_memory_used_bytes) por (instancia) | Necesidad real de memoria del montón | > 80%: el límite es crítico |
| redis_memory_used_rss_bytes | (rss / usado) > 1,5 | Fragmentación de la memoria | Cotiente persistentemente alto = es necesario tomar medidas |
| redis_commands_total | rate(redis_commands_total[5m]) | Comandos por segundo | Fuerte aumento + latencia = cuello de botella |
| redis_connected_clients | max(redis_connected_clients) por (instancia) | Conexiones simultáneas | Es peligroso estar cerca del límite de maxclients |
| Aciertos/Equivocaciones | sum(rate(redis_keyspace_hits_total[5m])) / (sum(rate(redis_keyspace_hits_total[5m])) + sum(rate(redis_keyspace_misses_total[5m]))) | Eficiencia de la caché | < 0,9 indica una configuración incorrecta |
Si es necesario, añadiré métricas a Replicación, por ejemplo, si el esclavo se ha quedado atascado en la sincronización o si el estado del enlace cambia. En las configuraciones de clúster, analizo cada rol por separado para comparar las rutas de lectura y escritura. Siempre analizo las anomalías en el contexto de las implementaciones y los picos de tráfico. Solo las tendencias me proporcionan conclusiones fiables; los picos aislados, por el contrario, rara vez lo hacen. De este modo, tomo decisiones racionales en lugar de basarme en corazonadas.
La persistencia, los desahucios y la red, en el punto de mira
Superviso Persistencia (RDB/AOF) por separado: estado del último almacenamiento en segundo plano, duración de la última ejecución, cambios desde la última instantánea y si AOF está activo. Las ejecuciones de persistencia frecuentes o prolongadas indican cuellos de botella en E/S o recursos insuficientes. Si la latencia aumenta al mismo tiempo, compruebo la saturación de E/S, la compresión y el espacio de almacenamiento.
En Desahucios No doy la alarma solo cuando se alcanzan cifras absolutas, sino cuando se produce una tasa que, junto con una tasa de aciertos decreciente o una latencia creciente, indica una falta de memoria. También evalúo Claves caducadas De: El hecho de que haya muchas caducidades no tiene por qué ser malo, pero los saltos repentinos indican que hay lotes de TTL incorrectos o patrones de eliminación irregulares.
Para el Red Utilizo los bytes de entrada y salida por segundo para comprender los requisitos de ancho de banda y las escalas. Un volumen de salida en fuerte crecimiento con una tasa de comandos constante indica respuestas más grandes (por ejemplo, HSCAN/SMEMBERS) o cargas útiles sin comprimir. Además, observo las conexiones rechazadas y los clientes bloqueados: ambos son una señal clara de que o bien los hilos o bien las rutas de E/S están saturados.
Cómo medir correctamente la replicación y la alta disponibilidad
Mido Lag como diferencia entre los desplazamientos de replicación o en función del tiempo transcurrido desde el último contacto de E/S satisfactorio con el maestro. Una diferencia elevada y persistente indica que los esclavos van con retraso y que las lecturas en ellos pueden estar desactualizadas. El Estado del enlace Y compruebo las sincronizaciones completas y parciales en curso con mis propios paneles y umbrales de alarma. En configuraciones de clúster o Sentinel, realizo un seguimiento de los cambios de rol, el número de réplicas conectadas y el volumen de trabajo pendiente. Algunos indicadores importantes son el aumento de las resincronizaciones parciales (enlaces inestables) y las resincronizaciones completas repetidas (problemas de E/S o de red).
Estrategia de alertas con PromQL
Diseño las alarmas de tal manera que Tendencias y no limitarse a señalar los picos. Una memoria superior a 80% durante 10 minutos se activa antes que un pico de 30 segundos. Una tasa de aciertos de caché inferior a 90% durante 15 minutos indica que los TTL son incorrectos o que hay poca memoria. Combino los errores de conexión y el aumento de la latencia como indicio de sobrecarga. Reduzco el ruido recurrente mediante intervalos «for», suavizado y umbrales adecuados.
Diseño de alarmas: ejemplos prácticos y correlación
- Disponibilidad: redis_up == 0 (inmediatamente), con el añadido de los errores de exportación y de rastreo, para poder distinguir los problemas de red de los fallos de Redis.
- Memoria: used_bytes/maxmemory > 0,8 durante 10 m y un índice de expulsiones que aumenta paralelamente: dar prioridad al escalado y al ajuste del TTL.
- Replicación: Si se ha superado el umbral durante 5-10 m o se han producido resincronizaciones completas repetidas en un plazo de 30 m: comprueba la red y el tamaño de la cola de espera.
- Clientes: Porcentaje de clientes bloqueados > X% respecto al total de clientes durante 5 minutos: busca operaciones BLPOP/BLOCK de gran envergadura o scripts de Lua lentos.
- Persistencia: el último estado de BGSAVE/AOF ha fallado o la duración ha superado el valor normal + 50% durante 10 m: comprueba el subsistema de E/S.
Correlaciono las alertas mediante etiquetas comunes (cluster, role, env) y añado Enlaces a los manuales de procedimientos en los mensajes de alarma. De este modo, el equipo sabe de inmediato qué comprobaciones y comandos debe ejecutar a continuación. Para los entornos de staging/canary, establezco prioridades más bajas, para que la carga de trabajo del servicio de guardia siga siendo manejable.
Planificación de la capacidad y optimización en la práctica
Planifico la capacidad haciendo lo siguiente: Tendencias Evalúo conjuntamente la memoria, los comandos y la latencia. Si el volumen de datos crece de forma constante mientras que la tasa de aciertos se mantiene estable, aumento la memoria o ajusto los TTL. En caso de fragmentación, reduzco la sobrecarga mediante asignadores restrictivos o reescritura selectiva. Elijo la política de expulsión y el valor de maxmemory en función de la carga de trabajo, por ejemplo, «allkeys-lfu» para claves de uso frecuente. Para la planificación a largo plazo, me resulta útil un análisis fundamentado Control del rendimiento, que muestra claramente el patrón de carga de trabajo.
Manuales de procedimientos, pruebas y simulacros de caos
Documento I Runbooks En cuanto a las alertas más importantes: ¿qué registros y comandos compruebo? ¿Qué métricas evalúo en primer lugar? ¿Quién escala el problema y cuándo? Practico regularmente escenarios de conmutación por error y reparación. En pruebas controladas, simulo fluctuaciones en la red, limitación de E/S, escasez de memoria y conexiones rechazadas. Verifico que se activen las alertas, que los paneles de control muestren los patrones y que el equipo pueda reaccionar en el tiempo previsto.
Además, considero que Valores de referencia fijos para cada entorno: frecuencia típica de comandos, memoria media, duración habitual de la persistencia, retraso normal en la replicación. De este modo, detecto más rápidamente las desviaciones respecto al rango de referencia y puedo priorizar de forma fundamentada las medidas de optimización.
Integrar correctamente los entornos de Kubernetes y en la nube
Utilizo el exportador como Sidecar o como una implementación independiente y describo los objetivos mediante ServiceMonitor. Establezco etiquetas como «cluster» y «role» de forma coherente para que los paneles de control filtren correctamente. Para los puntos finales de los clústeres, elijo un destino de recopilación centralizado para evitar mediciones duplicadas. La detección automática me ahorra trabajo de mantenimiento con los pods dinámicos. Los volúmenes persistentes y las solicitudes adecuadas evitan la escasez de almacenamiento en el momento menos oportuno.
Cardinalidad, detección de servicios y capacidad multicliente
Diseño las reglas de Discovery de tal manera que solo parámetros relevantes Se recopilan. Filtro mediante selectores de etiquetas y utilizo espacios de nombres específicos para los componentes de infraestructura. Para configuraciones multitenant, mantengo una separación clara entre las etiquetas «env», «team» y «service». La cardinalidad se mantiene bajo control limitando el número de valores dinámicos de las etiquetas y activando las llamadas con alta variabilidad (por ejemplo, por base de datos por instancia) solo donde sean realmente necesarias.
Estoy planeando Recursos Para Exporter y Prometheus, adopto un enfoque conservador: solicitudes y límites ajustados al volumen máximo de recopilación, PDB para garantizar una alta disponibilidad y afinidad de nodos para las rutas de datos sensibles a la latencia. Si es necesario, escalo Prometheus horizontalmente (sharding) y aligero la carga mediante reglas de grabación e intervalos de scraping más largos para las métricas poco dinámicas.
Seguridad y acceso a las métricas
Hago una copia de seguridad de Redis mediante TLS y la autenticación, para que nadie ajeno pueda acceder a las métricas o a los datos. El exportador solo dispone de los permisos necesarios y no tiene acceso a comandos sensibles. Las políticas de red limitan el acceso a Prometheus y al puerto del exportador. Guardo los secretos por separado y los renuevo periódicamente. De este modo, la infraestructura de medición sigue siendo fiable y se minimizan las vulnerabilidades.
Cumplimiento normativo y limpieza de datos en las métricas
Me aseguro de que no haya ningún datos personales o que los contenidos sensibles acaben en etiquetas o métricas. Los paneles y las variables contienen exclusivamente identificadores técnicos. Para los datos de depuración, que son temporalmente más sensibles, defino un periodo de retención breve y derechos de acceso estrictamente limitados. Utilizo los derechos de carpeta y de equipo en Grafana para que solo las personas autorizadas puedan ver los paneles operativos.
Errores comunes y solución de problemas
Compruebo primero redis_up, si faltan valores en el panel de control. Si el valor sigue siendo 0, a menudo es porque la cadena de conexión o el cortafuegos no son correctos. Si el valor de «rss» difiere mucho del de «used», es probable que haya fragmentación o que se trate de un efecto secundario del sistema operativo. Si la tasa de aciertos es baja, compruebo los TTL, el tamaño de la clave y los patrones de acceso. Para un análisis rápido de las causas, me ayuda el Guía de RedisInsight, que muestra las consultas y las teclas de acceso rápido.
Si se observan bloqueos prolongados (clientes bloqueados), busco scripts largos, transacciones Multi/Exec de gran tamaño o llamadas a SCAN/SMEMBERS excesivamente grandes. En conexiones rechazadas compruebo el número máximo de clientes, los límites de red y si hay demasiadas conexiones de larga duración que consumen recursos. En Problemas de replicación Analizo los «link-flaps», el volumen de trabajo pendiente, la pérdida de paquetes y las operaciones de E/S del disco. Los errores de persistencia suelen indicar que el espacio de almacenamiento está lleno, que hay una limitación de E/S o que se producen fallos en los «forks».
Notas específicas de la versión y ajustes
Tengo en cuenta Versiones de Redis En cuanto a la interpretación: las versiones más recientes incorporan rutas de E/S optimizadas, políticas predeterminadas modificadas y métricas adicionales. Tras las actualizaciones, compruebo si los paneles de control siguen mostrando todos los campos y si los valores básicos (por ejemplo, el consumo de CPU) han variado. Cuando TLS está activo, preveo un consumo de CPU ligeramente superior y superviso si la latencia y el rendimiento se mantienen estables. Cuando hay un alto porcentaje de Lua o scripts, tengo en cuenta que las operaciones largas en un solo subproceso pueden provocar picos en las métricas, lo cual se detecta por un aumento de los bloqueos y la latencia en momentos cercanos a la ejecución de los scripts.
Paso a paso: desde la primera métrica hasta el panel de control
Configuraré el exportador y probaré el Punto final-Respuesta local. A continuación, introduzco el objetivo en Prometheus y compruebo el estado. Después, importo un panel de control y compruebo si los comandos, la memoria y los clientes parecen correctos. A continuación, configuro alertas para la memoria, la tasa de aciertos de la caché, la latencia y la replicación. Por último, documento los umbrales y los manuales de actuación para que el equipo pueda actuar con rapidez en caso de incidencias.
Resumen
Construyo Supervisión de Redis Con Exporter, Prometheus y Grafana, de tal forma que veo las causas en lugar de los síntomas. Las métricas sobre memoria, tasa de comandos, conexiones, replicación y tasa de aciertos de caché me proporcionan las pistas decisivas. Los paneles de control claros y las alertas bien diseñadas permiten detectar picos de carga, errores de configuración y cuellos de botella antes de que los usuarios se den cuenta. Las etiquetas bien definidas, los intervalos adecuados y los accesos seguros garantizan un funcionamiento fiable. Quien siga estos pasos obtendrá una visión permanente del rendimiento y la estabilidad de sus instancias de Redis y tomará mejores decisiones en materia de arquitectura y capacidad.


