Class: Judoscale::Shoryuken::MetricsCollector
- Inherits:
-
JobMetricsCollector
- Object
- JobMetricsCollector
- Judoscale::Shoryuken::MetricsCollector
- Defined in:
- lib/judoscale/shoryuken/metrics_collector.rb
Constant Summary collapse
- SQS_QUEUE_DEPTH_ATTRIBUTE =
"ApproximateNumberOfMessages"
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.adapter_config ⇒ Object
11 12 13 |
# File 'lib/judoscale/shoryuken/metrics_collector.rb', line 11 def self.adapter_config Judoscale::Config.instance.shoryuken end |
Instance Method Details
#collect ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/judoscale/shoryuken/metrics_collector.rb', line 15 def collect metrics = [] time = Time.now.utc self.queues |= ::Shoryuken.ungrouped_queues queues.each do |queue_name| queue = ::Shoryuken::Client.queues(queue_name) # Reach out to SQS client directly to fetch the queue attribute we need to report. # Shoryuken has a private `queue_attributes` API to fetch all attributes, this call mimics that. sqs_queue_attributes = ::Shoryuken.sqs_client .get_queue_attributes(queue_url: queue.url, attribute_names: [SQS_QUEUE_DEPTH_ATTRIBUTE]) depth = sqs_queue_attributes.attributes[SQS_QUEUE_DEPTH_ATTRIBUTE] metrics.push Metric.new(:qd, depth, time, queue_name) end log_collection(metrics) metrics end |