class Atatus::Spies::ElasticsearchSpy
@api private
Constants
- NAME_FORMAT
- SUBTYPE
- TYPE
Public Class Methods
sanitizer()
click to toggle source
# File lib/atatus/spies/elasticsearch.rb, line 29 def self.sanitizer @sanitizer ||= Atatus::Transport::Filters::HashSanitizer.new end
Public Instance Methods
install()
click to toggle source
# File lib/atatus/spies/elasticsearch.rb, line 33 def install if defined?(::Elasticsearch) && defined?(::Elasticsearch::Transport) && defined?(::Elasticsearch::Transport::Client) ::Elasticsearch::Transport::Client.class_eval do alias perform_request_without_apm perform_request def perform_request(method, path, *args, &block) unless Atatus.current_transaction return perform_request_without_apm(method, path, *args, &block) end name = format(NAME_FORMAT, method, path) statement = [] statement << { params: args&.[](0) } if Atatus.agent.config.capture_elasticsearch_queries unless args[1].nil? || args[1].empty? statement << { body: Atatus::Spies::ElasticsearchSpy.sanitizer.strip_from!(args[1]) } end end context = Span::Context.new( db: { statement: statement.reduce({}, :merge).to_json }, destination: { name: SUBTYPE, resource: SUBTYPE, type: TYPE } ) Atatus.with_span( name, TYPE, subtype: SUBTYPE, context: context ) { perform_request_without_apm(method, path, *args, &block) } end end end end
perform_request(method, path, *args, &block)
click to toggle source
# File lib/atatus/spies/elasticsearch.rb, line 41 def perform_request(method, path, *args, &block) unless Atatus.current_transaction return perform_request_without_apm(method, path, *args, &block) end name = format(NAME_FORMAT, method, path) statement = [] statement << { params: args&.[](0) } if Atatus.agent.config.capture_elasticsearch_queries unless args[1].nil? || args[1].empty? statement << { body: Atatus::Spies::ElasticsearchSpy.sanitizer.strip_from!(args[1]) } end end context = Span::Context.new( db: { statement: statement.reduce({}, :merge).to_json }, destination: { name: SUBTYPE, resource: SUBTYPE, type: TYPE } ) Atatus.with_span( name, TYPE, subtype: SUBTYPE, context: context ) { perform_request_without_apm(method, path, *args, &block) } end