Module: NSA::Statsd::Subscriber
- Included in:
- Informant
- Defined in:
- lib/nsa/statsd/subscriber.rb
Constant Summary collapse
- EXPECTED_RESPONDABLE_METHODS =
%i( count decrement gauge increment set time timing ).freeze
Instance Method Summary collapse
- #__send_event_to_statsd(backend, name, start, finish, id, payload) ⇒ Object
- #backend_valid?(backend) ⇒ Boolean
- #statsd_subscribe(backend) ⇒ Object
Instance Method Details
#__send_event_to_statsd(backend, name, start, finish, id, payload) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/nsa/statsd/subscriber.rb', line 19 def __send_event_to_statsd(backend, name, start, finish, id, payload) action = name.to_s.split(".").first || :count key_name = payload[:key] sample_rate = payload.fetch(:sample_rate, 1) case action.to_sym when :count, :timing, :set, :gauge then value = payload.fetch(:value) { 1 } backend.__send__(action, key_name, value, sample_rate) when :increment, :decrement then backend.__send__(action, key_name, sample_rate) end end |
#backend_valid?(backend) ⇒ Boolean
34 35 36 37 38 |
# File 'lib/nsa/statsd/subscriber.rb', line 34 def backend_valid?(backend) EXPECTED_RESPONDABLE_METHODS.all? do |method_name| backend.respond_to?(method_name) end end |
#statsd_subscribe(backend) ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/nsa/statsd/subscriber.rb', line 9 def statsd_subscribe(backend) unless backend_valid?(backend) fail "Backend must respond to the following methods:\n\t#{EXPECTED_RESPONDABLE_METHODS.join(", ")}" end ::ActiveSupport::Notifications.subscribe(/.statsd$/) do |name, start, finish, id, payload| __send_event_to_statsd(backend, name, start, finish, id, payload) end end |