module Sftrace::Agent

Constants

VERSION

Public Class Methods

set_config(profile_key, project_name, app_name, service_name) click to toggle source
# File lib/sftrace/agent.rb, line 10
def self.set_config(profile_key, project_name, app_name, service_name)

  decoded_key = Base64.decode64("U25hcHB5RmxvdzEyMzQ1Ng==")
  decoded_profile_key = Base64.decode64(profile_key)

  decipher = OpenSSL::Cipher::AES.new(128, :CBC)
  decipher.decrypt
  decipher.key = decoded_key
  decipher.iv = decoded_profile_key[0, 16]
  plain = decipher.update(decoded_profile_key[16..-1]) + decipher.final
  plain_json = JSON.parse(plain)

  global_labels = "_tag_projectName=" + project_name + 
                  ",_tag_appName=" + app_name + 
                  ",_tag_profileId=" + plain_json["profile_id"]

  ENV['ELASTIC_APM_VERIFY_SERVER_CERT'] = "false"
  ENV['ELASTIC_APM_CENTRAL_CONFIG'] = "false"
  ENV['ELASTIC_APM_SPAN_FRAMES_MIN_DURATION'] = "1s"
  ENV['ELASTIC_APM_STACK_TRACE_LIMIT'] = "2"

  ENV['ELASTIC_APM_SERVICE_NAME'] = service_name
  ENV['ELASTIC_APM_SERVER_URL'] = plain_json["trace_server_url"]
  ENV['ELASTIC_APM_GLOBAL_LABELS'] = global_labels

  puts "[SFTRACE] ELASTIC_APM_SERVICE_NAME : " + ENV['ELASTIC_APM_SERVICE_NAME']
  puts "[SFTRACE] ELASTIC_APM_SERVER_URL : " + ENV['ELASTIC_APM_SERVER_URL']
  puts "[SFTRACE] ELASTIC_APM_GLOBAL_LABELS : " + ENV['ELASTIC_APM_GLOBAL_LABELS']

end
set_sftrace_config(service_name, config_path) click to toggle source
# File lib/sftrace/agent.rb, line 41
def self.set_sftrace_config(service_name, config_path)

  if (File.exist?(config_path))

    sftrace_array = YAML.load_file(config_path)

    if ((sftrace_array["key"] != nil) && 
        (sftrace_array["tags"] != nil) && 
        (sftrace_array["tags"]["projectName"] != nil) && 
        (sftrace_array["tags"]["appName"] != nil)
    )

      set_config(
        sftrace_array["key"],
        sftrace_array["tags"]["projectName"],
        sftrace_array["tags"]["appName"],
        service_name
      )

    else
      puts "[SFTRACE] Add all the required details in sftrace config.yaml file."
    end

  else

    puts "[SFTRACE] Please provide a sftrace config.yaml file or else will read from env. variables."

    set_config(
      ENV['SFTRACE_PROFILE_KEY'],
      ENV['SFTRACE_PROJECT_NAME'],
      ENV['SFTRACE_APP_NAME'],
      ENV['SFTRACE_SERVICE_NAME']
    )

  end
  
end