module Oboe

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2014 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2015 AppNeta, Inc. All rights reserved.

Copyright © 2015 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2014 AppNeta, Inc. All rights reserved.

Copyright © 2015 AppNeta, Inc. All rights reserved.

Copyright © 2015 AppNeta, Inc. All rights reserved.

Copyright © 2015 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2014 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Copyright © 2013 AppNeta, Inc. All rights reserved.

Disable docs and Camelcase warns since we're implementing an interface here. See OboeBase for details. rubocop:disable Style/Documentation, Style/MethodName

Copyright © 2013 AppNeta, Inc. All rights reserved.

Attributes

logger[RW]

Public Class Methods

sample?(opts = {}) click to toggle source
# File lib/joboe_metal.rb, line 133
def sample?(opts = {})
  begin
    return false unless Oboe.always? && Oboe.loaded

    return true if ENV.key?('OBOE_GEM_TEST')

    # Validation to make Joboe happy.  Assure that we have the KVs and that they
    # are not empty strings.
    opts[:layer]  = nil      if opts[:layer].is_a?(String)      && opts[:layer].empty?
    opts[:xtrace] = nil      if opts[:xtrace].is_a?(String)     && opts[:xtrace].empty?
    opts['X-TV-Meta'] = nil  if opts['X-TV-Meta'].is_a?(String) && opts['X-TV-Meta'].empty?

    opts[:layer]      ||= nil
    opts[:xtrace]     ||= nil
    opts['X-TV-Meta'] ||= nil

    sr_cfg = Java::ComTracelyticsJoboe::LayerUtil.shouldTraceRequest(
                                          opts[:layer],
                                          { 'X-Trace' => opts[:xtrace], 'X-TV-Meta' => opts['X-TV-Meta'] })

    # Store the returned SampleRateConfig into Oboe::Config
    if sr_cfg
      begin
        Oboe::Config.sample_rate = cfg.sampleRate
        Oboe::Config.sample_source = cfg.sampleRateSourceValue
        # If we fail here, we do so quietly.  This was we don't spam logs
        # on every request
      end
    else
      Oboe.sample_rate = -1
      Oboe.sample_source = -1
    end

    sr_cfg ? true : false
  rescue => e
    Oboe.logger.debug "[oboe/debug] #{e.message}"
    false
  end
end
set_sample_rate(_rate) click to toggle source
# File lib/joboe_metal.rb, line 177
def set_sample_rate(_rate)
  # N/A
end
set_tracing_mode(_mode) click to toggle source
# File lib/joboe_metal.rb, line 173
def set_tracing_mode(_mode)
  Oboe.logger.warn 'When using JRuby set the tracing mode in /usr/local/tracelytics/javaagent.json instead'
end
support_report() click to toggle source
# File lib/oboe/support.rb, line 20
def self.support_report
  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn "* BEGIN TraceView Support Report"
  Oboe.logger.warn "*   Please email the output of this report to traceviewsupport@appneta.com"
  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn "Ruby: #{RUBY_DESCRIPTION}"
  Oboe.logger.warn "$0: #{$0}"
  Oboe.logger.warn "$1: #{$1}" unless $1.nil?
  Oboe.logger.warn "$2: #{$2}" unless $2.nil?
  Oboe.logger.warn "$3: #{$3}" unless $3.nil?
  Oboe.logger.warn "$4: #{$4}" unless $4.nil?
  Oboe.logger.warn "Oboe.loaded == #{Oboe.loaded}"

  using_jruby = defined?(JRUBY_VERSION)
  Oboe.logger.warn "Using JRuby?: #{yesno(using_jruby)}"
  if using_jruby
    Oboe.logger.warn "Joboe Agent Status: #{Java::ComTracelyticsAgent::Agent.getStatus}"
  end

  on_heroku = Oboe.heroku?
  Oboe.logger.warn "On Heroku?: #{yesno(on_heroku)}"
  if on_heroku
    Oboe.logger.warn "TRACEVIEW_URL: #{ENV['TRACEVIEW_URL']}"
  end

  Oboe.logger.warn "Oboe::Ruby defined?: #{yesno(defined?(Oboe::Ruby))}"
  Oboe.logger.warn "Oboe.reporter: #{Oboe.reporter}"

  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn "* Frameworks"
  Oboe.logger.warn "********************************************************"

  using_rails = defined?(::Rails)
  Oboe.logger.warn "Using Rails?: #{yesno(using_rails)}"
  if using_rails
    Oboe.logger.warn "Oboe::Rails loaded?: #{yesno(defined?(::Oboe::Rails))}"
  end

  using_sinatra = defined?(::Sinatra)
  Oboe.logger.warn "Using Sinatra?: #{yesno(using_sinatra)}"

  using_padrino = defined?(::Padrino)
  Oboe.logger.warn "Using Padrino?: #{yesno(using_padrino)}"

  using_grape = defined?(::Grape)
  Oboe.logger.warn "Using Grape?: #{yesno(using_grape)}"

  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn "* TraceView Libraries"
  Oboe.logger.warn "********************************************************"
  files = Dir.glob('/usr/lib/liboboe*')
  if files.empty?
    Oboe.logger.warn "Error: No liboboe libs!"
  else
    files.each { |f|
      Oboe.logger.warn f
    }
  end

  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn "* Oboe::Config Values"
  Oboe.logger.warn "********************************************************"
  Oboe::Config.show.each { |k,v|
    Oboe.logger.warn "#{k}: #{v}"
  }

  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn "* OS, Platform + Env"
  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn RbConfig::CONFIG['host_os']
  Oboe.logger.warn RbConfig::CONFIG['sitearch']
  Oboe.logger.warn RbConfig::CONFIG['arch']
  Oboe.logger.warn RUBY_PLATFORM
  Oboe.logger.warn "RACK_ENV: #{ENV['RACK_ENV']}"
  Oboe.logger.warn "RAILS_ENV: #{ENV['RAILS_ENV']}" if using_rails

  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn "* Raw __Init KVs"
  Oboe.logger.warn "********************************************************"
  platform_info = Oboe::Util.build_init_report
  platform_info.each { |k,v|
    Oboe.logger.warn "#{k}: #{v}"
  }

  Oboe.logger.warn "********************************************************"
  Oboe.logger.warn "* END TraceView Support Report"
  Oboe.logger.warn "*   Support Email: traceviewsupport@appneta.com"
  Oboe.logger.warn "*   Support Portal: https://support.tv.appneta.com"
  Oboe.logger.warn "*   Freenode IRC: #appneta"
  Oboe.logger.warn "*   Github: https://github.com/appneta/oboe-ruby"
  Oboe.logger.warn "********************************************************"
  nil
end
yesno(x) click to toggle source

yesno

Utility method to translate value/nil to “yes”/“no” strings

# File lib/oboe/support.rb, line 16
def self.yesno(x)
  x ? "yes" : "no"
end