Module: NewRelic::Security::Instrumentation::InstrumentationLoader
- Extended by:
- InstrumentationLoader
- Included in:
- InstrumentationLoader
- Defined in:
- lib/newrelic_security/instrumentation-security/instrumentation_loader.rb
Instance Method Summary collapse
- #add_instrumentation ⇒ Object
- #chain_instrument(target_class, instrumenting_module, supportability_name = nil) ⇒ Object
- #install_instrumentation(supportability_name, target_class, instrumenting_module) ⇒ Object
- #log_and_instrument(method, target_class, instrumenting_module, supportability_name) ⇒ Object
- #prepend_instrument(target_class, instrumenting_module, supportability_name = nil) ⇒ Object
Instance Method Details
#add_instrumentation ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/newrelic_security/instrumentation-security/instrumentation_loader.rb', line 7 def add_instrumentation() res = ::NewRelic::Agent.add_instrumentation("#{__dir__}/**/instrumentation.rb") NewRelic::Security::Agent.logger.debug "res, res.class #{res.class} #{res.inspect}" NewRelic::Security::Agent.logger.debug "Logger print from add instrumentation api." NewRelic::Security::Agent.logger.debug "Agent.agent : #{NewRelic::Security::Agent.agent.inspect}" NewRelic::Security::Agent.logger.debug "Agent.config : #{NewRelic::Security::Agent::Utils.filtered_log(NewRelic::Security::Agent.config.inspect)}" NewRelic::Security::Agent.init_logger.info "[STEP-6] => Application instrumentation applied successfully" end |
#chain_instrument(target_class, instrumenting_module, supportability_name = nil) ⇒ Object
42 43 44 45 46 |
# File 'lib/newrelic_security/instrumentation-security/instrumentation_loader.rb', line 42 def chain_instrument(target_class, instrumenting_module, supportability_name = nil) log_and_instrument('MethodChaining', target_class, instrumenting_module, supportability_name) do instrumenting_module.instrument! end end |
#install_instrumentation(supportability_name, target_class, instrumenting_module) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/newrelic_security/instrumentation-security/instrumentation_loader.rb', line 16 def install_instrumentation(supportability_name, target_class, instrumenting_module) s_name = "instrumentation.#{supportability_name}".to_sym if ::NewRelic::Agent.config[s_name] == :disabled || ::NewRelic::Agent.config[s_name] == 'disabled' NewRelic::Security::Agent.logger.info "Skipping New Relic supported #{target_class} instrumentation, as #{s_name} is #{::NewRelic::Agent.config[s_name]}" NewRelic::Security::Agent.init_logger.info "Skipping New Relic supported #{target_class} instrumentation, as #{s_name} is #{::NewRelic::Agent.config[s_name]}" elsif ::NewRelic::Agent.config[s_name] == :chain || ::NewRelic::Agent.config[s_name] == 'chain' NewRelic::Security::Instrumentation::InstrumentationLoader.chain_instrument target_class, Object.const_get("#{instrumenting_module}::Chain") else NewRelic::Security::Instrumentation::InstrumentationLoader.prepend_instrument target_class, Object.const_get("#{instrumenting_module}::Prepend") end end |
#log_and_instrument(method, target_class, instrumenting_module, supportability_name) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/newrelic_security/instrumentation-security/instrumentation_loader.rb', line 28 def log_and_instrument(method, target_class, instrumenting_module, supportability_name) # supportability_name ||= extract_supportability_name(instrumenting_module) NewRelic::Security::Agent.logger.info "Installing New Relic supported #{target_class} instrumentation using #{method}" NewRelic::Security::Agent.logger.info "Supportability/Instrumentation/#{target_class}/#{method}" NewRelic::Security::Agent.init_logger.info "Installing New Relic supported #{target_class} instrumentation using #{method}" yield end |
#prepend_instrument(target_class, instrumenting_module, supportability_name = nil) ⇒ Object
36 37 38 39 40 |
# File 'lib/newrelic_security/instrumentation-security/instrumentation_loader.rb', line 36 def prepend_instrument(target_class, instrumenting_module, supportability_name = nil) log_and_instrument('Prepend', target_class, instrumenting_module, supportability_name) do target_class.send(:prepend, instrumenting_module) end end |