Sha256: b98fc47516ed5657c135720ba3d7e461c33e2bf7c37e74e89534f78b92f75547

Contents?: true

Size: 1.32 KB

Versions: 38

Compression:

Stored size: 1.32 KB

Contents

module Honeybadger
  module Util
    class Stats
      HAS_MEM = File.exists?("/proc/meminfo")
      HAS_LOAD = File.exists?("/proc/loadavg")

      class << self
        def all
          { :mem => memory, :load => load }
        end

        # From https://github.com/bloopletech/webstats/blob/master/server/data_providers/mem_info.rb
        def memory
          out = {}
          if HAS_MEM && (meminfo = run_meminfo)
            out[:total], out[:free], out[:buffers], out[:cached] = meminfo[0..4].map { |l| l =~ /^.*?\: +(.*?) kB$/; ($1.to_i / 1024.0).to_f }
            out[:free_total] = out[:free] + out[:buffers] + out[:cached]
          end
          out
        end

        # From https://github.com/bloopletech/webstats/blob/master/server/data_providers/cpu_info.rb
        def load
          out = {}
          if HAS_LOAD && (loadavg = run_loadavg)
            out[:one], out[:five], out[:fifteen] = loadavg.split(' ', 4).map(&:to_f)
          end
          out
        end

        private

        def run_meminfo
          run { IO.readlines("/proc/meminfo") }
        end

        def run_loadavg
          run { IO.read("/proc/loadavg") }
        end

        def run
          yield
        rescue Errno::ENFILE
          # Catch issues like 'Too many open files in system'
          nil
        end
      end
    end
  end
end

Version data entries

38 entries across 38 versions & 2 rubygems

Version Path
honeybadger-3.1.2 lib/honeybadger/util/stats.rb
honeybadger-3.1.1 lib/honeybadger/util/stats.rb
honeybadger-3.1.0 lib/honeybadger/util/stats.rb
honeybadger-3.0.2 lib/honeybadger/util/stats.rb
honeybadger-3.0.1 lib/honeybadger/util/stats.rb
honeybadger-3.0.0 lib/honeybadger/util/stats.rb
honeybadger-3.0.0.beta6 lib/honeybadger/util/stats.rb
honeybadger-3.0.0.beta5 lib/honeybadger/util/stats.rb
honeybadger-3.0.0.beta4 lib/honeybadger/util/stats.rb
honeybadger-3.0.0.beta3 lib/honeybadger/util/stats.rb
honeybadger-3.0.0.beta2 lib/honeybadger/util/stats.rb
honeybadger-2.7.2 lib/honeybadger/util/stats.rb
honeybadger-3.0.0.beta1 lib/honeybadger/util/stats.rb
honeybadger-2.7.1 lib/honeybadger/util/stats.rb
honeybadger-2.7.0 lib/honeybadger/util/stats.rb
honeybadger-2.6.1 lib/honeybadger/util/stats.rb
honeybadger-2.6.0 lib/honeybadger/util/stats.rb
honeybadger-2.5.3 lib/honeybadger/util/stats.rb
honeybadger-2.5.2 lib/honeybadger/util/stats.rb
honeybadger-2.5.1 lib/honeybadger/util/stats.rb