oneapm_rpm 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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)
|