newrelic_rpm 3.7.0.174.beta → 3.7.0.177
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +27 -4
- data/bin/nrdebug +10 -4
- data/lib/new_relic/agent.rb +33 -11
- data/lib/new_relic/agent/agent.rb +83 -120
- data/lib/new_relic/agent/agent_logger.rb +28 -16
- data/lib/new_relic/agent/audit_logger.rb +3 -4
- data/lib/new_relic/agent/autostart.rb +20 -8
- data/lib/new_relic/agent/commands/agent_command_router.rb +26 -17
- data/lib/new_relic/agent/commands/thread_profiler_session.rb +2 -2
- data/lib/new_relic/agent/configuration/default_source.rb +146 -59
- data/lib/new_relic/agent/configuration/manager.rb +3 -3
- data/lib/new_relic/agent/cross_app_monitor.rb +15 -40
- data/lib/new_relic/agent/cross_app_tracing.rb +20 -12
- data/lib/new_relic/agent/database.rb +24 -0
- data/lib/new_relic/agent/error_collector.rb +6 -2
- data/lib/new_relic/agent/instrumentation/merb/controller.rb +3 -1
- data/lib/new_relic/agent/javascript_instrumentor.rb +187 -0
- data/lib/new_relic/agent/new_relic_service.rb +30 -22
- data/lib/new_relic/agent/obfuscator.rb +48 -0
- data/lib/new_relic/agent/request_sampler.rb +5 -13
- data/lib/new_relic/agent/shim_agent.rb +1 -0
- data/lib/new_relic/agent/sql_sampler.rb +15 -5
- data/lib/new_relic/agent/stats_engine/metric_stats.rb +9 -4
- data/lib/new_relic/agent/transaction.rb +0 -1
- data/lib/new_relic/agent/transaction_sampler.rb +28 -16
- data/lib/new_relic/agent/transaction_state.rb +9 -0
- data/lib/new_relic/agent/transaction_timings.rb +5 -1
- data/lib/new_relic/agent/worker_loop.rb +0 -10
- data/lib/new_relic/cli/deployments.rb +1 -1
- data/lib/new_relic/control/instance_methods.rb +1 -1
- data/lib/new_relic/helper.rb +3 -1
- data/lib/new_relic/rack/browser_monitoring.rb +1 -2
- data/lib/new_relic/transaction_sample.rb +11 -13
- data/lib/newrelic_rpm.rb +1 -0
- data/test/agent_helper.rb +20 -5
- data/test/environments/lib/environments/runner.rb +1 -0
- data/test/helpers/file_searching.rb +28 -0
- data/test/multiverse/lib/multiverse/suite.rb +36 -19
- data/test/multiverse/suites/agent_only/collector_exception_handling_test.rb +49 -0
- data/test/multiverse/suites/agent_only/http_response_code_test.rb +2 -2
- data/test/multiverse/suites/agent_only/rum_instrumentation_test.rb +4 -2
- data/test/multiverse/suites/agent_only/service_timeout_test.rb +1 -1
- data/test/multiverse/suites/agent_only/set_transaction_name_test.rb +7 -4
- data/test/multiverse/suites/agent_only/thread_profiling_test.rb +2 -1
- data/test/multiverse/suites/rails/error_tracing_test.rb +34 -4
- data/test/multiverse/suites/rails/ignore_test.rb +1 -1
- data/test/multiverse/suites/rails/request_statistics_test.rb +1 -3
- data/test/multiverse/suites/sequel/sequel_instrumentation_test.rb +10 -7
- data/test/multiverse/suites/sinatra/ignoring_test.rb +1 -1
- data/test/new_relic/agent/agent/start_worker_thread_test.rb +1 -1
- data/test/new_relic/agent/agent_logger_test.rb +108 -114
- data/test/new_relic/agent/agent_test.rb +139 -21
- data/test/new_relic/agent/audit_logger_test.rb +22 -20
- data/test/new_relic/agent/autostart_test.rb +3 -2
- data/test/new_relic/agent/commands/agent_command_router_test.rb +51 -32
- data/test/new_relic/agent/configuration/default_source_test.rb +8 -2
- data/test/new_relic/agent/configuration/manager_test.rb +5 -1
- data/test/new_relic/agent/configuration/orphan_configuration_test.rb +57 -0
- data/test/new_relic/agent/cross_app_monitor_test.rb +10 -26
- data/test/new_relic/agent/database_test.rb +32 -0
- data/test/new_relic/agent/error_collector_test.rb +33 -16
- data/test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb +88 -71
- data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +2 -2
- data/test/new_relic/agent/javascript_instrumentor_test.rb +341 -0
- data/test/new_relic/agent/memcache_instrumentation_test.rb +91 -89
- data/test/new_relic/agent/method_tracer_test.rb +1 -1
- data/test/new_relic/agent/obfuscator_test.rb +77 -0
- data/test/new_relic/agent/pipe_channel_manager_test.rb +5 -5
- data/test/new_relic/agent/pipe_service_test.rb +1 -1
- data/test/new_relic/agent/request_sampler_test.rb +21 -11
- data/test/new_relic/agent/sql_sampler_test.rb +52 -8
- data/test/new_relic/agent/stats_engine/metric_stats_test.rb +6 -6
- data/test/new_relic/agent/stats_engine_test.rb +18 -2
- data/test/new_relic/agent/transaction_sampler_test.rb +98 -53
- data/test/new_relic/agent/transaction_state_test.rb +44 -0
- data/test/new_relic/agent/transaction_test.rb +1 -1
- data/test/new_relic/agent/transaction_timings_test.rb +15 -5
- data/test/new_relic/agent/worker_loop_test.rb +0 -9
- data/test/new_relic/agent_test.rb +9 -21
- data/test/new_relic/data_container_tests.rb +72 -0
- data/test/new_relic/fake_collector.rb +69 -20
- data/test/new_relic/http_client_test_cases.rb +17 -2
- data/test/new_relic/license_test.rb +6 -15
- data/test/new_relic/multiverse_helpers.rb +2 -3
- data/test/new_relic/rack/browser_monitoring_test.rb +15 -37
- data/test/new_relic/transaction_sample_test.rb +92 -62
- data/test/performance/suites/rum_autoinsertion.rb +0 -3
- data/test/rum/x_ua_meta_tag_spaces_around_equals.result.html +10 -0
- data/test/rum/x_ua_meta_tag_spaces_around_equals.source.html +10 -0
- data/test/test_helper.rb +9 -5
- metadata +29 -11
- metadata.gz.sig +0 -0
- data/lib/new_relic/agent/beacon_configuration.rb +0 -37
- data/lib/new_relic/agent/browser_monitoring.rb +0 -257
- data/test/new_relic/agent/beacon_configuration_test.rb +0 -44
- data/test/new_relic/agent/browser_monitoring_test.rb +0 -474
@@ -8,9 +8,9 @@ module NewRelic
|
|
8
8
|
module Agent
|
9
9
|
class AgentLogger
|
10
10
|
|
11
|
-
def initialize(
|
12
|
-
create_log(
|
13
|
-
set_log_level!
|
11
|
+
def initialize(root = "", override_logger=nil)
|
12
|
+
create_log(root, override_logger)
|
13
|
+
set_log_level!
|
14
14
|
set_log_format!
|
15
15
|
|
16
16
|
gather_startup_logs
|
@@ -36,6 +36,13 @@ module NewRelic
|
|
36
36
|
format_and_send(:debug, msgs)
|
37
37
|
end
|
38
38
|
|
39
|
+
def log_once(level, key, *msgs)
|
40
|
+
return if already_logged.include?(key)
|
41
|
+
|
42
|
+
already_logged[key] = true
|
43
|
+
self.send(level, *msgs)
|
44
|
+
end
|
45
|
+
|
39
46
|
def is_startup_logger?
|
40
47
|
false
|
41
48
|
end
|
@@ -66,27 +73,27 @@ module NewRelic
|
|
66
73
|
end
|
67
74
|
end
|
68
75
|
|
69
|
-
def create_log(
|
76
|
+
def create_log(root, override_logger)
|
70
77
|
if !override_logger.nil?
|
71
78
|
@log = override_logger
|
72
|
-
elsif config[:agent_enabled] == false
|
79
|
+
elsif ::NewRelic::Agent.config[:agent_enabled] == false
|
73
80
|
create_null_logger
|
74
81
|
else
|
75
|
-
if wants_stdout
|
82
|
+
if wants_stdout?
|
76
83
|
@log = ::Logger.new(STDOUT)
|
77
84
|
else
|
78
|
-
create_log_to_file(
|
85
|
+
create_log_to_file(root)
|
79
86
|
end
|
80
87
|
end
|
81
88
|
end
|
82
89
|
|
83
|
-
def create_log_to_file(
|
84
|
-
path = find_or_create_file_path(config[:log_file_path], root)
|
90
|
+
def create_log_to_file(root)
|
91
|
+
path = find_or_create_file_path(::NewRelic::Agent.config[:log_file_path], root)
|
85
92
|
if path.nil?
|
86
93
|
@log = ::Logger.new(STDOUT)
|
87
|
-
warn("Error creating log directory #{config[:log_file_path]}, using standard out for logging.")
|
94
|
+
warn("Error creating log directory #{::NewRelic::Agent.config[:log_file_path]}, using standard out for logging.")
|
88
95
|
else
|
89
|
-
file_path = "#{path}/#{config[:log_file_name]}"
|
96
|
+
file_path = "#{path}/#{::NewRelic::Agent.config[:log_file_name]}"
|
90
97
|
begin
|
91
98
|
@log = ::Logger.new(file_path)
|
92
99
|
rescue => e
|
@@ -97,11 +104,16 @@ module NewRelic
|
|
97
104
|
end
|
98
105
|
|
99
106
|
def create_null_logger
|
100
|
-
@log = NewRelic::Agent::NullLogger.new
|
107
|
+
@log = ::NewRelic::Agent::NullLogger.new
|
108
|
+
end
|
109
|
+
|
110
|
+
def already_logged
|
111
|
+
@already_logged ||= {}
|
112
|
+
@already_logged
|
101
113
|
end
|
102
114
|
|
103
|
-
def wants_stdout
|
104
|
-
config[:log_file_path].upcase == "STDOUT"
|
115
|
+
def wants_stdout?
|
116
|
+
::NewRelic::Agent.config[:log_file_path].upcase == "STDOUT"
|
105
117
|
end
|
106
118
|
|
107
119
|
def find_or_create_file_path(path_setting, root)
|
@@ -114,8 +126,8 @@ module NewRelic
|
|
114
126
|
nil
|
115
127
|
end
|
116
128
|
|
117
|
-
def set_log_level!
|
118
|
-
@log.level = AgentLogger.log_level_for(config
|
129
|
+
def set_log_level!
|
130
|
+
@log.level = AgentLogger.log_level_for(::NewRelic::Agent.config[:log_level])
|
119
131
|
end
|
120
132
|
|
121
133
|
LOG_LEVELS = {
|
@@ -8,9 +8,8 @@ require 'fileutils'
|
|
8
8
|
module NewRelic
|
9
9
|
module Agent
|
10
10
|
class AuditLogger
|
11
|
-
def initialize
|
12
|
-
@
|
13
|
-
@enabled = @config[:'audit_log.enabled']
|
11
|
+
def initialize
|
12
|
+
@enabled = NewRelic::Agent.config[:'audit_log.enabled']
|
14
13
|
@encoder = NewRelic::Agent::NewRelicService::Encoders::Identity
|
15
14
|
end
|
16
15
|
|
@@ -51,7 +50,7 @@ module NewRelic
|
|
51
50
|
end
|
52
51
|
|
53
52
|
def ensure_log_path
|
54
|
-
path = File.expand_path(
|
53
|
+
path = File.expand_path(NewRelic::Agent.config[:'audit_log.path'])
|
55
54
|
log_dir = File.dirname(path)
|
56
55
|
|
57
56
|
begin
|
@@ -19,16 +19,28 @@ module NewRelic
|
|
19
19
|
extend self
|
20
20
|
|
21
21
|
|
22
|
-
# The constants,
|
22
|
+
# The constants, executables (i.e. $0) and rake tasks used can be
|
23
23
|
# configured with the config keys 'autostart.blacklisted_constants',
|
24
24
|
# 'autostart.blacklisted_executables' and
|
25
25
|
# 'autostart.blacklisted_rake_tasks'
|
26
26
|
def agent_should_start?
|
27
|
-
!
|
28
|
-
!
|
27
|
+
!blacklisted_constants? &&
|
28
|
+
!blacklisted_executables? &&
|
29
29
|
!in_blacklisted_rake_task?
|
30
30
|
end
|
31
31
|
|
32
|
+
def blacklisted_constants?
|
33
|
+
blacklisted?(NewRelic::Agent.config[:'autostart.blacklisted_constants']) do |name|
|
34
|
+
constant_is_defined?(name)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def blacklisted_executables?
|
39
|
+
blacklisted?(NewRelic::Agent.config[:'autostart.blacklisted_executables']) do |bin|
|
40
|
+
File.basename($0) == bin
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
32
44
|
# Lookup whether namespaced constants (e.g. ::Foo::Bar::Baz) are in the
|
33
45
|
# environment.
|
34
46
|
def constant_is_defined?(const_name)
|
@@ -52,18 +64,18 @@ module NewRelic
|
|
52
64
|
end
|
53
65
|
end
|
54
66
|
|
55
|
-
def blacklisted?(
|
56
|
-
|
67
|
+
def blacklisted?(value, &block)
|
68
|
+
value.split(/\s*,\s*/).any?(&block)
|
57
69
|
end
|
58
70
|
|
59
71
|
def in_blacklisted_rake_task?
|
60
72
|
tasks = begin
|
61
|
-
|
62
|
-
|
73
|
+
::Rake.application.top_level_tasks
|
74
|
+
rescue => e
|
63
75
|
::NewRelic::Agent.logger.debug("Not in Rake environment so skipping blacklisted_rake_tasks check: #{e}")
|
64
76
|
[]
|
65
77
|
end
|
66
|
-
!(tasks & ::NewRelic::Agent.config['autostart.blacklisted_rake_tasks'].split(/\s*,\s*/)).empty?
|
78
|
+
!(tasks & ::NewRelic::Agent.config[:'autostart.blacklisted_rake_tasks'].split(/\s*,\s*/)).empty?
|
67
79
|
end
|
68
80
|
end
|
69
81
|
end
|
@@ -32,6 +32,10 @@ module NewRelic
|
|
32
32
|
@handlers['start_profiler'] = Proc.new { |cmd| thread_profiler_session.handle_start_command(cmd) }
|
33
33
|
@handlers['stop_profiler'] = Proc.new { |cmd| thread_profiler_session.handle_stop_command(cmd) }
|
34
34
|
@handlers['active_xray_sessions'] = Proc.new { |cmd| xray_session_collection.handle_active_xray_sessions(cmd) }
|
35
|
+
|
36
|
+
if event_listener
|
37
|
+
event_listener.subscribe(:before_shutdown, &method(:on_before_shutdown))
|
38
|
+
end
|
35
39
|
end
|
36
40
|
|
37
41
|
def new_relic_service
|
@@ -55,22 +59,33 @@ module NewRelic
|
|
55
59
|
commands.any? {|command| command.name == 'active_xray_sessions'}
|
56
60
|
end
|
57
61
|
|
58
|
-
|
62
|
+
def on_before_shutdown(*args)
|
63
|
+
if self.thread_profiler_session.running?
|
64
|
+
self.thread_profiler_session.stop(true)
|
65
|
+
end
|
66
|
+
end
|
59
67
|
|
60
|
-
def
|
68
|
+
def harvest!
|
61
69
|
profiles = []
|
62
70
|
profiles += harvest_from_xray_session_collection
|
63
|
-
profiles += harvest_from_thread_profiler_session
|
64
|
-
|
65
|
-
|
71
|
+
profiles += harvest_from_thread_profiler_session
|
72
|
+
log_profiles(profiles)
|
73
|
+
profiles
|
66
74
|
end
|
67
75
|
|
76
|
+
# We don't currently support merging thread profiles that failed to send
|
77
|
+
# back into the AgentCommandRouter, so we just no-op this method.
|
78
|
+
# Same with reset! - we don't support asynchronous cancellation of a
|
79
|
+
# running thread profile or X-Ray session currently.
|
80
|
+
def merge!(*args); end
|
81
|
+
def reset!; end
|
82
|
+
|
68
83
|
def harvest_from_xray_session_collection
|
69
84
|
self.xray_session_collection.harvest_thread_profiles
|
70
85
|
end
|
71
86
|
|
72
|
-
def harvest_from_thread_profiler_session
|
73
|
-
if self.thread_profiler_session.ready_to_harvest?
|
87
|
+
def harvest_from_thread_profiler_session
|
88
|
+
if self.thread_profiler_session.ready_to_harvest?
|
74
89
|
self.thread_profiler_session.stop(true)
|
75
90
|
[self.thread_profiler_session.harvest]
|
76
91
|
else
|
@@ -78,21 +93,15 @@ module NewRelic
|
|
78
93
|
end
|
79
94
|
end
|
80
95
|
|
81
|
-
def
|
96
|
+
def log_profiles(profiles)
|
82
97
|
if profiles.empty?
|
83
|
-
NewRelic::Agent.logger.debug "No thread profiles with data found to send."
|
84
|
-
NO_PROFILES_TO_SEND
|
98
|
+
::NewRelic::Agent.logger.debug "No thread profiles with data found to send."
|
85
99
|
else
|
86
|
-
|
87
|
-
|
100
|
+
profile_descriptions = profiles.map { |p| p.to_log_description }
|
101
|
+
::NewRelic::Agent.logger.debug "Sending thread profiles [#{profile_descriptions.join(", ")}]"
|
88
102
|
end
|
89
103
|
end
|
90
104
|
|
91
|
-
def log_profiles(profiles)
|
92
|
-
profile_descriptions = profiles.map { |p| p.to_log_description }
|
93
|
-
::NewRelic::Agent.logger.debug "Sending thread profiles [#{profile_descriptions.join(", ")}]"
|
94
|
-
end
|
95
|
-
|
96
105
|
def get_agent_commands
|
97
106
|
commands = new_relic_service.get_agent_commands
|
98
107
|
NewRelic::Agent.logger.debug "Received get_agent_commands = #{commands.inspect}"
|
@@ -64,8 +64,8 @@ module NewRelic
|
|
64
64
|
@backtrace_service.subscribed?(NewRelic::Agent::Threading::BacktraceService::ALL_TRANSACTIONS)
|
65
65
|
end
|
66
66
|
|
67
|
-
def ready_to_harvest?
|
68
|
-
|
67
|
+
def ready_to_harvest?
|
68
|
+
past_time? || stopped?
|
69
69
|
end
|
70
70
|
|
71
71
|
def past_time?
|
@@ -68,13 +68,15 @@ module NewRelic
|
|
68
68
|
|
69
69
|
def self.agent_enabled
|
70
70
|
Proc.new {
|
71
|
-
|
71
|
+
NewRelic::Agent.config[:enabled] &&
|
72
|
+
(NewRelic::Agent.config[:developer_mode] || NewRelic::Agent.config[:monitor_mode] || NewRelic::Agent.config[:monitor_daemons]) &&
|
73
|
+
NewRelic::Agent::Autostart.agent_should_start?
|
72
74
|
}
|
73
75
|
end
|
74
76
|
|
75
77
|
def self.audit_log_path
|
76
78
|
Proc.new {
|
77
|
-
File.join(
|
79
|
+
File.join(NewRelic::Agent.config[:log_file_path], 'newrelic_audit.log')
|
78
80
|
}
|
79
81
|
end
|
80
82
|
|
@@ -95,62 +97,58 @@ module NewRelic
|
|
95
97
|
end
|
96
98
|
|
97
99
|
def self.browser_monitoring_auto_instrument
|
98
|
-
Proc.new {
|
100
|
+
Proc.new { NewRelic::Agent.config[:'rum.enabled'] }
|
99
101
|
end
|
100
102
|
|
101
103
|
# This check supports the js_errors_beta key we've asked clients to
|
102
104
|
# set. Once JS errors are GA, browser_monitoring.loader can stop
|
103
105
|
# being dynamic.
|
104
106
|
def self.browser_monitoring_loader
|
105
|
-
Proc.new {
|
107
|
+
Proc.new { NewRelic::Agent.config[:js_errors_beta] ? "full" : "rum"}
|
106
108
|
end
|
107
109
|
|
108
110
|
def self.slow_sql_record_sql
|
109
|
-
Proc.new {
|
111
|
+
Proc.new { NewRelic::Agent.config[:'transaction_tracer.record_sql'] }
|
110
112
|
end
|
111
113
|
|
112
114
|
def self.slow_sql_explain_enabled
|
113
|
-
Proc.new {
|
115
|
+
Proc.new { NewRelic::Agent.config[:'transaction_tracer.explain_enabled'] }
|
114
116
|
end
|
115
117
|
|
116
118
|
def self.slow_sql_explain_threshold
|
117
|
-
Proc.new {
|
118
|
-
end
|
119
|
-
|
120
|
-
def self.slow_sql_stack_trace_threshold
|
121
|
-
Proc.new { self[:'transaction_tracer.stack_trace_threshold'] }
|
119
|
+
Proc.new { NewRelic::Agent.config[:'transaction_tracer.explain_threshold'] }
|
122
120
|
end
|
123
121
|
|
124
122
|
def self.slow_sql_enabled
|
125
|
-
Proc.new {
|
123
|
+
Proc.new { NewRelic::Agent.config[:'transaction_tracer.enabled'] }
|
126
124
|
end
|
127
125
|
|
128
126
|
def self.transaction_tracer_transaction_threshold
|
129
|
-
Proc.new {
|
127
|
+
Proc.new { NewRelic::Agent.config[:apdex_t] * 4 }
|
130
128
|
end
|
131
129
|
|
132
130
|
def self.disable_activerecord_instrumentation
|
133
|
-
Proc.new {
|
131
|
+
Proc.new { NewRelic::Agent.config[:skip_ar_instrumentation] }
|
134
132
|
end
|
135
133
|
|
136
134
|
def self.api_port
|
137
|
-
Proc.new {
|
135
|
+
Proc.new { NewRelic::Agent.config[:port] }
|
138
136
|
end
|
139
137
|
|
140
138
|
def self.port
|
141
|
-
Proc.new {
|
139
|
+
Proc.new { NewRelic::Agent.config[:ssl] ? 443 : 80 }
|
142
140
|
end
|
143
141
|
|
144
142
|
def self.strip_exception_messages_enabled
|
145
|
-
Proc.new {
|
143
|
+
Proc.new { NewRelic::Agent.config[:high_security] }
|
146
144
|
end
|
147
145
|
|
148
146
|
def self.developer_mode
|
149
|
-
Proc.new {
|
147
|
+
Proc.new { NewRelic::Agent.config[:developer] }
|
150
148
|
end
|
151
149
|
|
152
150
|
def self.monitor_mode
|
153
|
-
Proc.new {
|
151
|
+
Proc.new { NewRelic::Agent.config[:enabled] }
|
154
152
|
end
|
155
153
|
end
|
156
154
|
|
@@ -185,9 +183,13 @@ module NewRelic
|
|
185
183
|
'routes',
|
186
184
|
'secret',
|
187
185
|
'spec',
|
186
|
+
'spec:features',
|
187
|
+
'spec:requests',
|
188
188
|
'spec:controllers',
|
189
189
|
'spec:helpers',
|
190
190
|
'spec:models',
|
191
|
+
'spec:views',
|
192
|
+
'spec:routing',
|
191
193
|
'spec:rcov',
|
192
194
|
'stats',
|
193
195
|
'test',
|
@@ -208,18 +210,6 @@ module NewRelic
|
|
208
210
|
:type => String,
|
209
211
|
:description => "New Relic license key."
|
210
212
|
},
|
211
|
-
:log => {
|
212
|
-
:default => '',
|
213
|
-
:public => false,
|
214
|
-
:type => String,
|
215
|
-
:description => "Override to set log file name and path to STDOUT."
|
216
|
-
},
|
217
|
-
:omit_fake_collector => {
|
218
|
-
:default => false,
|
219
|
-
:public => false,
|
220
|
-
:type => Boolean,
|
221
|
-
:description => "Override to omit fake collector in multiverse tests."
|
222
|
-
},
|
223
213
|
:config_path => {
|
224
214
|
:default => DefaultSource.config_path,
|
225
215
|
:public => true,
|
@@ -305,12 +295,6 @@ module NewRelic
|
|
305
295
|
:type => Boolean,
|
306
296
|
:description => 'Enables or disables the agent for background processes. No longer necessary as the agent now automatically instruments background processes.'
|
307
297
|
},
|
308
|
-
:multi_homed => {
|
309
|
-
:default => false,
|
310
|
-
:public => false,
|
311
|
-
:type => Boolean,
|
312
|
-
:description => 'Enable or disable instrumentation for multiple applications on the same host bound to different interfaces serving the same port.'
|
313
|
-
},
|
314
298
|
:high_security => {
|
315
299
|
:default => false,
|
316
300
|
:public => true,
|
@@ -355,10 +339,39 @@ module NewRelic
|
|
355
339
|
},
|
356
340
|
:ssl => {
|
357
341
|
:default => true,
|
342
|
+
:allow_nil => true,
|
358
343
|
:public => true,
|
359
344
|
:type => Boolean,
|
360
345
|
:description => "Enable or disable SSL for transmissions to the New Relic data collection service."
|
361
346
|
},
|
347
|
+
:proxy_host => {
|
348
|
+
:default => nil,
|
349
|
+
:allow_nil => true,
|
350
|
+
:public => false,
|
351
|
+
:type => String,
|
352
|
+
:description => 'Host for proxy server.'
|
353
|
+
},
|
354
|
+
:proxy_port => {
|
355
|
+
:default => nil,
|
356
|
+
:allow_nil => true,
|
357
|
+
:public => false,
|
358
|
+
:type => Fixnum,
|
359
|
+
:description => 'Port for proxy server.'
|
360
|
+
},
|
361
|
+
:proxy_user => {
|
362
|
+
:default => nil,
|
363
|
+
:allow_nil => true,
|
364
|
+
:public => false,
|
365
|
+
:type => String,
|
366
|
+
:description => 'User for proxy server.'
|
367
|
+
},
|
368
|
+
:proxy_pass => {
|
369
|
+
:default => nil,
|
370
|
+
:allow_nil => true,
|
371
|
+
:public => false,
|
372
|
+
:type => String,
|
373
|
+
:description => 'Password for proxy server.'
|
374
|
+
},
|
362
375
|
:sync_startup => {
|
363
376
|
:default => false,
|
364
377
|
:public => true,
|
@@ -395,12 +408,6 @@ module NewRelic
|
|
395
408
|
:type => Boolean,
|
396
409
|
:description => 'Enable or disable transmission of application environment information to the New Relic data collection service.'
|
397
410
|
},
|
398
|
-
:start_channel_listener => {
|
399
|
-
:default => false,
|
400
|
-
:public => false,
|
401
|
-
:type => Boolean,
|
402
|
-
:description => 'Enable or disable spawning of a background thread that listens for connections from child processes. Primarily used for Resque instrumentation.'
|
403
|
-
},
|
404
411
|
:'resque.use_harvest_lock' => {
|
405
412
|
:default => false,
|
406
413
|
:public => true,
|
@@ -419,6 +426,12 @@ module NewRelic
|
|
419
426
|
:type => Boolean,
|
420
427
|
:description => '(Deprecated) Enable or disable retrying failed connections to the New Relic data collection service.'
|
421
428
|
},
|
429
|
+
:force_reconnect => {
|
430
|
+
:default => false,
|
431
|
+
:public => false,
|
432
|
+
:type => Boolean,
|
433
|
+
:description => 'Force a new connection to the server before running the worker loop. Creates a separate agent run and is recorded as a separate instance by the New Relic data collection service.'
|
434
|
+
},
|
422
435
|
:report_instance_busy => {
|
423
436
|
:default => true,
|
424
437
|
:public => false,
|
@@ -467,6 +480,12 @@ module NewRelic
|
|
467
480
|
:type => Boolean,
|
468
481
|
:description => 'Enable or disable resque instrumentation.'
|
469
482
|
},
|
483
|
+
:disable_sidekiq => {
|
484
|
+
:default => false,
|
485
|
+
:public => true,
|
486
|
+
:type => Boolean,
|
487
|
+
:description => 'Enable or disable sidekiq instrumentation.'
|
488
|
+
},
|
470
489
|
:disable_dj => {
|
471
490
|
:default => false,
|
472
491
|
:public => true,
|
@@ -593,18 +612,30 @@ module NewRelic
|
|
593
612
|
:type => Fixnum,
|
594
613
|
:description => 'Maximum number of transaction trace segments to record in a single transaction trace.'
|
595
614
|
},
|
615
|
+
:disable_sequel_instrumentation => {
|
616
|
+
:default => false,
|
617
|
+
:public => true,
|
618
|
+
:type => Boolean,
|
619
|
+
:description => 'Enable or disable sequel instrumentation.'
|
620
|
+
},
|
621
|
+
:override_sql_obfuscation_adapter => {
|
622
|
+
:default => '',
|
623
|
+
:public => true,
|
624
|
+
:type => String,
|
625
|
+
:description => "Override for the sql obfuscation adapter."
|
626
|
+
},
|
627
|
+
:disable_database_instrumentation => {
|
628
|
+
:default => false,
|
629
|
+
:public => true,
|
630
|
+
:type => Boolean,
|
631
|
+
:description => 'Enable or disable sequel instrumentation.'
|
632
|
+
},
|
596
633
|
:'slow_sql.enabled' => {
|
597
634
|
:default => DefaultSource.slow_sql_enabled,
|
598
635
|
:public => true,
|
599
636
|
:type => Boolean,
|
600
637
|
:description => 'Enable or disable collection of slow sql queries.'
|
601
638
|
},
|
602
|
-
:'slow_sql.stack_trace_threshold' => {
|
603
|
-
:default => DefaultSource.slow_sql_stack_trace_threshold,
|
604
|
-
:public => true,
|
605
|
-
:type => Float,
|
606
|
-
:description => 'Stack traces will be generated and included in slow sql queries with durations that exceed this threshold.'
|
607
|
-
},
|
608
639
|
:'slow_sql.explain_threshold' => {
|
609
640
|
:default => DefaultSource.slow_sql_explain_threshold,
|
610
641
|
:public => true,
|
@@ -647,11 +678,35 @@ module NewRelic
|
|
647
678
|
:type => Boolean,
|
648
679
|
:description => 'Enable or disable real user monitoring.'
|
649
680
|
},
|
650
|
-
:
|
651
|
-
:default =>
|
681
|
+
:browser_key => {
|
682
|
+
:default => '',
|
652
683
|
:public => false,
|
653
|
-
:type =>
|
654
|
-
:description => '
|
684
|
+
:type => String,
|
685
|
+
:description => 'Real user monitoring license key for the browser timing header.'
|
686
|
+
},
|
687
|
+
:beacon => {
|
688
|
+
:default => '',
|
689
|
+
:public => false,
|
690
|
+
:type => String,
|
691
|
+
:description => 'Beacon for real user monitoring.'
|
692
|
+
},
|
693
|
+
:error_beacon => {
|
694
|
+
:default => '',
|
695
|
+
:public => false,
|
696
|
+
:type => String,
|
697
|
+
:description => 'Error beacon for real user monitoring.'
|
698
|
+
},
|
699
|
+
:application_id => {
|
700
|
+
:default => '',
|
701
|
+
:public => false,
|
702
|
+
:type => String,
|
703
|
+
:description => 'Application ID for real user monitoring.'
|
704
|
+
},
|
705
|
+
:js_agent_file => {
|
706
|
+
:default => '',
|
707
|
+
:public => false,
|
708
|
+
:type => String,
|
709
|
+
:description => 'Javascript agent file for real user monitoring.'
|
655
710
|
},
|
656
711
|
:'browser_monitoring.auto_instrument' => {
|
657
712
|
:default => DefaultSource.browser_monitoring_auto_instrument,
|
@@ -665,12 +720,25 @@ module NewRelic
|
|
665
720
|
:type => String,
|
666
721
|
:description => 'Type of JavaScript agent loader to use for browser monitoring instrumentation'
|
667
722
|
},
|
723
|
+
:'browser_monitoring.loader_version' => {
|
724
|
+
:default => '',
|
725
|
+
:public => private,
|
726
|
+
:type => String,
|
727
|
+
:description => 'Version of JavaScript agent loader (returned from the New Relic data collection services)'
|
728
|
+
},
|
668
729
|
:'browser_monitoring.debug' => {
|
669
730
|
:default => false,
|
670
731
|
:public => false,
|
671
732
|
:type => Boolean,
|
672
733
|
:description => 'Enable or disable debugging version of JavaScript agent loader for browser monitoring instrumentation.'
|
673
734
|
},
|
735
|
+
:'browser_monitoring.ssl_for_http' => {
|
736
|
+
:default => nil,
|
737
|
+
:allow_nil => true,
|
738
|
+
:public => false,
|
739
|
+
:type => Boolean,
|
740
|
+
:description => 'Enable or disable HTTPS instrumentation by JavaScript agent on HTTP pages.'
|
741
|
+
},
|
674
742
|
:js_agent_loader => {
|
675
743
|
:default => '',
|
676
744
|
:public => false,
|
@@ -695,6 +763,25 @@ module NewRelic
|
|
695
763
|
:type => Boolean,
|
696
764
|
:description => 'Enable or disable cross-application tracing.'
|
697
765
|
},
|
766
|
+
:cross_application_tracing => {
|
767
|
+
:default => nil,
|
768
|
+
:allow_nil => true,
|
769
|
+
:public => false,
|
770
|
+
:type => Boolean,
|
771
|
+
:description => 'Enable or disable cross-application tracing.'
|
772
|
+
},
|
773
|
+
:encoding_key => {
|
774
|
+
:default => '',
|
775
|
+
:public => false,
|
776
|
+
:type => String,
|
777
|
+
:description => 'Encoding key for cross-application tracing.'
|
778
|
+
},
|
779
|
+
:cross_process_id => {
|
780
|
+
:default => '',
|
781
|
+
:public => false,
|
782
|
+
:type => String,
|
783
|
+
:description => 'Cross process ID for cross-application tracing.'
|
784
|
+
},
|
698
785
|
:'thread_profiler.enabled' => {
|
699
786
|
:default => DefaultSource.thread_profiler_enabled,
|
700
787
|
:public => true,
|
@@ -743,18 +830,18 @@ module NewRelic
|
|
743
830
|
:type => Boolean,
|
744
831
|
:description => 'Enable or disable the analytics event sampling.'
|
745
832
|
},
|
746
|
-
:'analytics_events.transactions.enabled' => {
|
747
|
-
:default => true,
|
748
|
-
:public => true,
|
749
|
-
:type => Boolean,
|
750
|
-
:description => 'Enable or disable the analytics event sampling for transactions.'
|
751
|
-
},
|
752
833
|
:'analytics_events.max_samples_stored' => {
|
753
834
|
:default => 1200,
|
754
835
|
:public => false,
|
755
836
|
:type => Fixnum,
|
756
837
|
:description => 'Maximum number of request events recorded by the analytics event sampling in a single harvest.'
|
757
838
|
},
|
839
|
+
:'capture_attributes.traces' => {
|
840
|
+
:default => true,
|
841
|
+
:public => false,
|
842
|
+
:type => Boolean,
|
843
|
+
:description => 'Include custom parameters in transaction traces and traced errors'
|
844
|
+
},
|
758
845
|
:'capture_attributes.transaction_events' => {
|
759
846
|
:default => true,
|
760
847
|
:public => true,
|