Module: QueueMetricTracker
- Included in:
- WorkerRoulette::BatchSize, WorkerRoulette::QueueDepth, WorkerRoulette::QueueLatency::Tradesman
- Defined in:
- lib/worker_roulette/stat_calculator.rb,
lib/worker_roulette/queue_metric_tracker.rb
Defined Under Namespace
Classes: StatCalculator
Class Attribute Summary collapse
-
.calculators ⇒ Object
readonly
Returns the value of attribute calculators.
-
.config ⇒ Object
readonly
Returns the value of attribute config.
Class Method Summary collapse
- .configure(options) ⇒ Object
- .included(tracker) ⇒ Object
- .ip_address(server_name) ⇒ Object
- .track_all(options) ⇒ Object
Instance Method Summary collapse
- #calculate_stats(stat_name, value) ⇒ Object
- #calculator(stat_name) ⇒ Object
- #channel(sender) ⇒ Object
- #config ⇒ Object
- #enabled? ⇒ Boolean
- #granularity ⇒ Object
- #message(label, channel, value) ⇒ Object
- #tracker_send(msg) ⇒ Object
Class Attribute Details
.calculators ⇒ Object (readonly)
Returns the value of attribute calculators.
38 39 40 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 38 def calculators @calculators end |
.config ⇒ Object (readonly)
Returns the value of attribute config.
38 39 40 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 38 def config @config end |
Class Method Details
.configure(options) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 39 def configure() @calculators = {} @config = { server_name: [:server_name], granularity: [:granularity], metric_host: { host_ip: ip_address([:metric_host]), host_port: [:metric_host_port] } } @config.merge!({ metrics: [:metrics] }) if [:metrics] end |
.included(tracker) ⇒ Object
54 55 56 57 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 54 def included(tracker) @trackers ||= [] @trackers << tracker end |
.ip_address(server_name) ⇒ Object
66 67 68 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 66 def ip_address(server_name) server_name == "localhost" ? "127.0.0.1" : Resolv.new.getaddress(server_name).to_s end |
.track_all(options) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 59 def track_all() @trackers.each do |tracker_class| tracker = tracker_class.new tracker.track(*) if tracker.respond_to?(:track) end end |
Instance Method Details
#calculate_stats(stat_name, value) ⇒ Object
10 11 12 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 10 def calculate_stats(stat_name, value) calculator(stat_name).add(value) end |
#calculator(stat_name) ⇒ Object
14 15 16 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 14 def calculator(stat_name) QueueMetricTracker.calculators[stat_name] ||= QueueMetricTracker::StatCalculator.new(granularity) end |
#channel(sender) ⇒ Object
18 19 20 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 18 def channel(sender) (sender.split ":").first end |
#config ⇒ Object
22 23 24 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 22 def config QueueMetricTracker.config end |
#enabled? ⇒ Boolean
30 31 32 33 34 35 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 30 def enabled? return false unless config && config[:metrics] klass = self.class.to_s.split("::").last.underscore.to_sym config[:metrics][klass] rescue false end |
#granularity ⇒ Object
6 7 8 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 6 def granularity config[:granularity] || 100 end |
#message(label, channel, value) ⇒ Object
26 27 28 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 26 def (label, channel, value) "#{label},server_name=#{config[:server_name]},channel=#{channel} value=#{value} #{(Time.now.to_f * 1_000_000_000).to_i}" end |
#tracker_send(msg) ⇒ Object
2 3 4 |
# File 'lib/worker_roulette/queue_metric_tracker.rb', line 2 def tracker_send(msg) UDPSocket.new.send(msg, 0, config[:metric_host][:host_ip], config[:metric_host][:host_port]) end |