Sha256: 4673b3fa3f55df24e3236d0efa7ef271d9196fbc2897df4d91a17f06b47766c8

Contents?: true

Size: 1023 Bytes

Versions: 4

Compression:

Stored size: 1023 Bytes

Contents

require "daemons"

module Sidewatch

  class Daemon

    attr_accessor :sidekiq
    attr_accessor :cloudwatch
    attr_accessor :interval

    def initialize(config = {})
      sidekiq_config = config.fetch(:sidekiq){ Hash.new }.symbolize_keys
      self.sidekiq = Sidewatch::Sidekiq.new(sidekiq_config)
      cloudwatch_config = config.fetch(:cloudwatch){ Hash.new }.symbolize_keys
      self.cloudwatch = Sidewatch::Cloudwatch.new(cloudwatch_config)
      self.interval = config.fetch(:interval){ 60 }
    end

    def run
      logger.info("Starting #{self.class}...")
      every(interval) do
        metrics = sidekiq.metrics
        logger.info(metrics)
        cloudwatch.send(metrics)
      end
    end

    private

    def every(interval, &block)
      loop do
        ts = Time.now
        block.call
        remaining = (ts + interval) - Time.now
        sleep remaining
      end
    rescue Interrupt
      logger.info("Interrupted; exiting.")
    end

    def logger
      Sidewatch.logger
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sidewatch-0.0.4 lib/sidewatch/daemon.rb
sidewatch-0.0.3 lib/sidewatch/daemon.rb
sidewatch-0.0.2 lib/sidewatch/daemon.rb
sidewatch-0.0.1 lib/sidewatch/daemon.rb