module Oboe_metal::Reporter

Public Class Methods

clear_all_traces() click to toggle source

clear_all_traces

Truncates the trace output file to zero

# File lib/joboe_metal.rb, line 94
def self.clear_all_traces
  Oboe.reporter.reset if Oboe.loaded
end
get_all_traces() click to toggle source

get_all_traces

Retrieves all traces written to the trace file

# File lib/joboe_metal.rb, line 103
def self.get_all_traces
  return [] unless Oboe.loaded

  # Joboe TestReporter returns a Java::ComTracelyticsExtEbson::DefaultDocument
  # document for traces which doesn't correctly support things like has_key? which
  # raises an unhandled exception on non-existent key (duh).  Here we convert
  # the Java::ComTracelyticsExtEbson::DefaultDocument doc to a pure array of Ruby
  # hashes
  traces = []
  Oboe.reporter.getSentEventsAsBsonDocument.to_a.each do |e|
    t = {}
    e.each_pair { |k, v|
      t[k] = v
    }
    traces << t
  end
  traces
end
sendReport(evt) click to toggle source
# File lib/joboe_metal.rb, line 122
def self.sendReport(evt)
  evt.report(Oboe.reporter)
end
start() click to toggle source

Initialize the Oboe Context, reporter and report the initialization

# File lib/joboe_metal.rb, line 50
def self.start
  return unless Oboe.loaded

  if ENV.key?('OBOE_GEM_TEST')
    Oboe.reporter = Java::ComTracelyticsJoboe::TestReporter.new
  else
    Oboe.reporter = Java::ComTracelyticsJoboe::ReporterFactory.getInstance.buildUdpReporter
  end


  begin
    # Import the tracing mode and sample rate settings
    # from the Java agent (user configured in
    # /usr/local/tracelytics/javaagent.json when under JRuby)
    cfg = LayerUtil.getLocalSampleRate(nil, nil)

    if cfg.hasSampleStartFlag
      Oboe::Config.tracing_mode = 'always'
    elsif cfg.hasSampleThroughFlag
      Oboe::Config.tracing_mode = 'through'
    else
      Oboe::Config.tracing_mode = 'never'
    end

    Oboe.sample_rate = cfg.getSampleRate
    Oboe::Config.sample_rate = cfg.sampleRate
    Oboe::Config.sample_source = cfg.sampleRateSourceValue
  rescue => e
    Oboe.logger.debug "[oboe/debug] Couldn't retrieve/acces joboe sampleRateCfg"
    Oboe.logger.debug "[oboe/debug] #{e.message}"
  end

  # Only report __Init from here if we are not instrumenting a framework.
  # Otherwise, frameworks will handle reporting __Init after full initialization
  unless defined?(::Rails) || defined?(::Sinatra) || defined?(::Padrino) || defined?(::Grape)
    Oboe::API.report_init unless ENV.key?('OBOE_GEM_TEST')
  end
end