Module: Datadog::Contrib::Redis::TracedRedisClient

Defined in:
lib/ddtrace/contrib/redis/core.rb

Overview

Datadog APM Redis integration.

Instance Method Summary collapse

Instance Method Details

#call(*args, &block) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ddtrace/contrib/redis/core.rb', line 33

def call(*args, &block)
  pin = Datadog::Pin.get_from(self)
  return super(*args, &block) unless pin

  response = nil
  pin.tracer.trace('redis.command') do |span|
    span.service = pin.service
    span.span_type = Datadog::Ext::Redis::TYPE
    span.resource = Datadog::Contrib::Redis::Quantize.format_command_args(*args)
    span.set_tag(Datadog::Ext::Redis::RAWCMD, span.resource)
    Datadog::Contrib::Redis::Tags.set_common_tags(self, span)

    response = super(*args, &block)
  end

  response
end

#call_pipeline(*args, &block) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/ddtrace/contrib/redis/core.rb', line 51

def call_pipeline(*args, &block)
  pin = Datadog::Pin.get_from(self)
  return super(*args, &block) unless pin

  response = nil
  pin.tracer.trace('redis.command') do |span|
    span.service = pin.service
    span.span_type = Datadog::Ext::Redis::TYPE
    commands = args[0].commands.map { |c| Datadog::Contrib::Redis::Quantize.format_command_args(c) }
    span.resource = commands.join("\n")
    span.set_tag(Datadog::Ext::Redis::RAWCMD, span.resource)
    Datadog::Contrib::Redis::Tags.set_common_tags(self, span)

    response = super(*args, &block)
  end

  response
end

#initialize(*args) ⇒ Object



27
28
29
30
31
# File 'lib/ddtrace/contrib/redis/core.rb', line 27

def initialize(*args)
  pin = Datadog::Pin.new(SERVICE, app: 'redis', app_type: Datadog::Ext::AppTypes::DB)
  pin.onto(self)
  super(*args)
end