Sha256: 9601f04c1a7145694419bd34b6bb9154df37db25d9d8bebc633a684eb5ac1db1

Contents?: true

Size: 1.06 KB

Versions: 28

Compression:

Stored size: 1.06 KB

Contents

require 'honeybadger/instrumentation_helper'

module Honeybadger
  class PumaPlugin
    include Honeybadger::InstrumentationHelper

    STATS_KEYS = %i(pool_capacity max_threads requests_count backlog running).freeze

    ::Puma::Plugin.create do
      def start(launcher)
        puma_plugin = ::Honeybadger::PumaPlugin.new
        in_background do
          loop do
            puma_plugin.record
            sleep 1
          end
        end
      end
    end

    def record
      metric_source 'puma'

      stats = ::Puma.stats rescue {}
      stats = stats.is_a?(Hash) ? stats : JSON.parse(stats, symbolize_names: true)

      if stats[:worker_status].is_a?(Array)
        stats[:worker_status].each do |worker_data|
          context = { worker: worker_data[:index] }
          record_puma_stats(worker_data[:last_status], context)
        end
      else
        record_puma_stats(stats)
      end
    end

    def record_puma_stats(stats, context={})
      STATS_KEYS.each do |stat|
        gauge stat, context, ->{ stats[stat] } if stats[stat]
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
honeybadger-5.22.0 lib/puma/plugin/honeybadger.rb
honeybadger-5.21.0 lib/puma/plugin/honeybadger.rb
honeybadger-5.20.1 lib/puma/plugin/honeybadger.rb
honeybadger-5.20.0 lib/puma/plugin/honeybadger.rb
honeybadger-5.19.2 lib/puma/plugin/honeybadger.rb
honeybadger-5.19.1 lib/puma/plugin/honeybadger.rb
honeybadger-5.19.0 lib/puma/plugin/honeybadger.rb
honeybadger-5.18.0 lib/puma/plugin/honeybadger.rb
honeybadger-5.17.0 lib/puma/plugin/honeybadger.rb
honeybadger-5.16.0 lib/puma/plugin/honeybadger.rb
honeybadger-5.15.6 lib/puma/plugin/honeybadger.rb
honeybadger-5.15.5 lib/puma/plugin/honeybadger.rb
honeybadger-5.15.4 lib/puma/plugin/honeybadger.rb
honeybadger-5.15.3 lib/puma/plugin/honeybadger.rb
honeybadger-5.15.2 lib/puma/plugin/honeybadger.rb
honeybadger-5.15.1 lib/puma/plugin/honeybadger.rb
honeybadger-5.15.0 lib/puma/plugin/honeybadger.rb
honeybadger-5.14.2 lib/puma/plugin/honeybadger.rb
honeybadger-5.14.1 lib/puma/plugin/honeybadger.rb
honeybadger-5.14.0 lib/puma/plugin/honeybadger.rb