Class: Flipper::Instrumentation::MetriksSubscriber
- Inherits:
-
Object
- Object
- Flipper::Instrumentation::MetriksSubscriber
- Defined in:
- lib/flipper/instrumentation/metriks_subscriber.rb
Class Method Summary collapse
-
.call(name, start, ending, transaction_id, payload) ⇒ Object
Public: Use this as the subscribed block.
Instance Method Summary collapse
-
#initialize(name, start, ending, transaction_id, payload) ⇒ MetriksSubscriber
constructor
Private: Initializes a new event processing instance.
- #strip_trailing_question_mark(operation) ⇒ Object
- #update ⇒ Object
- #update_adapter_operation_metrics ⇒ Object
- #update_feature_operation_metrics ⇒ Object
- #update_gate_operation_metrics ⇒ Object
Constructor Details
#initialize(name, start, ending, transaction_id, payload) ⇒ MetriksSubscriber
Private: Initializes a new event processing instance.
16 17 18 19 20 21 22 23 |
# File 'lib/flipper/instrumentation/metriks_subscriber.rb', line 16 def initialize(name, start, ending, transaction_id, payload) @name = name @start = start @ending = ending @payload = payload @duration = ending - start @transaction_id = transaction_id end |
Class Method Details
.call(name, start, ending, transaction_id, payload) ⇒ Object
Public: Use this as the subscribed block.
11 12 13 |
# File 'lib/flipper/instrumentation/metriks_subscriber.rb', line 11 def self.call(name, start, ending, transaction_id, payload) new(name, start, ending, transaction_id, payload).update end |
Instance Method Details
#strip_trailing_question_mark(operation) ⇒ Object
87 88 89 |
# File 'lib/flipper/instrumentation/metriks_subscriber.rb', line 87 def strip_trailing_question_mark(operation) operation.to_s.gsub(/\?$/, '') end |
#update ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/flipper/instrumentation/metriks_subscriber.rb', line 25 def update operation_type = @name.split('.').first method_name = "update_#{operation_type}_metrics" if respond_to?(method_name) send(method_name) else puts "Could not update #{operation_type} metrics as MetriksSubscriber did not respond to `#{method_name}`" end end |
#update_adapter_operation_metrics ⇒ Object
56 57 58 59 60 61 62 63 64 |
# File 'lib/flipper/instrumentation/metriks_subscriber.rb', line 56 def update_adapter_operation_metrics adapter_name = @payload[:adapter_name] operation = @payload[:operation] result = @payload[:result] value = @payload[:value] key = @payload[:key] Metriks.timer("flipper.adapter.#{adapter_name}.#{operation}").update(@duration) end |
#update_feature_operation_metrics ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/flipper/instrumentation/metriks_subscriber.rb', line 36 def update_feature_operation_metrics feature_name = @payload[:feature_name] gate_name = @payload[:gate_name] operation = strip_trailing_question_mark(@payload[:operation]) result = @payload[:result] thing = @payload[:thing] Metriks.timer("flipper.feature_operation.#{operation}").update(@duration) if @payload[:operation] == :enabled? metric_name = if result "flipper.feature.#{feature_name}.enabled" else "flipper.feature.#{feature_name}.disabled" end Metriks.meter(metric_name).mark end end |
#update_gate_operation_metrics ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/flipper/instrumentation/metriks_subscriber.rb', line 66 def update_gate_operation_metrics feature_name = @payload[:feature_name] gate_name = @payload[:gate_name] operation = strip_trailing_question_mark(@payload[:operation]) result = @payload[:result] thing = @payload[:thing] Metriks.timer("flipper.gate_operation.#{gate_name}.#{operation}").update(@duration) Metriks.timer("flipper.feature.#{feature_name}.gate_operation.#{gate_name}.#{operation}").update(@duration) if @payload[:operation] == :open? metric_name = if result "flipper.feature.#{feature_name}.gate.#{gate_name}.open" else "flipper.feature.#{feature_name}.gate.#{gate_name}.closed" end Metriks.meter(metric_name).mark end end |