Module: Gruf::StackdriverTrace

Defined in:
lib/gruf/stackdriver_trace.rb,
lib/gruf/stackdriver_trace/label.rb,
lib/gruf/stackdriver_trace/version.rb,
lib/gruf/stackdriver_trace/client_interceptor.rb,
lib/gruf/stackdriver_trace/server_interceptor.rb

Defined Under Namespace

Modules: Label Classes: ClientInterceptor, ServerInterceptor

Constant Summary collapse

AGENT_NAME =
"gruf-stackdriver-trace #{Gruf::StackdriverTrace::VERSION}".freeze
HEADER_KEY =
'x-trace-context'.freeze
VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.configObject



20
21
22
23
24
25
26
27
28
# File 'lib/gruf/stackdriver_trace.rb', line 20

def self.config
  @config ||= {
      service: nil,
      sampled: true,
      capture_stack: true,
      sampler: nil,
      span_id_generator: nil
  }
end

.configurationObject



53
54
55
# File 'lib/gruf/stackdriver_trace.rb', line 53

def self.configuration
  Google::Cloud::Trace.configure
end

.configure {|config| ... } ⇒ Object

Yields:



16
17
18
# File 'lib/gruf/stackdriver_trace.rb', line 16

def self.configure
  yield config
end

.init_default_configObject



45
46
47
48
49
50
51
# File 'lib/gruf/stackdriver_trace.rb', line 45

def self.init_default_config
  configuration.project_id ||= Google::Cloud::Trace.default_project_id
  configuration.credentials ||= Google::Cloud.configure.credentials
  configuration.capture_stack = config.fetch(:capture_stack, true)
  configuration.sampler = config.fetch(:sampler, nil)
  configuration.span_id_generator = config.fetch(:span_id_generator, nil)
end

.serviceObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/gruf/stackdriver_trace.rb', line 30

def self.service
  @service ||= begin
    init_default_config

    return config[:service] if config[:service]
    return nil unless configuration.project_id

    tracer = Google::Cloud::Trace.new(
        project_id: configuration.project_id,
        credentials: configuration.credentials
    )
    Google::Cloud::Trace::AsyncReporter.new(tracer.service)
  end
end