oneapm_rpm 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/one_apm/agent.rb +185 -192
- data/lib/one_apm/agent/agent/connect.rb +17 -17
- data/lib/one_apm/agent/agent/container_data_manager.rb +14 -14
- data/lib/one_apm/agent/agent/forkable_dispatcher_functions.rb +6 -35
- data/lib/one_apm/agent/agent/helpers.rb +6 -17
- data/lib/one_apm/agent/agent/start.rb +27 -27
- data/lib/one_apm/agent/agent/start_worker_thread.rb +19 -51
- data/lib/one_apm/agent/busy_calculator.rb +8 -34
- data/lib/one_apm/agent/cross_app/cross_app_monitor.rb +10 -10
- data/lib/one_apm/agent/cross_app/cross_app_tracing.rb +14 -14
- data/lib/one_apm/agent/database.rb +8 -35
- data/lib/one_apm/agent/database/active_record_helper.rb +1 -1
- data/lib/one_apm/agent/datastores.rb +2 -109
- data/lib/one_apm/agent/datastores/metric_helper.rb +1 -1
- data/lib/one_apm/agent/datastores/mongo/metric_translator.rb +3 -3
- data/lib/one_apm/agent/datastores/mongo/statement_formatter.rb +2 -2
- data/lib/one_apm/agent/harvester.rb +3 -6
- data/lib/one_apm/agent/inbound_request_monitor.rb +2 -2
- data/lib/one_apm/agent/javascript_instrumentor.rb +28 -28
- data/lib/one_apm/agent/sampler.rb +1 -1
- data/lib/one_apm/agent/sampler_collection.rb +6 -9
- data/lib/one_apm/agent/samplers/cpu_sampler.rb +4 -4
- data/lib/one_apm/agent/samplers/delayed_job_sampler.rb +5 -5
- data/lib/one_apm/agent/samplers/memory_sampler.rb +5 -5
- data/lib/one_apm/agent/samplers/object_sampler.rb +1 -1
- data/lib/one_apm/agent/samplers/vm_sampler.rb +6 -6
- data/lib/one_apm/agent/synthetics_monitor.rb +2 -2
- data/lib/one_apm/agent/threading/agent_thread.rb +6 -6
- data/lib/one_apm/agent/threading/backtrace_service.rb +9 -9
- data/lib/one_apm/agent/threading/thread_profile.rb +3 -3
- data/lib/one_apm/collector/collector/helper.rb +10 -10
- data/lib/one_apm/collector/collector/http_connection.rb +14 -14
- data/lib/one_apm/collector/collector/server_methods.rb +12 -12
- data/lib/one_apm/collector/collector_service.rb +8 -8
- data/lib/one_apm/collector/commands/thread_profiler_session.rb +4 -4
- data/lib/one_apm/collector/commands/xray_session.rb +1 -1
- data/lib/one_apm/collector/commands/xray_session_collection.rb +10 -10
- data/lib/one_apm/collector/containers/agent_command_router.rb +7 -7
- data/lib/one_apm/collector/containers/custom_event_aggregator.rb +6 -6
- data/lib/one_apm/collector/containers/error_collector.rb +16 -16
- data/lib/one_apm/collector/containers/sql_sampler.rb +8 -11
- data/lib/one_apm/collector/containers/transaction_event_aggregator.rb +15 -15
- data/lib/one_apm/collector/containers/transaction_sampler.rb +14 -16
- data/lib/one_apm/{agent/pipe/pipe_service.rb → collector/forked_process_service.rb} +3 -3
- data/lib/one_apm/collector/stats_engine/gc_profiler.rb +3 -3
- data/lib/one_apm/collector/stats_engine/metric_stats.rb +4 -4
- data/lib/one_apm/collector/stats_engine/stats_hash.rb +2 -2
- data/lib/one_apm/configuration.rb +16 -16
- data/lib/one_apm/configuration/autostart.rb +4 -4
- data/lib/one_apm/configuration/default_source.rb +9 -9
- data/lib/one_apm/configuration/environment_source.rb +1 -1
- data/lib/one_apm/configuration/high_security_source.rb +1 -1
- data/lib/one_apm/configuration/yaml_source.rb +7 -7
- data/lib/one_apm/errors/noticed_error.rb +2 -2
- data/lib/one_apm/frameworks/external.rb +2 -0
- data/lib/one_apm/frameworks/rails.rb +8 -18
- data/lib/one_apm/frameworks/rails3.rb +1 -0
- data/lib/one_apm/frameworks/rails4.rb +2 -6
- data/lib/one_apm/frameworks/ruby.rb +7 -2
- data/lib/one_apm/frameworks/sinatra.rb +1 -2
- data/lib/one_apm/inst/3rd/active_merchant.rb +1 -1
- data/lib/one_apm/inst/3rd/acts_as_solr.rb +2 -2
- data/lib/one_apm/inst/3rd/authlogic.rb +1 -1
- data/lib/one_apm/inst/3rd/sunspot.rb +1 -1
- data/lib/one_apm/inst/background_job/active_job.rb +1 -1
- data/lib/one_apm/inst/background_job/delayed_job.rb +4 -4
- data/lib/one_apm/inst/background_job/event_machine_standalone.rb +2 -2
- data/lib/one_apm/inst/background_job/resque.rb +11 -11
- data/lib/one_apm/inst/background_job/sidekiq.rb +5 -5
- data/lib/one_apm/inst/dispatcher/passenger.rb +4 -4
- data/lib/one_apm/inst/dispatcher/puma.rb +23 -0
- data/lib/one_apm/inst/dispatcher/rainbows.rb +2 -2
- data/lib/one_apm/inst/framework/grape.rb +4 -4
- data/lib/one_apm/inst/framework/padrino.rb +2 -2
- data/lib/one_apm/inst/framework/sinatra.rb +9 -9
- data/lib/one_apm/inst/framework/sinatra/transaction_namer.rb +1 -1
- data/lib/one_apm/inst/http_clients/curb.rb +6 -6
- data/lib/one_apm/inst/http_clients/excon.rb +4 -4
- data/lib/one_apm/inst/http_clients/excon/middleware.rb +3 -3
- data/lib/one_apm/inst/http_clients/httpclient.rb +1 -1
- data/lib/one_apm/inst/http_clients/net.rb +2 -2
- data/lib/one_apm/inst/http_clients/typhoeus.rb +2 -2
- data/lib/one_apm/inst/nosql/memcache.rb +7 -7
- data/lib/one_apm/inst/nosql/mongo.rb +6 -6
- data/lib/one_apm/inst/nosql/mongo_moped.rb +2 -2
- data/lib/one_apm/inst/nosql/redis.rb +3 -3
- data/lib/one_apm/inst/orm/active_record.rb +4 -4
- data/lib/one_apm/inst/orm/active_record_4.rb +2 -2
- data/lib/one_apm/inst/orm/sequel.rb +4 -4
- data/lib/one_apm/inst/rack.rb +3 -3
- data/lib/one_apm/inst/rack/rack_builder.rb +4 -4
- data/lib/one_apm/inst/rails/action_controller.rb +7 -7
- data/lib/one_apm/inst/rails/action_web_service.rb +1 -1
- data/lib/one_apm/inst/rails/errors.rb +1 -1
- data/lib/one_apm/inst/rails3/action_controller.rb +6 -6
- data/lib/one_apm/inst/rails3/errors.rb +1 -1
- data/lib/one_apm/inst/rails4/action_controller.rb +1 -1
- data/lib/one_apm/inst/rails4/action_controller_subscriber.rb +4 -4
- data/lib/one_apm/inst/rails4/action_view.rb +2 -2
- data/lib/one_apm/inst/rails4/action_view_subscriber.rb +4 -4
- data/lib/one_apm/inst/rails4/active_record_subscriber.rb +7 -7
- data/lib/one_apm/inst/rails4/errors.rb +1 -1
- data/lib/one_apm/inst/rails_middleware.rb +2 -2
- data/lib/one_apm/inst/support/evented_subscriber.rb +2 -2
- data/lib/one_apm/inst/support/queue_time.rb +1 -1
- data/lib/one_apm/inst/transaction_base.rb +6 -6
- data/lib/one_apm/logger/agent_logger.rb +8 -8
- data/lib/one_apm/logger/audit_logger.rb +8 -8
- data/lib/one_apm/logger/memory_logger.rb +1 -1
- data/lib/one_apm/logger/null_logger.rb +1 -3
- data/lib/one_apm/manager.rb +249 -0
- data/lib/one_apm/metrics/metric_spec.rb +1 -1
- data/lib/one_apm/metrics/stats.rb +1 -1
- data/lib/one_apm/probe.rb +1 -1
- data/lib/one_apm/probe/framework_loader.rb +2 -2
- data/lib/one_apm/probe/instance_methods.rb +19 -19
- data/lib/one_apm/probe/instrumentation.rb +5 -5
- data/lib/one_apm/rack/browser_monitoring.rb +6 -6
- data/lib/one_apm/rack/middleware_hooks.rb +1 -1
- data/lib/one_apm/rack/middleware_tracing.rb +2 -2
- data/lib/one_apm/support/chained_call.rb +1 -1
- data/lib/one_apm/support/coerce.rb +1 -1
- data/lib/one_apm/support/collection_helper.rb +1 -1
- data/lib/one_apm/support/encoders.rb +1 -1
- data/lib/one_apm/support/environment_report.rb +10 -10
- data/lib/one_apm/{agent → support}/event/event_listener.rb +3 -3
- data/lib/one_apm/{agent → support}/event/event_loop.rb +8 -8
- data/lib/one_apm/{agent → support}/event/timer.rb +1 -1
- data/lib/one_apm/{agent → support}/event/worker_loop.rb +5 -19
- data/lib/one_apm/{agent/pipe/pipe_channel_manager.rb → support/forked_process_channel.rb} +13 -51
- data/lib/one_apm/support/json_marshaller.rb +6 -6
- data/lib/one_apm/support/json_wrapper.rb +2 -2
- data/lib/one_apm/support/language_support.rb +1 -1
- data/lib/one_apm/support/library_detection.rb +5 -5
- data/lib/one_apm/support/marshaller.rb +1 -1
- data/lib/one_apm/support/method_tracer.rb +12 -12
- data/lib/one_apm/support/method_tracer/helpers.rb +6 -6
- data/lib/one_apm/support/system_info.rb +2 -2
- data/lib/one_apm/support/traced_method_stack.rb +4 -4
- data/lib/one_apm/support/vm/monotonic_gc_profiler.rb +1 -1
- data/lib/one_apm/support/vm/mri_vm.rb +1 -1
- data/lib/one_apm/transaction.rb +3 -3
- data/lib/one_apm/transaction/class_methods.rb +3 -3
- data/lib/one_apm/transaction/instance_helpers.rb +3 -3
- data/lib/one_apm/transaction/sample_buffer/synthetics_sample_buffer.rb +1 -1
- data/lib/one_apm/transaction/sample_buffer/xray_sample_buffer.rb +5 -5
- data/lib/one_apm/transaction/thread_local_access.rb +2 -2
- data/lib/one_apm/transaction/transaction_apdex.rb +2 -2
- data/lib/one_apm/transaction/transaction_finish_append.rb +1 -1
- data/lib/one_apm/transaction/transaction_jruby_functions.rb +2 -2
- data/lib/one_apm/transaction/transaction_name.rb +2 -2
- data/lib/one_apm/transaction/transaction_sample.rb +1 -1
- data/lib/one_apm/transaction/transaction_sample_builder.rb +7 -7
- data/lib/one_apm/transaction/transaction_state.rb +1 -1
- data/lib/one_apm/version.rb +1 -1
- data/lib/sequel/extensions/oneapm_instrumentation.rb +7 -7
- data/oneapm.yml +6 -7
- metadata +10 -9
- data/lib/one_apm/agent/agent.rb +0 -283
@@ -71,7 +71,7 @@ module OneApm
|
|
71
71
|
|
72
72
|
# Allow Transaction#with_database_metric_name to override our
|
73
73
|
# collection and operation
|
74
|
-
def self.overridden_operation_and_collection
|
74
|
+
def self.overridden_operation_and_collection
|
75
75
|
state = OneApm::TransactionState.tl_get
|
76
76
|
txn = state.current_transaction
|
77
77
|
txn ? txn.instrumentation_state[:datastore_override] : nil
|
@@ -51,7 +51,7 @@ module OneApm
|
|
51
51
|
|
52
52
|
build_metrics(name, collection)
|
53
53
|
rescue => e
|
54
|
-
OneApm::
|
54
|
+
OneApm::Manager.logger.debug("Failure during Mongo metric generation", e)
|
55
55
|
[]
|
56
56
|
end
|
57
57
|
|
@@ -97,7 +97,7 @@ module OneApm
|
|
97
97
|
if command_key
|
98
98
|
command_key.to_sym
|
99
99
|
else
|
100
|
-
OneApm::
|
100
|
+
OneApm::Manager.increment_metric("Supportability/Mongo/UnknownCollection")
|
101
101
|
payload[:selector].first.first unless command_key
|
102
102
|
end
|
103
103
|
end
|
@@ -108,7 +108,7 @@ module OneApm
|
|
108
108
|
if command_key
|
109
109
|
payload[:selector][command_key]
|
110
110
|
else
|
111
|
-
OneApm::
|
111
|
+
OneApm::Manager.increment_metric("Supportability/Mongo/UnknownCollection")
|
112
112
|
CMD_COLLECTION
|
113
113
|
end
|
114
114
|
end
|
@@ -23,7 +23,7 @@ module OneApm
|
|
23
23
|
]
|
24
24
|
|
25
25
|
def self.format(statement, operation)
|
26
|
-
return nil unless OneApm::
|
26
|
+
return nil unless OneApm::Manager.config[:'mongo.capture_queries']
|
27
27
|
|
28
28
|
result = { :operation => operation }
|
29
29
|
|
@@ -41,7 +41,7 @@ module OneApm
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def self.obfuscate(statement)
|
44
|
-
statement = Obfuscator.obfuscate_statement(statement) if OneApm::
|
44
|
+
statement = Obfuscator.obfuscate_statement(statement) if OneApm::Manager.config[:'mongo.obfuscate_queries']
|
45
45
|
statement
|
46
46
|
end
|
47
47
|
end
|
@@ -6,10 +6,7 @@ module OneApm
|
|
6
6
|
|
7
7
|
attr_accessor :starting_pid
|
8
8
|
|
9
|
-
|
10
|
-
def initialize(events, after_forker = OneApm::Agent)
|
11
|
-
# We intentionally don't set our pid as started at this point.
|
12
|
-
# Startup routines must call mark_started when they consider us set!
|
9
|
+
def initialize(events, after_forker = OneApm::Manager)
|
13
10
|
@starting_pid = nil
|
14
11
|
@after_forker = after_forker
|
15
12
|
|
@@ -33,11 +30,11 @@ module OneApm
|
|
33
30
|
end
|
34
31
|
|
35
32
|
def restart_in_children_enabled?
|
36
|
-
OneApm::
|
33
|
+
OneApm::Manager.config[:restart_thread_in_children]
|
37
34
|
end
|
38
35
|
|
39
36
|
def harvest_thread_enabled?
|
40
|
-
!OneApm::
|
37
|
+
!OneApm::Manager.config[:disable_harvest_thread]
|
41
38
|
end
|
42
39
|
|
43
40
|
def restart_harvest_thread
|
@@ -14,14 +14,14 @@ module OneApm
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def setup_obfuscator
|
17
|
-
@obfuscator = OneApm::Agent::Obfuscator.new(OneApm::
|
17
|
+
@obfuscator = OneApm::Agent::Obfuscator.new(OneApm::Manager.config[:encoding_key])
|
18
18
|
end
|
19
19
|
|
20
20
|
def deserialize_header(encoded_header, key)
|
21
21
|
decoded_header = obfuscator.deobfuscate(encoded_header)
|
22
22
|
OneApm::JSONWrapper.load(decoded_header)
|
23
23
|
rescue => err
|
24
|
-
OneApm::
|
24
|
+
OneApm::Manager.logger.debug("Failure deserializing encoded header '#{key}' in #{self.class}, #{err.class}, #{err.message}")
|
25
25
|
nil
|
26
26
|
end
|
27
27
|
|
@@ -16,75 +16,75 @@ module OneApm
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def log_configuration
|
19
|
-
OneApm::
|
20
|
-
"JS agent loader debug: #{OneApm::
|
21
|
-
"JS agent loader version: #{OneApm::
|
19
|
+
OneApm::Manager.logger.debug("JS agent loader requested: #{OneApm::Manager.config[:'browser_monitoring.loader']}",
|
20
|
+
"JS agent loader debug: #{OneApm::Manager.config[:'browser_monitoring.debug']}",
|
21
|
+
"JS agent loader version: #{OneApm::Manager.config[:'browser_monitoring.loader_version']}")
|
22
22
|
|
23
|
-
if !OneApm::
|
24
|
-
OneApm::
|
23
|
+
if !OneApm::Manager.config[:'rum.enabled']
|
24
|
+
OneApm::Manager.logger.debug("Real User Monitoring is disabled for this agent. Edit your configuration to change this.")
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
def enabled?
|
29
|
-
|
29
|
+
OneApm::Manager.config[:'rum.enabled'] && !!Manager.config[:beacon]
|
30
30
|
end
|
31
31
|
|
32
32
|
def obfuscator
|
33
|
-
@obfuscator ||= OneApm::Agent::Obfuscator.new(OneApm::
|
33
|
+
@obfuscator ||= OneApm::Agent::Obfuscator.new(OneApm::Manager.config[:license_key], RUM_KEY_LENGTH)
|
34
34
|
end
|
35
35
|
|
36
36
|
def js_enabled_and_ready?
|
37
37
|
if !enabled?
|
38
|
-
|
38
|
+
OneApm::Manager.logger.log_once(:debug, :js_agent_disabled,
|
39
39
|
"JS agent instrumentation is disabled.")
|
40
40
|
false
|
41
41
|
elsif missing_config?(:js_agent_loader)
|
42
|
-
|
42
|
+
OneApm::Manager.logger.log_once(:debug, :missing_js_agent_loader,
|
43
43
|
"Missing :js_agent_loader. Skipping browser instrumentation.")
|
44
44
|
false
|
45
45
|
elsif missing_config?(:beacon)
|
46
|
-
|
46
|
+
OneApm::Manager.logger.log_once(:debug, :missing_beacon,
|
47
47
|
"Beacon configuration not received (yet?). Skipping browser instrumentation.")
|
48
48
|
false
|
49
49
|
elsif missing_config?(:browser_key)
|
50
|
-
|
50
|
+
OneApm::Manager.logger.log_once(:debug, :missing_browser_key,
|
51
51
|
"Browser key is not set. Skipping browser instrumentation.")
|
52
52
|
false
|
53
53
|
else
|
54
54
|
true
|
55
55
|
end
|
56
56
|
rescue => e
|
57
|
-
|
57
|
+
OneApm::Manager.logger.debug "Failure during 'js_enabled_and_ready?'", e
|
58
58
|
false
|
59
59
|
end
|
60
60
|
|
61
61
|
def insert_js?(state)
|
62
62
|
if !state.current_transaction
|
63
|
-
|
63
|
+
OneApm::Manager.logger.debug "Not in transaction. Skipping browser instrumentation."
|
64
64
|
false
|
65
65
|
elsif !state.is_transaction_traced?
|
66
|
-
|
66
|
+
OneApm::Manager.logger.debug "Transaction is not traced. Skipping browser instrumentation."
|
67
67
|
false
|
68
68
|
elsif !state.is_execution_traced?
|
69
|
-
|
69
|
+
OneApm::Manager.logger.debug "Execution is not traced. Skipping browser instrumentation."
|
70
70
|
false
|
71
71
|
elsif state.current_transaction.ignore_enduser?
|
72
|
-
|
72
|
+
OneApm::Manager.logger.debug "Ignore end user for this transaction is set. Skipping browser instrumentation."
|
73
73
|
false
|
74
74
|
else
|
75
75
|
true
|
76
76
|
end
|
77
77
|
rescue => e
|
78
|
-
|
78
|
+
OneApm::Manager.logger.debug "Failure during insert_js", e
|
79
79
|
false
|
80
80
|
end
|
81
81
|
|
82
82
|
def missing_config?(key)
|
83
|
-
value = OneApm::
|
83
|
+
value = OneApm::Manager.config[key]
|
84
84
|
value.nil? || value.empty?
|
85
85
|
end
|
86
86
|
|
87
|
-
def browser_timing_header
|
87
|
+
def browser_timing_header
|
88
88
|
return '' unless js_enabled_and_ready? # fast exit
|
89
89
|
|
90
90
|
state = OneApm::TransactionState.tl_get
|
@@ -96,12 +96,12 @@ module OneApm
|
|
96
96
|
|
97
97
|
bt_config + browser_timing_loader
|
98
98
|
rescue => e
|
99
|
-
|
99
|
+
OneApm::Manager.logger.debug "Failure during RUM browser_timing_header construction", e
|
100
100
|
''
|
101
101
|
end
|
102
102
|
|
103
103
|
def browser_timing_loader
|
104
|
-
html_safe_if_needed("\n<script type=\"text/javascript\" src=\"#{
|
104
|
+
html_safe_if_needed("\n<script type=\"text/javascript\" src=\"#{Manager.config[:js_agent_loader]}\"></script>")
|
105
105
|
end
|
106
106
|
|
107
107
|
def browser_timing_config(state)
|
@@ -133,14 +133,14 @@ module OneApm
|
|
133
133
|
timings = state.timings
|
134
134
|
|
135
135
|
data = {
|
136
|
-
BEACON_KEY => OneApm::
|
137
|
-
ERROR_BEACON_KEY => OneApm::
|
138
|
-
LICENSE_KEY_KEY => OneApm::
|
139
|
-
APPLICATIONID_KEY => OneApm::
|
136
|
+
BEACON_KEY => OneApm::Manager.config[:beacon],
|
137
|
+
ERROR_BEACON_KEY => OneApm::Manager.config[:error_beacon],
|
138
|
+
LICENSE_KEY_KEY => OneApm::Manager.config[:browser_key],
|
139
|
+
APPLICATIONID_KEY => OneApm::Manager.config[:application_id],
|
140
140
|
TRANSACTION_NAME_KEY => obfuscator.obfuscate(timings.transaction_name_or_unknown),
|
141
141
|
QUEUE_TIME_KEY => timings.queue_time_in_millis,
|
142
142
|
APPLICATION_TIME_KEY => timings.app_time_in_millis,
|
143
|
-
AGENT_KEY => OneApm::
|
143
|
+
AGENT_KEY => OneApm::Manager.config[:js_agent_file]
|
144
144
|
}
|
145
145
|
|
146
146
|
add_ssl_for_http(data)
|
@@ -150,7 +150,7 @@ module OneApm
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def add_ssl_for_http(data)
|
153
|
-
ssl_for_http = OneApm::
|
153
|
+
ssl_for_http = OneApm::Manager.config[:'browser_monitoring.ssl_for_http']
|
154
154
|
unless ssl_for_http.nil?
|
155
155
|
data[SSL_FOR_HTTP_KEY] = ssl_for_http
|
156
156
|
end
|
@@ -165,7 +165,7 @@ module OneApm
|
|
165
165
|
end
|
166
166
|
|
167
167
|
def include_custom_parameters?(txn)
|
168
|
-
has_custom_parameters?(txn) && OneApm::
|
168
|
+
has_custom_parameters?(txn) && OneApm::Manager.config[:'browser_monitoring.capture_attributes']
|
169
169
|
end
|
170
170
|
|
171
171
|
def has_custom_parameters?(txn)
|
@@ -23,9 +23,6 @@ module OneApm
|
|
23
23
|
self.any? { |s| s.class == sampler_class }
|
24
24
|
end
|
25
25
|
|
26
|
-
# adds samplers to the sampler collection so that they run every
|
27
|
-
# minute. This is dynamically recognized by any class that
|
28
|
-
# subclasses OneApm::Agent::Sampler
|
29
26
|
def load_samplers
|
30
27
|
Sampler.sampler_classes.each do |subclass|
|
31
28
|
add_sampler(subclass)
|
@@ -38,8 +35,8 @@ module OneApm
|
|
38
35
|
sampler.poll
|
39
36
|
false
|
40
37
|
rescue => e
|
41
|
-
|
42
|
-
true
|
38
|
+
OneApm::Manager.logger.warn("Removing #{sampler} from list", e)
|
39
|
+
true
|
43
40
|
end
|
44
41
|
end
|
45
42
|
end
|
@@ -51,14 +48,14 @@ module OneApm
|
|
51
48
|
sampler = sampler_class.new
|
52
49
|
sampler.setup_events(@event_listener) if sampler.respond_to?(:setup_events)
|
53
50
|
@samplers << sampler
|
54
|
-
|
51
|
+
OneApm::Manager.logger.debug("Registered #{sampler_class.name} for harvest time sampling.")
|
55
52
|
else
|
56
|
-
|
53
|
+
OneApm::Manager.logger.debug("#{sampler_class.name} not supported on this platform.")
|
57
54
|
end
|
58
55
|
rescue OneApm::Agent::Sampler::Unsupported => e
|
59
|
-
|
56
|
+
OneApm::Manager.logger.info("#{sampler_class.name} not available: #{e}")
|
60
57
|
rescue => e
|
61
|
-
|
58
|
+
OneApm::Manager.logger.error("Error registering sampler:", e)
|
62
59
|
end
|
63
60
|
end
|
64
61
|
end
|
@@ -31,12 +31,12 @@ module OneApm
|
|
31
31
|
systemtime = t.stime - @last_stime
|
32
32
|
|
33
33
|
if systemtime >= 0
|
34
|
-
OneApm::
|
35
|
-
OneApm::
|
34
|
+
OneApm::Manager.record_metric("CPU/System Time", systemtime)
|
35
|
+
OneApm::Manager.record_metric("CPU/System/Utilization", systemtime / (elapsed * @processor_count))
|
36
36
|
end
|
37
37
|
if usertime >= 0
|
38
|
-
OneApm::
|
39
|
-
OneApm::
|
38
|
+
OneApm::Manager.record_metric("CPU/User Time", usertime)
|
39
|
+
OneApm::Manager.record_metric("CPU/User/Utilization", usertime / (elapsed * @processor_count))
|
40
40
|
end
|
41
41
|
end
|
42
42
|
@last_utime = t.utime
|
@@ -23,17 +23,17 @@ module OneApm
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def initialize
|
26
|
-
raise Unsupported, "DJ queue sampler disabled" if
|
26
|
+
raise Unsupported, "DJ queue sampler disabled" if OneApm::Manager.config[:disable_dj]
|
27
27
|
raise Unsupported, "DJ queue sampling unsupported with backend '#{::Delayed::Worker.backend}'" unless self.class.supported_backend?
|
28
28
|
raise Unsupported, "No DJ worker present. Skipping DJ queue sampler" unless OneApm::DelayedJobInjection.worker_name
|
29
29
|
end
|
30
30
|
|
31
31
|
def record_failed_jobs(value)
|
32
|
-
OneApm::
|
32
|
+
OneApm::Manager.record_metric("Workers/DelayedJob/failed_jobs", value)
|
33
33
|
end
|
34
34
|
|
35
35
|
def record_locked_jobs(value)
|
36
|
-
OneApm::
|
36
|
+
OneApm::Manager.record_metric("Workers/DelayedJob/locked_jobs", value)
|
37
37
|
end
|
38
38
|
|
39
39
|
FAILED_QUERY = 'failed_at is not NULL'.freeze
|
@@ -73,7 +73,7 @@ module OneApm
|
|
73
73
|
counts << record_counts_by("priority")
|
74
74
|
|
75
75
|
all_metric = "Workers/DelayedJob/queue_length/all"
|
76
|
-
OneApm::
|
76
|
+
OneApm::Manager.record_metric(all_metric, counts.max)
|
77
77
|
end
|
78
78
|
|
79
79
|
QUEUE_QUERY_CONDITION = 'run_at <= ? and failed_at is NULL'.freeze
|
@@ -84,7 +84,7 @@ module OneApm
|
|
84
84
|
all_count += count
|
85
85
|
column_val = "default" if column_val.nil? || column_val == ""
|
86
86
|
metric = "Workers/DelayedJob/queue_length/#{metric_segment}/#{column_val}"
|
87
|
-
OneApm::
|
87
|
+
OneApm::Manager.record_metric(metric, count)
|
88
88
|
end
|
89
89
|
all_count
|
90
90
|
end
|
@@ -18,10 +18,10 @@ module OneApm
|
|
18
18
|
elsif platform =~ /linux/
|
19
19
|
@sampler = ProcStatus.new
|
20
20
|
if !@sampler.can_run?
|
21
|
-
|
21
|
+
OneApm::Manager.logger.debug "Error attempting to use /proc/#{$$}/status file for reading memory. Using ps command instead."
|
22
22
|
@sampler = ShellPS.new("ps -o rsz")
|
23
23
|
else
|
24
|
-
|
24
|
+
OneApm::Manager.logger.debug "Using /proc/#{$$}/status for reading process memory."
|
25
25
|
end
|
26
26
|
elsif platform =~ /darwin9/ # 10.5
|
27
27
|
@sampler = ShellPS.new("ps -o rsz")
|
@@ -55,7 +55,7 @@ module OneApm
|
|
55
55
|
def poll
|
56
56
|
sample = @sampler.get_sample
|
57
57
|
if sample
|
58
|
-
OneApm::
|
58
|
+
OneApm::Manager.record_metric("Memory/Used", sample)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -71,12 +71,12 @@ module OneApm
|
|
71
71
|
begin
|
72
72
|
m = get_memory
|
73
73
|
if m.nil?
|
74
|
-
|
74
|
+
OneApm::Manager.logger.warn "Unable to get the resident memory for process #{$$}. Disabling memory sampler."
|
75
75
|
@broken = true
|
76
76
|
end
|
77
77
|
return m
|
78
78
|
rescue => e
|
79
|
-
|
79
|
+
OneApm::Manager.logger.warn "Unable to get the resident memory for process #{$$}. Disabling memory sampler.", e
|
80
80
|
@broken = true
|
81
81
|
return nil
|
82
82
|
end
|
@@ -47,7 +47,7 @@ module OneApm
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
def record_gc_runs_metric(snapshot, txn_count)
|
50
|
+
def record_gc_runs_metric(snapshot, txn_count)
|
51
51
|
if snapshot.gc_total_time || snapshot.gc_runs
|
52
52
|
if snapshot.gc_total_time
|
53
53
|
gc_time = snapshot.gc_total_time - @last_snapshot.gc_total_time.to_f
|
@@ -56,7 +56,7 @@ module OneApm
|
|
56
56
|
gc_runs = snapshot.gc_runs - @last_snapshot.gc_runs
|
57
57
|
end
|
58
58
|
wall_clock_time = snapshot.taken_at - @last_snapshot.taken_at
|
59
|
-
OneApm::
|
59
|
+
OneApm::Manager.agent.stats_engine.tl_record_unscoped_metrics(GC_RUNS_METRIC) do |stats|
|
60
60
|
stats.call_count += txn_count
|
61
61
|
stats.total_call_time += gc_runs if gc_runs
|
62
62
|
stats.total_exclusive_time += gc_time if gc_time
|
@@ -66,19 +66,19 @@ module OneApm
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
def record_delta(snapshot, key, metric, txn_count)
|
69
|
+
def record_delta(snapshot, key, metric, txn_count)
|
70
70
|
value = snapshot.send(key)
|
71
71
|
if value
|
72
72
|
delta = value - @last_snapshot.send(key)
|
73
|
-
OneApm::
|
73
|
+
OneApm::Manager.agent.stats_engine.tl_record_unscoped_metrics(metric) do |stats|
|
74
74
|
stats.call_count += txn_count
|
75
75
|
stats.total_call_time += delta
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
def record_gauge_metric(metric_name, value)
|
81
|
-
OneApm::
|
80
|
+
def record_gauge_metric(metric_name, value)
|
81
|
+
OneApm::Manager.agent.stats_engine.tl_record_unscoped_metrics(metric_name) do |stats|
|
82
82
|
stats.call_count = value
|
83
83
|
stats.sum_of_squares = 1
|
84
84
|
end
|
@@ -14,7 +14,7 @@ module OneApm
|
|
14
14
|
events.subscribe(:before_call, &method(:on_before_call))
|
15
15
|
end
|
16
16
|
|
17
|
-
def on_before_call(request)
|
17
|
+
def on_before_call(request)
|
18
18
|
encoded_header = request[SYNTHETICS_HEADER_KEY]
|
19
19
|
return unless encoded_header
|
20
20
|
|
@@ -37,7 +37,7 @@ module OneApm
|
|
37
37
|
|
38
38
|
def is_trusted?(incoming_payload)
|
39
39
|
account_id = incoming_payload[1]
|
40
|
-
OneApm::
|
40
|
+
OneApm::Manager.config[:trusted_account_ids].include?(account_id)
|
41
41
|
end
|
42
42
|
|
43
43
|
def is_valid_payload?(incoming_payload)
|