class GraphQL::Tracing::DataDogTrace::DatadogMonitor
Attributes
Public Class Methods
# File lib/graphql/tracing/data_dog_trace.rb, line 27 def initialize(set_transaction_name:, service: nil, tracer: nil, **_rest) super if tracer.nil? tracer = defined?(Datadog::Tracing) ? Datadog::Tracing : Datadog.tracer end @tracer = tracer @service_name = service @has_prepare_span = @trace.respond_to?(:prepare_span) end
Calls superclass method
Public Instance Methods
# File lib/graphql/tracing/data_dog_trace.rb, line 39 def instrument(keyword, object) trace_key = name_for(keyword, object) @tracer.trace(trace_key, service: @service_name, type: 'custom') do |span| span.set_tag('component', 'graphql') op_name = keyword.respond_to?(:name) ? keyword.name : keyword.to_s span.set_tag('operation', op_name) if keyword == :execute operations = object.queries.map(&:selected_operation_name).join(', ') first_query = object.queries.first resource = if operations.empty? fallback_transaction_name(first_query && first_query.context) else operations end span.resource = resource if resource span.set_tag("selected_operation_name", first_query.selected_operation_name) span.set_tag("selected_operation_type", first_query.selected_operation&.operation_type) span.set_tag("query_string", first_query.query_string) end if @has_prepare_span @trace.prepare_span(keyword, object, span) end yield end end