class OpenCensus::Trace::Exporters::Datadog

Constants

DEFAULT_SERVICE

Public Class Methods

log() click to toggle source
# File lib/opencensus/trace/exporters/datadog.rb, line 15
def self.log
  unless defined? @logger
    @logger = ::Logger.new(STDOUT)
    @logger.level = ::Logger::WARN
  end
  @logger
end
new(options = {}) click to toggle source
# File lib/opencensus/trace/exporters/datadog.rb, line 23
def initialize(options = {})
  # create HTTP client for sending spans do Datadog Agent
  agent_hostname = options.fetch(:agent_hostname, nil)
  port = options.fetch(:port, nil)
  @transport = Transport.new(agent_hostname, port)

  # worker parameters
  @max_buffer_size = options.fetch(:buffer_size, 1000)
  @flush_interval = options.fetch(:flush_interval, 1)

  # traces metadata
  @service_name = options.fetch(:service, DEFAULT_SERVICE)

  # each processes have one worker thread
  @mutex_after_fork = Mutex.new
  @pid = nil
  @worker = nil
end

Public Instance Methods

export(spans) click to toggle source
# File lib/opencensus/trace/exporters/datadog.rb, line 53
def export(spans)
  return nil if spans.nil? || spans.empty?

  # create worker thread if not exist in this process
  pid = Process.pid
  if pid != @pid
    @mutex_after_fork.synchronize do
      start() if pid != @pid
    end
  end

  spans.each do |span|
    @worker.enqueue(span)
  end
end
shutdown!() click to toggle source
# File lib/opencensus/trace/exporters/datadog.rb, line 48
def shutdown!
  return if @worker.nil?
  @worker.stop
end
start() click to toggle source
# File lib/opencensus/trace/exporters/datadog.rb, line 42
def start
  @pid = Process.pid
  @worker = Worker.new(@transport, @max_buffer_size, @flush_interval, @service_name)
  @worker.start()
end