Module: Oboe_metal::Reporter

Defined in:
lib/joboe_metal.rb

Class Method Summary collapse

Class Method Details

.clear_all_tracesObject

clear_all_traces

Truncates the trace output file to zero



106
107
108
# File 'lib/joboe_metal.rb', line 106

def clear_all_traces
  TraceView.reporter.reset if TraceView.loaded
end

.get_all_tracesObject

get_all_traces

Retrieves all traces written to the trace file



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/joboe_metal.rb', line 115

def get_all_traces
  return [] unless TraceView.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 = []
  TraceView.reporter.getSentEventsAsBsonDocument.to_a.each do |e|
    t = {}
    e.each_pair { |k, v|
      t[k] = v
    }
    traces << t
  end
  traces
end

.restartObject

restart

This is a nil method for TraceView under Java. It is maintained only for compability across interfaces.



97
98
99
# File 'lib/joboe_metal.rb', line 97

def restart
  TraceView.logger.warn "[traceview/reporter] Reporter.restart isn't supported under JRuby"
end

.sendReport(evt) ⇒ Object



134
135
136
# File 'lib/joboe_metal.rb', line 134

def sendReport(evt)
  evt.report(TraceView.reporter)
end

.startObject

start

Start the TraceView Reporter



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/joboe_metal.rb', line 53

def start
  return unless TraceView.loaded

  if ENV.key?('TRACEVIEW_GEM_TEST')
    TraceView.reporter = Java::ComTracelyticsJoboe::ReporterFactory.getInstance.buildTestReporter(false)
  else
    TraceView.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
      TraceView::Config.tracing_mode = :always
    elsif cfg.hasSampleThroughFlag
      TraceView::Config.tracing_mode = :through
    else
      TraceView::Config.tracing_mode = :never
    end

    TraceView.sample_rate = cfg.getSampleRate
    TraceView::Config.sample_rate = cfg.sampleRate
    TraceView::Config.sample_source = cfg.sampleRateSourceValue
  rescue => e
    TraceView.logger.debug "[traceview/debug] Couldn't retrieve/acces joboe sampleRateCfg"
    TraceView.logger.debug "[traceview/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)
    TraceView::API.report_init unless ENV.key?('TRACEVIEW_GEM_TEST')
  end
end