lib/new_relic/agent/agent.rb in newrelic_rpm-8.9.0 vs lib/new_relic/agent/agent.rb in newrelic_rpm-8.10.0

- old
+ new

@@ -1,8 +1,9 @@ # encoding: utf-8 # This file is distributed under New Relic's license terms. # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details. +# frozen_string_literal: true require 'socket' require 'net/https' require 'net/http' require 'logger' @@ -67,27 +68,27 @@ @events = EventListener.new @stats_engine = StatsEngine.new @transaction_sampler = TransactionSampler.new @sql_sampler = SqlSampler.new - @agent_command_router = Commands::AgentCommandRouter.new @events - @monitors = Monitors.new @events - @error_collector = ErrorCollector.new @events + @agent_command_router = Commands::AgentCommandRouter.new(@events) + @monitors = Monitors.new(@events) + @error_collector = ErrorCollector.new(@events) @transaction_rules = RulesEngine.new - @harvest_samplers = SamplerCollection.new @events + @harvest_samplers = SamplerCollection.new(@events) @monotonic_gc_profiler = VM::MonotonicGCProfiler.new - @javascript_instrumentor = JavascriptInstrumentor.new @events + @javascript_instrumentor = JavascriptInstrumentor.new(@events) @adaptive_sampler = AdaptiveSampler.new(Agent.config[:sampling_target], Agent.config[:sampling_target_period_in_seconds]) - @harvester = Harvester.new @events + @harvester = Harvester.new(@events) @after_fork_lock = Mutex.new - @transaction_event_recorder = TransactionEventRecorder.new @events - @custom_event_aggregator = CustomEventAggregator.new @events - @span_event_aggregator = SpanEventAggregator.new @events - @log_event_aggregator = LogEventAggregator.new @events + @transaction_event_recorder = TransactionEventRecorder.new(@events) + @custom_event_aggregator = CustomEventAggregator.new(@events) + @span_event_aggregator = SpanEventAggregator.new(@events) + @log_event_aggregator = LogEventAggregator.new(@events) @connect_state = :pending @connect_attempts = 0 @waited_on_connect = nil @connected_pid = nil @@ -207,11 +208,11 @@ !Agent.config[:agent_enabled] || !Agent.config[:monitor_mode] || disconnected? || !control.security_settings_valid? - ::NewRelic::Agent.logger.debug "Starting the worker thread in #{Process.pid} (parent #{Process.ppid}) after forking." + ::NewRelic::Agent.logger.debug("Starting the worker thread in #{Process.pid} (parent #{Process.ppid}) after forking.") channel_id = options[:report_to_channel] install_pipe_service(channel_id) if channel_id # Clear out locks and stats left over from parent process @@ -354,11 +355,11 @@ # When we have a problem connecting to the server, we need # to tell the user what happened, since this is not an error # we can handle gracefully. def log_error(error) - ::NewRelic::Agent.logger.error "Error establishing connection with New Relic Service at #{control.server}:", error + ::NewRelic::Agent.logger.error("Error establishing connection with New Relic Service at #{control.server}:", error) end # When the server sends us an error with the license key, we # want to tell the user that something went wrong, and let # them know where to go to get a valid license key @@ -397,30 +398,31 @@ # Builds the payload to send to the connect service, # connects, then configures the agent using the response from # the connect service def connect_to_server - request_builder = ::NewRelic::Agent::Connect::RequestBuilder.new \ + request_builder = ::NewRelic::Agent::Connect::RequestBuilder.new( \ @service, Agent.config, event_harvest_config, environment_for_connect - connect_response = @service.connect request_builder.connect_payload + ) + connect_response = @service.connect(request_builder.connect_payload) response_handler = ::NewRelic::Agent::Connect::ResponseHandler.new(self, Agent.config) response_handler.configure_agent(connect_response) - log_connection connect_response if connect_response + log_connection(connect_response) if connect_response connect_response end # Logs when we connect to the server, for debugging purposes # - makes sure we know if an agent has not connected def log_connection(config_data) - ::NewRelic::Agent.logger.debug "Connected to NewRelic Service at #{@service.collector.name}" - ::NewRelic::Agent.logger.debug "Agent Run = #{@service.agent_id}." - ::NewRelic::Agent.logger.debug "Connection data = #{config_data.inspect}" + ::NewRelic::Agent.logger.debug("Connected to NewRelic Service at #{@service.collector.name}") + ::NewRelic::Agent.logger.debug("Agent Run = #{@service.agent_id}.") + ::NewRelic::Agent.logger.debug("Connection data = #{config_data.inspect}") if config_data['messages'] && config_data['messages'].any? log_collector_messages(config_data['messages']) end end @@ -480,11 +482,11 @@ end end def merge_data_for_endpoint(endpoint, data) if data && !data.empty? - container = container_for_endpoint endpoint + container = container_for_endpoint(endpoint) if container.respond_to?(:has_metadata?) && container.has_metadata? container_for_endpoint(endpoint).merge!(data, false) else container_for_endpoint(endpoint).merge!(data) end @@ -520,11 +522,11 @@ } opts = defaults.merge(options) return unless should_connect?(opts[:force_reconnect]) - ::NewRelic::Agent.logger.debug "Connecting Process to New Relic: #$0" + ::NewRelic::Agent.logger.debug("Connecting Process to New Relic: #$0") connect_to_server @connected_pid = $$ @connect_state = :connected signal_connected rescue NewRelic::Agent::ForceDisconnectException => e @@ -539,16 +541,16 @@ raise if Thread.current.status == 'aborting' log_error(e) if opts[:keep_retrying] note_connect_failure - ::NewRelic::Agent.logger.info "Will re-attempt in #{connect_retry_period} seconds" - sleep connect_retry_period + ::NewRelic::Agent.logger.info("Will re-attempt in #{connect_retry_period} seconds") + sleep(connect_retry_period) retry end rescue Exception => e - ::NewRelic::Agent.logger.error "Exception of unexpected type during Agent#connect():", e + ::NewRelic::Agent.logger.error("Exception of unexpected type during Agent#connect():", e) raise end # Delegates to the control class to determine the root @@ -574,18 +576,18 @@ # merge the given payload back into the internal buffer of the # container, so that it may be harvested again later. # def harvest_and_send_from_container(container, endpoint) payload = harvest_from_container(container, endpoint) - sample_count = harvest_size container, payload + sample_count = harvest_size(container, payload) if sample_count > 0 NewRelic::Agent.logger.debug("Sending #{sample_count} items to #{endpoint}") send_data_to_endpoint(endpoint, payload, container) end end - def harvest_size container, items + def harvest_size(container, items) if container.respond_to?(:has_metadata?) && container.has_metadata? && !items.empty? items.last.size else items.size end @@ -655,11 +657,11 @@ def harvest_and_send_custom_event_data harvest_and_send_from_container(@custom_event_aggregator, :custom_event_data) end def harvest_and_send_error_event_data - harvest_and_send_from_container @error_collector.error_event_aggregator, :error_event_data + harvest_and_send_from_container(@error_collector.error_event_aggregator, :error_event_data) end def harvest_and_send_span_event_data harvest_and_send_from_container(span_event_aggregator, :span_event_data) end @@ -715,11 +717,11 @@ def transmit_single_data_type(harvest_method, supportability_name) now = Process.clock_gettime(Process::CLOCK_MONOTONIC) msg = "Sending #{supportability_name} data to New Relic Service" - ::NewRelic::Agent.logger.debug msg + ::NewRelic::Agent.logger.debug(msg) @service.session do # use http keep-alive self.send(harvest_method) end ensure @@ -727,11 +729,11 @@ NewRelic::Agent.record_metric("Supportability/#{supportability_name}Harvest", duration) end def transmit_data now = Process.clock_gettime(Process::CLOCK_MONOTONIC) - ::NewRelic::Agent.logger.debug "Sending data to New Relic Service" + ::NewRelic::Agent.logger.debug("Sending data to New Relic Service") @events.notify(:before_harvest) @service.session do # use http keep-alive harvest_and_send_errors harvest_and_send_error_event_data @@ -769,20 +771,20 @@ transmit_error_event_data transmit_span_event_data transmit_log_event_data if @connected_pid == $$ && !@service.kind_of?(NewRelic::Agent::NewRelicService) - ::NewRelic::Agent.logger.debug "Sending New Relic service agent run shutdown message" + ::NewRelic::Agent.logger.debug("Sending New Relic service agent run shutdown message") @service.shutdown else - ::NewRelic::Agent.logger.debug "This agent connected from parent process #{@connected_pid}--not sending shutdown" + ::NewRelic::Agent.logger.debug("This agent connected from parent process #{@connected_pid}--not sending shutdown") end - ::NewRelic::Agent.logger.debug "Graceful disconnect complete" + ::NewRelic::Agent.logger.debug("Graceful disconnect complete") rescue Timeout::Error, StandardError => e - ::NewRelic::Agent.logger.debug "Error when disconnecting #{e.class.name}: #{e.message}" + ::NewRelic::Agent.logger.debug("Error when disconnecting #{e.class.name}: #{e.message}") end else - ::NewRelic::Agent.logger.debug "Bypassing graceful disconnect - agent not connected" + ::NewRelic::Agent.logger.debug("Bypassing graceful disconnect - agent not connected") end end end extend ClassMethods