class Resque::CloudWatch::Metrics::Metric
Constants
- DEFAULT_METRIC_NAMES
Public Class Methods
create(namespace, skip: [], extra: [])
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 14 def create(namespace, skip: [], extra: []) @@mutex.synchronize do Resque.redis.namespace = namespace new( Time.now, namespace, Resque.info, !skip.include?(:pending_per_queue) && current_queue_sizes, get_previous_processed(namespace), skip: skip, extra: extra, ).tap do |metric| set_previous_processed(namespace, metric.processed) end end end
new(time, namespace, info, queue_sizes, previous_processed, skip: [], extra: [])
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 47 def initialize(time, namespace, info, queue_sizes, previous_processed, skip: [], extra: []) @time = time @namespace = namespace @info = info @queue_sizes = queue_sizes @previous_processed = previous_processed @skip = skip @extra = extra end
Private Class Methods
current_queue_sizes()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 32 def current_queue_sizes Resque.queues.map { |name| [name, Resque.size(name)] } end
get_previous_processed(namespace)
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 36 def get_previous_processed(namespace) @previous_processed ||= {} @previous_processed[namespace] end
set_previous_processed(namespace, previous_processed)
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 41 def set_previous_processed(namespace, previous_processed) @previous_processed ||= {} @previous_processed[namespace] = previous_processed end
Public Instance Methods
failed()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 59 def failed; @info[:failed]; end
not_working()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 64 def not_working [0, workers - working].max end
pending()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 57 def pending; @info[:pending]; end
processed()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 58 def processed; @info[:processed]; end
processing()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 68 def processing incremental_size_of_processed + working end
queues()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 60 def queues; @info[:queues]; end
to_cloudwatch_metric_data()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 72 def to_cloudwatch_metric_data metric_data = metric_names.map do |key| build_cloudwatch_metric_datum(camelize(key.to_s), public_send(key)) end if @queue_sizes metric_data.concat( @queue_sizes.map do |name, size| build_cloudwatch_metric_datum('Pending', size, Queue: name) end ) end metric_data end
workers()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 61 def workers; @info[:workers]; end
working()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 62 def working; @info[:working]; end
Private Instance Methods
build_cloudwatch_metric_datum(metric_name, value, dimensions = {})
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 94 def build_cloudwatch_metric_datum(metric_name, value, dimensions = {}) { metric_name: metric_name, dimensions: default_dimensions.merge(dimensions).to_cloudwatch, timestamp: @time, value: value, unit: 'Count', } end
camelize(string)
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 116 def camelize(string) string.gsub(/(?:^|_)(.)/) { $1.upcase } end
default_dimensions()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 104 def default_dimensions Dimensions.new(Namespace: @namespace.to_s) end
incremental_size_of_processed()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 108 def incremental_size_of_processed if @previous_processed.nil? 0 else [0, processed - @previous_processed].max end end
metric_names()
click to toggle source
# File lib/resque/cloudwatch/metrics/metric.rb, line 90 def metric_names DEFAULT_METRIC_NAMES - @skip + @extra end