class RestFtpDaemon::Metrics

Public Class Methods

sample() click to toggle source
# File lib/rest-ftp-daemon/metrics.rb, line 4
def self.sample
  # Prepare external deps
  mem = GetProcessMem.new

  # Build final value
  return  {
    system: {
      uptime:           (Time.now - Conf.app_started).round(1),
      memory:           mem.bytes.to_i,
      threads:          Thread.list.count,
      },
    jobs_by_status:     RestFtpDaemon::JobQueue.instance.jobs_by_status,
    rate_by_pool:       RestFtpDaemon::JobQueue.instance.rate_by(:pool),
    rate_by_targethost: RestFtpDaemon::JobQueue.instance.rate_by(:targethost),
    queued_by_pool:     RestFtpDaemon::JobQueue.instance.queued_by_pool,
    workers_by_status:  self.workers_count_by_status,
    }
end

Private Class Methods

workers_count_by_status() click to toggle source

Collect: workers by status

# File lib/rest-ftp-daemon/metrics.rb, line 26
def self.workers_count_by_status
  # Init
  counts = {}

  WorkerPool.instance.worker_variables.group_by do |wid, vars|
    vars[:status]
  end.each do |status, workers|
    counts[status] = workers.count
  end

  # Return count
  counts
end