Module: OneApm::Agent::Datastore::Mongo::CommandFormatter
- Defined in:
- lib/one_apm/agent/datastore/mongo/command_formatter.rb
Constant Summary collapse
- OA_OBFUSCATE_KEYS =
[ 'filter', 'query', ].freeze
- OA_BLACKLISTED_KEYS =
[ 'deletes', 'documents', 'updates' ].freeze
- OA_OBFUSCATE_NOSQL_KEYS =
[ 'filter', 'query', 'deletes', 'documents', 'updates' ].freeze
Class Method Summary collapse
- .format(event, status) ⇒ Object
- .format_sql(event, status) ⇒ Object
- .obfuscate(statement) ⇒ Object
- .obfuscate_json(value) ⇒ Object
Class Method Details
.format(event, status) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/one_apm/agent/datastore/mongo/command_formatter.rb', line 16 def self.format(event, status) return nil unless OneApm::Manager.config[:'mongo.capture_queries'] result = { :operation => event.command_name, :database => event.database_name, :collection => event.command.values.first, :command => event.command, :status => status } event.command.each do |key, value| next if OA_BLACKLISTED_KEYS.include?(key) if OA_OBFUSCATE_KEYS.include?(key) = obfuscate(value) result[key] = if else result[key] = value end end result end |
.format_sql(event, status) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/one_apm/agent/datastore/mongo/command_formatter.rb', line 38 def self.format_sql(event, status) return nil unless OneApm::Manager.config[:'mongo.capture_queries'] header = "db.#{event.command.values.first}.#{event.command_name}" obfuscate_sql = [] event.command.each do |key, value| if OA_OBFUSCATE_NOSQL_KEYS.include?(key) if value.is_a?(Array) value.each do |val| obfuscate_sql << "(#{obfuscate_json(val)})" end else obfuscate_sql << "(#{obfuscate_json(value)})" end end end header.concat(obfuscate_sql.join(", ")) end |
.obfuscate(statement) ⇒ Object
61 62 63 64 |
# File 'lib/one_apm/agent/datastore/mongo/command_formatter.rb', line 61 def self.obfuscate(statement) statement = Obfuscator.obfuscate_statement(statement) if OneApm::Manager.config[:'mongo.obfuscate_queries'] statement end |
.obfuscate_json(value) ⇒ Object
56 57 58 59 |
# File 'lib/one_apm/agent/datastore/mongo/command_formatter.rb', line 56 def self.obfuscate_json value obfuscate_value = obfuscate(value) obfuscate_value.to_s.gsub('=>', ':').gsub('"', '') if obfuscate_value end |