Module: OneApm::Agent::Datastore
- Defined in:
- lib/one_apm/agent/datastore.rb,
lib/one_apm/agent/datastore/mongo.rb,
lib/one_apm/agent/datastore/metric_helper.rb,
lib/one_apm/agent/datastore/mongo/obfuscator.rb,
lib/one_apm/agent/datastore/mongo/command_formatter.rb,
lib/one_apm/agent/datastore/mongo/metric_translator.rb,
lib/one_apm/agent/datastore/mongo/statement_formatter.rb
Defined Under Namespace
Modules: MetricHelper, Mongo
Constant Summary collapse
- LOCALHOST =
'localhost'.freeze
- LOCAL_127 =
'127.0.0.1'.freeze
Class Method Summary collapse
- .notice_sql(query, scoped_metric, elapsed) ⇒ Object
- .notice_statement(statement, elapsed) ⇒ Object
- .oneapm_product(*product) ⇒ Object
- .trace(clazz, method_name, product, operation = method_name) ⇒ Object
- .wrap(product, operation, collection = nil, callback = nil) ⇒ Object
Class Method Details
.notice_sql(query, scoped_metric, elapsed) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/one_apm/agent/datastore.rb', line 59 def self.notice_sql(query, scoped_metric, elapsed) agent = OneApm::Manager.agent agent.transaction_sampler.notice_sql(query, nil, elapsed) agent.sql_sampler.notice_sql(query, scoped_metric, nil, elapsed) nil end |
.notice_statement(statement, elapsed) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/one_apm/agent/datastore.rb', line 66 def self.notice_statement(statement, elapsed) return unless OneApm::Agent::Database.should_record_sql? agent = OneApm::Manager.agent agent.transaction_sampler.notice_nosql_statement(statement, elapsed) nil end |
.oneapm_product(*product) ⇒ Object
12 13 14 15 |
# File 'lib/one_apm/agent/datastore.rb', line 12 def self.oneapm_product *product return product[0] if product[1].nil? product.compact.join(":").gsub(LOCALHOST, LOCAL_127) end |
.trace(clazz, method_name, product, operation = method_name) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/one_apm/agent/datastore.rb', line 17 def self.trace(clazz, method_name, product, operation = method_name) clazz.class_eval do method_name_without_oneapm = "#{method_name}_without_oneapm" if OneApm::Helper.instance_methods_include?(clazz, method_name) && !OneApm::Helper.instance_methods_include?(clazz, method_name_without_oneapm) visibility = OneApm::Helper.instance_method_visibility(clazz, method_name) alias_method method_name_without_oneapm, method_name define_method(method_name) do |*args, &blk| metrics = MetricHelper.metrics_for(product, operation) OneApm::Support::MethodTracer.trace_execution_scoped(metrics) do send(method_name_without_oneapm, *args, &blk) end end send visibility, method_name send visibility, method_name_without_oneapm end end end |
.wrap(product, operation, collection = nil, callback = nil) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/one_apm/agent/datastore.rb', line 41 def self.wrap(product, operation, collection = nil, callback = nil) return yield unless operation metrics = MetricHelper.metrics_for(product, operation, collection) scoped_metric = metrics.first OneApm::Support::MethodTracer.trace_execution_scoped(metrics) do t0 = Time.now begin result = yield ensure if callback elapsed_time = (Time.now - t0).to_f callback.call(result, scoped_metric, elapsed_time) end end end end |