Class: OneApm::Collector::CollectorService

Inherits:
Object
  • Object
show all
Includes:
Helper, HttpConnection, ServerMethods
Defined in:
lib/one_apm/collector/collector/helper.rb,
lib/one_apm/collector/collector_service.rb,
lib/one_apm/collector/collector/server_methods.rb,
lib/one_apm/collector/collector/http_connection.rb

Defined Under Namespace

Modules: Helper, HttpConnection, ServerMethods

Constant Summary collapse

OA_PROTOCOL_VERSION =
1

Constants included from HttpConnection

HttpConnection::OA_API_VERSION, HttpConnection::OA_CONNECTION_ERRORS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HttpConnection

#cert_file_path, #check_post_size, #close_shared_connection, #compress_request, #create_and_start_http_connection, #create_http_connection, #decompress_response, #establish_shared_connection, #http_connection, #invoke_remote, #remote_method_uri, #send_request, #session, #session_with_keepalive, #session_without_keepalive, #setup_connection_for_ssl, #setup_connection_timeouts, #ssl_cert_store, #start_connection

Methods included from ServerMethods

#convert_to_ip_address, #proxy_server, #resolve_ip_address, #server, #server_from_host

Methods included from Helper

#build_metric_data_array, #fill_metric_id_cache, #handle_serialization_error, #log_and_return_response, #record_size_supportability_metrics, #record_timing_supportability_metrics, #reset_metric_id_cache, #user_agent, #valid_to_marshal?

Constructor Details

#initialize(license_key = nil, collector = nil) ⇒ CollectorService

Returns a new instance of CollectorService.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/one_apm/collector/collector_service.rb', line 24

def initialize(license_key = nil, collector = nil)
  @license_key = license_key || OneApm::Manager.config[:license_key]
  @collector = collector || server
  @request_timeout = OneApm::Manager.config[:timeout]
  @metric_id_cache = {}
  @audit_logger = ::OneApm::Logger::AuditLogger.new

  OneApm::Manager.config.register_callback(:'audit_log.enabled') do |enabled|
    @audit_logger.enabled = enabled
  end

  OneApm::Manager.config.register_callback(:ssl) do |ssl|
    if !ssl
      OneApm::Manager.logger.warn("Agent is configured not to use SSL when communicating with OneApm's servers")
    else
      OneApm::Manager.logger.debug("Agent is configured to use SSL")
    end
  end

  OneApm::Manager.config.register_callback(:marshaller) do |marshaller|
    @marshaller = OneApm::Support::JsonMarshaller.new
  end
end

Instance Attribute Details

#agent_idObject

Returns the value of attribute agent_id.



21
22
23
# File 'lib/one_apm/collector/collector_service.rb', line 21

def agent_id
  @agent_id
end

#collectorObject (readonly)

Returns the value of attribute collector.



22
23
24
# File 'lib/one_apm/collector/collector_service.rb', line 22

def collector
  @collector
end

#marshallerObject (readonly)

Returns the value of attribute marshaller.



22
23
24
# File 'lib/one_apm/collector/collector_service.rb', line 22

def marshaller
  @marshaller
end

#metric_id_cacheObject (readonly)

Returns the value of attribute metric_id_cache.



22
23
24
# File 'lib/one_apm/collector/collector_service.rb', line 22

def metric_id_cache
  @metric_id_cache
end

#request_timeoutObject

Returns the value of attribute request_timeout.



21
22
23
# File 'lib/one_apm/collector/collector_service.rb', line 21

def request_timeout
  @request_timeout
end

Instance Method Details

#agent_command_results(results) ⇒ Object



99
100
101
# File 'lib/one_apm/collector/collector_service.rb', line 99

def agent_command_results(results)
  invoke_remote(:agent_command_results, [@agent_id, results])
end

#analytic_event_data(data) ⇒ Object



107
108
109
# File 'lib/one_apm/collector/collector_service.rb', line 107

def analytic_event_data(data)
  invoke_remote(:analytic_event_data, data, :item_count => data.size)
end

#connect(settings = {}) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/one_apm/collector/collector_service.rb', line 52

def connect(settings={})
  if host = get_redirect_host
    @collector = server_from_host(host)
  end
  response = invoke_remote(:connect, [settings])
  @agent_id = response['agent_run_id'] if response
  response
end

#custom_event_data(data) ⇒ Object



111
112
113
# File 'lib/one_apm/collector/collector_service.rb', line 111

def custom_event_data(data)
  invoke_remote(:custom_event_data, [@agent_id, data], :item_count => data.size)
end

#error_data(unsent_errors) ⇒ Object



79
80
81
# File 'lib/one_apm/collector/collector_service.rb', line 79

def error_data(unsent_errors)
  invoke_remote(:error_data, [@agent_id, unsent_errors], :item_count => unsent_errors.size)
end

#fetch_configObject



119
120
121
# File 'lib/one_apm/collector/collector_service.rb', line 119

def fetch_config
  invoke_remote(:get_external_rule,[],{},:hash_value=>0)
end

#get_agent_commandsObject



95
96
97
# File 'lib/one_apm/collector/collector_service.rb', line 95

def get_agent_commands
  invoke_remote(:get_agent_commands, [@agent_id])
end

#get_redirect_hostObject



48
49
50
# File 'lib/one_apm/collector/collector_service.rb', line 48

def get_redirect_host
  invoke_remote(:get_redirect_host)
end

#get_xray_metadata(xray_ids) ⇒ Object



103
104
105
# File 'lib/one_apm/collector/collector_service.rb', line 103

def (xray_ids)
  invoke_remote(:get_xray_metadata, [@agent_id, *xray_ids])
end

#metric_data(stats_hash) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/one_apm/collector/collector_service.rb', line 65

def metric_data(stats_hash)
  timeslice_start = stats_hash.started_at
  timeslice_end   = stats_hash.harvested_at || Time.now

  metric_data_array = build_metric_data_array(stats_hash)
  result = invoke_remote(
    :metric_data,
    [@agent_id, timeslice_start.to_f, timeslice_end.to_f, metric_data_array],
    :item_count => metric_data_array.size
  )
  fill_metric_id_cache(result)
  result
end

#profile_data(profile) ⇒ Object



91
92
93
# File 'lib/one_apm/collector/collector_service.rb', line 91

def profile_data(profile)
  invoke_remote(:profile_data, [@agent_id, profile], :skip_normalization => true) || ''
end

#shutdown(time) ⇒ Object



61
62
63
# File 'lib/one_apm/collector/collector_service.rb', line 61

def shutdown(time)
  invoke_remote(:shutdown, [@agent_id, time.to_i]) if @agent_id
end

#sql_trace_data(sql_traces) ⇒ Object



87
88
89
# File 'lib/one_apm/collector/collector_service.rb', line 87

def sql_trace_data(sql_traces)
  invoke_remote(:sql_trace_data, [sql_traces], :item_count => sql_traces.size)
end

#transaction_sample_data(traces) ⇒ Object



83
84
85
# File 'lib/one_apm/collector/collector_service.rb', line 83

def transaction_sample_data(traces)
  invoke_remote(:transaction_sample_data, [@agent_id, traces], :item_count => traces.size)
end

#utilization_data(data) ⇒ Object



115
116
117
# File 'lib/one_apm/collector/collector_service.rb', line 115

def utilization_data(data)
  invoke_remote(:utilization_data, data)
end