Sha256: 25649b368a9048a26c7e8a7970a4d19881af82242661958a788c517caaaac1f2

Contents?: true

Size: 1.39 KB

Versions: 6

Compression:

Stored size: 1.39 KB

Contents

require 'prometheus/client'

module Startback
  module Caching
    class Prometheus

      def initialize
        @cache_hit_counter = cache_counter('hit')
        @cache_outdated_counter = cache_counter('outdated')
        @cache_miss_counter = cache_counter('miss')
        @cache_fail_counter = cache_counter('fail')
      end

      def cache_hit(entity_cache, *args, &bl)
        @cache_hit_counter.increment(labels: {
          entity_cache: entity_cache.class.name,
        })
      end

      def cache_outdated(entity_cache, *args, &bl)
        @cache_outdated_counter.increment(labels: {
          entity_cache: entity_cache.class.name,
        })
      end

      def cache_miss(entity_cache, *args, &bl)
        @cache_miss_counter.increment(labels: {
          entity_cache: entity_cache.class.name,
        })
      end

      def cache_fail(entity_cache, *args, &bl)
        @cache_fail_counter.increment(labels: {
          entity_cache: entity_cache.class.name,
        })
      end

    private

      def cache_counter(what)
        name = "entity_cache_#{what}".to_sym
        ::Prometheus::Client::Counter.new(
          name,
          docstring: "A counter of EntityCache #{what}",
          labels: [:entity_cache],
        ).tap do |counter|
          ::Prometheus::Client.registry.register(counter)
        end
      end

    end # class Prometheus
  end # module Caching
end # module Startback

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
startback-1.0.3 lib/startback/caching/prometheus.rb
startback-1.0.2 lib/startback/caching/prometheus.rb
startback-1.0.1 lib/startback/caching/prometheus.rb
startback-1.0.0 lib/startback/caching/prometheus.rb
startback-0.19.4 lib/startback/caching/prometheus.rb
startback-0.19.3 lib/startback/caching/prometheus.rb