Sha256: d6d1b8b9b20112c8771e8ae6b09708483d8d978220d7e0918a4bab309713a0d3

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

module RorVsWild
  class Metrics
    UPDATE_INTERVAL_MS = 60_000 # One metric every minute

    attr_reader :cpu, :memory, :storage, :updated_at

    def initialize
      @cpu = RorVsWild::Metrics::Cpu.new
      @memory = RorVsWild::Metrics::Memory.new
      @storage = RorVsWild::Metrics::Storage.new
    end

    def update
      if staled?
        cpu.update
        memory.update
        storage.update
        @updated_at = RorVsWild.clock_milliseconds
      end
    end

    def staled?
      !updated_at || RorVsWild.clock_milliseconds - updated_at > UPDATE_INTERVAL_MS
    end

    def to_h
      {
        hostname: RorVsWild.agent.hostname,
        os: RorVsWild.agent.os_description,
        cpu_user: cpu.user,
        cpu_system: cpu.system,
        cpu_idle: cpu.idle,
        cpu_waiting: cpu.waiting,
        cpu_stolen: cpu.stolen,
        cpu_count: cpu.count,
        load_average: cpu.load_average,
        ram_total: memory.ram_total,
        ram_free: memory.ram_free,
        ram_used: memory.ram_used,
        ram_cached: memory.ram_cached,
        swap_total: memory.swap_total,
        swap_used: memory.swap_used,
        swap_free: memory.swap_free,
        storage_total: storage.total,
        storage_used: storage.used,
        storage_free: storage.free,
      }
    end
  end
end

require "rorvswild/metrics/cpu"
require "rorvswild/metrics/memory"
require "rorvswild/metrics/storage"

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rorvswild-1.5.17 lib/rorvswild/metrics.rb
rorvswild-1.5.16 lib/rorvswild/metrics.rb