module Datadog::Contrib::MongoDB
MongoDB
module includes classes and functions to instrument MongoDB
clients
Constants
- DEFAULT_OPTIONS
- EXCLUDE_KEYS
- PLACEHOLDER
skipped keys are related to command names, since they are already extracted by the
query_builder
- SHOW_KEYS
Public Instance Methods
configuration()
click to toggle source
# File lib/ddtrace/contrib/mongodb/parsers.rb, line 64 def configuration Datadog.configuration[:mongo] end
quantization_options()
click to toggle source
# File lib/ddtrace/contrib/mongodb/parsers.rb, line 60 def quantization_options Datadog::Quantization::Hash.merge_options(DEFAULT_OPTIONS, configuration[:quantize]) end
quantize_statement(statement, skip = [])
click to toggle source
removes the values from the given query; this quantization recursively replace elements available in a given query, so that Arrays, Hashes and so on are compacted. It ensures a low cardinality so that it can be used as a Span
resource. @deprecated
# File lib/ddtrace/contrib/mongodb/parsers.rb, line 37 def quantize_statement(statement, skip = []) case statement when Hash statement.each_with_object({}) do |(key, value), quantized| quantized[key] = quantize_value(value, skip) unless skip.include?(key) end else quantize_value(statement, skip) end end
quantize_value(value, skip = [])
click to toggle source
@deprecated
# File lib/ddtrace/contrib/mongodb/parsers.rb, line 49 def quantize_value(value, skip = []) case value when Hash quantize_statement(value, skip) when Array quantize_value(value.first, skip) else PLACEHOLDER end end
query_builder(command_name, database_name, command)
click to toggle source
returns a formatted and normalized query
# File lib/ddtrace/contrib/mongodb/parsers.rb, line 17 def query_builder(command_name, database_name, command) # always exclude the command name options = Quantization::Hash.merge_options(quantization_options, exclude: [command_name.to_s]) # quantized statements keys are strings to avoid leaking Symbols in older Rubies # as Symbols are not GC'ed in Rubies prior to 2.2 base_info = Quantization::Hash.format({ 'operation' => command_name, 'database' => database_name, 'collection' => command.values.first }, options) base_info.merge(Quantization::Hash.format(command, options)) end