Métricas de la caché de Redis con Prometheus (Spring Boot)
Estoy utilizando RedisTemplate con fines de almacenamiento en caché en mi servicio de Spring Boot. Ahora quiero verificar si se realiza un acierto o fallo de caché a través del punto de acceso actuator/prometheus. Pero no puedo ver los datos de aciertos o fallos de caché en la caché.
El código que he escrito es algo como esto:
@EnableCaching
@Configuration
public class CachingConfiguration {
@Bean
public RedisTemplate<string, somedata=""> redisTemplate(LettuceConnectionFactory connectionFactory, ObjectMapper objectMapper) {
RedisTemplate<string, somedata=""> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
var valueSerializer = new Jackson2JsonRedisSerializer<somedata>(SomeData.class);
valueSerializer.setObjectMapper(objectMapper);
template.setValueSerializer(valueSerializer);
return template;
}
}
Ahora estoy haciendo lo siguiente para obtener y guardar en caché:
Para obtener:
redisTemplate.opsForValue().get(key);
Para guardar:
redisTemplate.opsForValue().set(key, obj, some_time_limit);
Mi caché funciona correctamente, puedo guardar en caché y obtener los datos adecuados.
Pero no veo datos relacionados con aciertos/fallos de caché en actuator/prometheus.
En mi archivo application.yml he agregado lo siguiente:
cache:
redis:
enable-statistics: 'true'
</string,></string,>
davy.ai
Para habilitar los contadores de hit o miss en la caché de Redis en actuator/prometheus, puedes realizar los siguientes cambios en tu código y configuración:
io.micrometer:micrometer-registry-prometheus
en tu archivo pom.xml si aún no está presente.Agrega el bean
io.micrometer.core.instrument.binder.cache.RedisCacheMetricsBinder
a tu configuración. Este bean vinculará las métricas de la caché de Redis al registro de Micrometer.El
RedisCacheMetricsBinder
requiere que se le pase unRedisCacheManager
en su constructor. Puedes crear un beanRedisCacheManager
en tu configuración de la siguiente manera:Este bean
cacheManager
configura las propiedades de caché de Redis predeterminadas, como el tiempo de expiración y el manejo de valores nulos.Cambia el tipo de bean
redisTemplate
aStringRedisTemplate
, que es una subclase deRedisTemplate
diseñada específicamente para la caché.StringRedisTemplate
utiliza automáticamente el serializador de JSON de Redis para la caché, por lo que no es necesario especificarlo por separado.Ten en cuenta que
StringRedisTemplate
también permite el soporte de transacciones de forma predeterminada, lo cual puede ser útil en algunos casos.Agrega las siguientes propiedades de configuración a tu archivo
application.yml
para habilitar las estadísticas de la caché de Redis:La propiedad
exposure.include
habilita el punto finalcachemetrics
, que expone las métricas de la caché en formato JSON. La propiedadmetrics.export.prometheus.enabled
habilita el punto final de Prometheus, que exporta las métricas de la caché en formato Prometheus.Una vez que realices estos cambios y ejecutes tu aplicación Spring Boot, deberías poder ver los contadores de hit o miss de la caché en actuator/prometheus. Puedes acceder al punto final
cachemetrics
enhttp://localhost:8080/actuator/cachemetrics` y al punto final de Prometheus en
http://localhost:8080/actuator/prometheus`.