module OneApm::Agent::Datastore::MetricHelper

Constants

OA_ALL
OA_ALL_OTHER
OA_ALL_WEB
OA_DEFAULT_PRODUCT_NAME
OA_OTHER
OA_OTHER_ROLLUP_METRIC
OA_ROLLUP_METRIC
OA_WEB_ROLLUP_METRIC

Public Class Methods

all_suffix() click to toggle source
# File lib/one_apm/agent/datastore/metric_helper.rb, line 64
def self.all_suffix
  if OneApm::Transaction.recording_web_transaction?
    OA_ALL_WEB
  else
    OA_ALL_OTHER
  end
end
metrics_for(product, operation, collection = nil) click to toggle source
# File lib/one_apm/agent/datastore/metric_helper.rb, line 72
def self.metrics_for(product, operation, collection = nil)
  if overrides = overridden_operation_and_collection
    operation, collection = overrides
  end

  suffix = all_suffix

  # Order of these metrics matters--the first metric in the list will
  # be treated as the scoped metric in a bunch of different cases.
  metrics = Array.new
  unless collection
    metrics.push(
      operation_metric_for(product, operation),
      operation_product_rollup(product),
      operation_all(product)
    )
  else
    metrics.push(
      statement_metric_for(product, collection, operation),
      statement_action_metric_for(product,operation),
      statement_all_metric_for(product),
      statement_all(product)
    )
  end
  metrics.push(
      product_suffixed_rollup(product, suffix),
      product_rollup(product),
      suffixed_rollup(suffix),
      OA_ROLLUP_METRIC
  )
  metrics
end
metrics_from_sql(product, sql) click to toggle source
# File lib/one_apm/agent/datastore/metric_helper.rb, line 105
def self.metrics_from_sql(product, sql)
  operation = OneApm::Agent::Database.parse_operation_from_query(sql) || OA_OTHER
  metrics_for(product, operation)
end
operation_all(product) click to toggle source

Datastore/operation/NoSqlType

# File lib/one_apm/agent/datastore/metric_helper.rb, line 28
def self.operation_all(product)
  "Datastore/operation/#{product.split(':')[0]}"
end
operation_metric_for(product, operation) click to toggle source

Datastore/operation/NoSqlType:10.128.6.240:27017/update

# File lib/one_apm/agent/datastore/metric_helper.rb, line 18
def self.operation_metric_for(product, operation)
  "Datastore/operation/#{product}/#{operation}"
end
operation_product_rollup(product) click to toggle source

Datastore/operation/NoSqlType:10.128.6.240:27017/all

# File lib/one_apm/agent/datastore/metric_helper.rb, line 23
def self.operation_product_rollup(product)
  "Datastore/operation/#{product}/all"
end
overridden_operation_and_collection() click to toggle source

Allow Transaction#with_database_metric_name to override our collection and operation

# File lib/one_apm/agent/datastore/metric_helper.rb, line 112
def self.overridden_operation_and_collection
  state = OneApm::TransactionState.tl_get
  txn   = state.current_transaction
  txn ? txn.instrumentation_state[:datastore_override] : nil
end
product_rollup(product) click to toggle source
# File lib/one_apm/agent/datastore/metric_helper.rb, line 36
def self.product_rollup(product)
  "Datastore/#{product}/all"
end
product_suffixed_rollup(product, suffix) click to toggle source
# File lib/one_apm/agent/datastore/metric_helper.rb, line 32
def self.product_suffixed_rollup(product, suffix)
  "Datastore/#{product}/#{suffix}"
end
statement_action_metric_for(product, operation) click to toggle source

Datastore/statement/NoSqlType:10.128.6.240:27017/insert

# File lib/one_apm/agent/datastore/metric_helper.rb, line 50
def self.statement_action_metric_for(product, operation)
  "Datastore/statement/#{product}/#{operation}"
end
statement_all(product) click to toggle source

Datastore/statement/NoSqlType

# File lib/one_apm/agent/datastore/metric_helper.rb, line 60
def self.statement_all(product)
  "Datastore/statement/#{product.split(':')[0]}"
end
statement_all_metric_for(product) click to toggle source

Datastore/statement/NoSqlType:10.128.6.240:27017/all

# File lib/one_apm/agent/datastore/metric_helper.rb, line 55
def self.statement_all_metric_for(product)
  "Datastore/statement/#{product}/all"
end
statement_metric_for(product, collection, operation) click to toggle source

Datastore/statement/NoSqlType:10.128.6.240:27017/book/insert

# File lib/one_apm/agent/datastore/metric_helper.rb, line 45
def self.statement_metric_for(product, collection, operation)
  "Datastore/statement/#{product}/#{collection}/#{operation}"
end
suffixed_rollup(suffix) click to toggle source
# File lib/one_apm/agent/datastore/metric_helper.rb, line 40
def self.suffixed_rollup(suffix)
  "Datastore/#{suffix}"
end