Class CacheMetricsCollector


  • public class CacheMetricsCollector
    extends io.prometheus.client.Collector
    Collect metrics from Caffeine's com.github.benmanes.caffeine.cache.Cache.

    
    
     // Note that `recordStats()` is required to gather non-zero statistics
     Cache<String, String> cache = Caffeine.newBuilder().recordStats().build();
     CacheMetricsCollector cacheMetrics = new CacheMetricsCollector().register();
     cacheMetrics.addCache("mycache", cache);
    
     
    Exposed metrics are labeled with the provided cache name. With the example above, sample metric names would be:
         caffeine_cache_hit_total{cache="mycache"} 10.0
         caffeine_cache_miss_total{cache="mycache"} 3.0
         caffeine_cache_requests_total{cache="mycache"} 13.0
         caffeine_cache_eviction_total{cache="mycache"} 1.0
         caffeine_cache_estimated_size{cache="mycache"} 5.0
     
    Additionally if the cache includes a loader, the following metrics would be provided:
         caffeine_cache_load_failure_total{cache="mycache"} 2.0
         caffeine_cache_loads_total{cache="mycache"} 7.0
         caffeine_cache_load_duration_seconds_count{cache="mycache"} 7.0
         caffeine_cache_load_duration_seconds_sum{cache="mycache"} 0.0034
     
    • Nested Class Summary

      • Nested classes/interfaces inherited from class io.prometheus.client.Collector

        io.prometheus.client.Collector.Describable, io.prometheus.client.Collector.MetricFamilySamples, io.prometheus.client.Collector.Type
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected ConcurrentMap<String,​com.github.benmanes.caffeine.cache.Cache> children  
      • Fields inherited from class io.prometheus.client.Collector

        MILLISECONDS_PER_SECOND, NANOSECONDS_PER_SECOND
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addCache​(String cacheName, com.github.benmanes.caffeine.cache.AsyncCache cache)
      Add or replace the cache with the given name.
      void addCache​(String cacheName, com.github.benmanes.caffeine.cache.Cache cache)
      Add or replace the cache with the given name.
      void clear()
      Remove all caches.
      List<io.prometheus.client.Collector.MetricFamilySamples> collect()  
      com.github.benmanes.caffeine.cache.Cache removeCache​(String cacheName)
      Remove the cache with the given name.
      • Methods inherited from class io.prometheus.client.Collector

        checkMetricLabelName, checkMetricName, doubleToGoString, register, register, sanitizeMetricName
    • Method Detail

      • addCache

        public void addCache​(String cacheName,
                             com.github.benmanes.caffeine.cache.Cache cache)
        Add or replace the cache with the given name.

        Any references any previous cache with this name is invalidated.

        Parameters:
        cacheName - The name of the cache, will be the metrics label value
        cache - The cache being monitored
      • addCache

        public void addCache​(String cacheName,
                             com.github.benmanes.caffeine.cache.AsyncCache cache)
        Add or replace the cache with the given name.

        Any references any previous cache with this name is invalidated.

        Parameters:
        cacheName - The name of the cache, will be the metrics label value
        cache - The cache being monitored
      • removeCache

        public com.github.benmanes.caffeine.cache.Cache removeCache​(String cacheName)
        Remove the cache with the given name.

        Any references to the cache are invalidated.

        Parameters:
        cacheName - cache to be removed
      • clear

        public void clear()
        Remove all caches.

        Any references to all caches are invalidated.

      • collect

        public List<io.prometheus.client.Collector.MetricFamilySamples> collect()
        Specified by:
        collect in class io.prometheus.client.Collector