module Ecoportal::API::Common::ElasticApmIntegration
Constants
- APM_SERVICE_NAME
Public Instance Methods
log_unexpected_server_error(response)
click to toggle source
Log only errors that are only server's responsibility
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 16 def log_unexpected_server_error(response) raise "Expecting Ecoportal::API::Common::Response. Given: #{response.class}" unless response.is_a?(Common::Response) return nil unless elastic_apm_service return nil unless unexpected_server_error?(response.status) if ElasticAPM.running? ElasticAPM.report(UnexpectedServerError.new(response.status, response.body)) end end
Private Instance Methods
elastic_apm_account_id()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 84 def elastic_apm_account_id @elastic_apm_account_id ||= ENV['ELASTIC_APM_ACCOUNT_ID'] end
elastic_apm_base_url()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 88 def elastic_apm_base_url @elastic_apm_base_url ||= "apm.#{elastic_apm_region}.aws.cloud.es.io" end
elastic_apm_key()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 80 def elastic_apm_key @elastic_apm_key ||= ENV['ELASTIC_APM_KEY'] end
elastic_apm_options()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 54 def elastic_apm_options { service_name: APM_SERVICE_NAME, server_url: elastic_apm_url, secret_token: elastic_apm_key, environment: environment, #http_compression: false, transaction_sample_rate: 0.1, transaction_max_spans: 100, span_frames_min_duration: "5ms" }.tap do |options| options.merge!({ log_level: Logger::DEBUG, log_path: File.join(__dir__, "elastic_apm.log") }) if false end end
elastic_apm_port()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 97 def elastic_apm_port @elastic_apm_port ||= ENV['ELASTIC_APM_PORT'] || "443" end
elastic_apm_region()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 92 def elastic_apm_region @elastic_apm_region ||= ENV['ELASTIC_APM_REGION'] || "ap-southeast-2" end
elastic_apm_service()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 44 def elastic_apm_service return false if @disable_apm begin ElasticAPM.start(**elastic_apm_options) unless ElasticAPM.running? rescue StandardError => e @disable_apm = true puts "ElasticAPM services not available: #{e}" end end
elastic_apm_url()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 72 def elastic_apm_url @elastic_apm_url ||= "https://".tap do |url| url << "#{elastic_apm_account_id}" url << ".#{elastic_apm_base_url}" url << ":#{elastic_apm_port}" end end
environment()
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 101 def environment @environment ||= "unknown".tap do |value| if instance_variable_defined?(:@host) && env = @host.gsub(".ecoportal.com", '') value.clear << env end end end
unexpected_server_error?(code)
click to toggle source
# File lib/ecoportal/api/common/elastic_apm_integration.rb, line 27 def unexpected_server_error?(code) code && (code >= 500) && (code <= 599) end