class Atatus::Metrics::CpuMemSet
@api private
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
Calls superclass method
# File lib/atatus/metrics/cpu_mem_set.rb, line 62 def initialize(config) @vmset_disabled = false super @sampler = sampler_for_platform(Metrics.platform) read! # set @previous on boot end
Public Instance Methods
collect()
click to toggle source
Calls superclass method
# File lib/atatus/metrics/cpu_mem_set.rb, line 72 def collect read! super end
Private Instance Methods
calculate_deltas(current, previous)
click to toggle source
# File lib/atatus/metrics/cpu_mem_set.rb, line 143 def calculate_deltas(current, previous) system_cpu_total = current.system_cpu_total - previous.system_cpu_total system_cpu_usage = current.system_cpu_usage - previous.system_cpu_usage process_cpu_usage = current.process_cpu_usage - previous.process_cpu_usage cpu_usage_pct = system_cpu_usage.to_f / system_cpu_total cpu_process_pct = process_cpu_usage.to_f / system_cpu_total [cpu_usage_pct, cpu_process_pct] end
read!()
click to toggle source
# File lib/atatus/metrics/cpu_mem_set.rb, line 97 def read! return if disabled? current = @sampler.sample unless @previous @previous = current return end cpu_usage_pct, cpu_process_pct = calculate_deltas(current, @previous) gauge(:'system.cpu.total.norm.pct').value = cpu_usage_pct gauge(:'system.memory.actual.free').value = current.system_memory_free gauge(:'system.memory.total').value = current.system_memory_total gauge(:'system.process.cpu.total.norm.pct').value = cpu_process_pct gauge(:'system.process.memory.size').value = current.process_memory_size gauge(:'system.process.memory.rss.bytes').value = current.process_memory_rss * current.page_size @previous = current return if vmset_disabled? stat = GC.stat gauge(:'ruby.gc.count').value = stat[:count] gauge(:'ruby.threads').value = Thread.list.count gauge(:'ruby.heap.slots.live').value = stat[:heap_live_slots] gauge(:'ruby.heap.slots.free').value = stat[:heap_free_slots] gauge(:'ruby.heap.allocations.total').value = stat[:total_allocated_objects] return unless GC::Profiler.enabled? @total_time ||= 0 @total_time += GC::Profiler.total_time GC::Profiler.clear gauge(:'ruby.gc.time').value = @total_time rescue TypeError => e error 'VM metrics encountered error: %s', e debug('Backtrace:') { e.backtrace.join("\n") } vmset_disable! end
sampler_for_platform(platform)
click to toggle source
# File lib/atatus/metrics/cpu_mem_set.rb, line 87 def sampler_for_platform(platform) case platform when :linux then Linux.new else warn "Unsupported platform '#{platform}' - Disabling system metrics" disable! nil end end
vmset_disable!()
click to toggle source
# File lib/atatus/metrics/cpu_mem_set.rb, line 79 def vmset_disable! @vmset_disabled = true end
vmset_disabled?()
click to toggle source
# File lib/atatus/metrics/cpu_mem_set.rb, line 83 def vmset_disabled? @vmset_disabled end