newrelic_rpm 6.6.0.358 → 6.11.0.365

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.travis.yml +81 -5
  4. data/CHANGELOG.md +262 -0
  5. data/Gemfile +6 -2
  6. data/Guardfile +18 -1
  7. data/LICENSE +1 -1
  8. data/Rakefile +2 -0
  9. data/lib/new_relic/agent.rb +89 -7
  10. data/lib/new_relic/agent/agent.rb +115 -58
  11. data/lib/new_relic/agent/agent_logger.rb +4 -0
  12. data/lib/new_relic/agent/attribute_filter.rb +7 -7
  13. data/lib/new_relic/agent/attributes.rb +150 -0
  14. data/lib/new_relic/agent/autostart.rb +19 -14
  15. data/lib/new_relic/agent/configuration/default_source.rb +154 -9
  16. data/lib/new_relic/agent/configuration/event_harvest_config.rb +11 -5
  17. data/lib/new_relic/agent/configuration/manager.rb +0 -8
  18. data/lib/new_relic/agent/configuration/server_source.rb +3 -2
  19. data/lib/new_relic/agent/configuration/yaml_source.rb +11 -6
  20. data/lib/new_relic/agent/connect/request_builder.rb +5 -13
  21. data/lib/new_relic/agent/database.rb +1 -2
  22. data/lib/new_relic/agent/database/obfuscation_helpers.rb +1 -1
  23. data/lib/new_relic/agent/datastores/mongo.rb +1 -1
  24. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +2 -2
  25. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +8 -8
  26. data/lib/new_relic/agent/distributed_tracing.rb +155 -6
  27. data/lib/new_relic/agent/{cross_app_payload.rb → distributed_tracing/cross_app_payload.rb} +2 -1
  28. data/lib/new_relic/agent/{cross_app_tracing.rb → distributed_tracing/cross_app_tracing.rb} +60 -45
  29. data/lib/new_relic/agent/distributed_tracing/distributed_trace_intrinsics.rb +80 -0
  30. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  31. data/lib/new_relic/agent/{distributed_trace_payload.rb → distributed_tracing/distributed_trace_payload.rb} +24 -101
  32. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +39 -0
  33. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +246 -0
  34. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +126 -0
  35. data/lib/new_relic/agent/error_collector.rb +33 -16
  36. data/lib/new_relic/agent/error_event_aggregator.rb +7 -5
  37. data/lib/new_relic/agent/external.rb +7 -7
  38. data/lib/new_relic/agent/guid_generator.rb +28 -0
  39. data/lib/new_relic/agent/hostname.rb +7 -1
  40. data/lib/new_relic/agent/http_clients/abstract.rb +82 -0
  41. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +24 -19
  42. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +28 -13
  43. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +17 -21
  44. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +10 -11
  45. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +16 -4
  46. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +4 -6
  47. data/lib/new_relic/agent/http_clients/uri_util.rb +3 -2
  48. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +5 -7
  49. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +4 -0
  50. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +11 -2
  51. data/lib/new_relic/agent/instrumentation/active_record.rb +4 -2
  52. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +7 -2
  53. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +8 -4
  54. data/lib/new_relic/agent/instrumentation/bunny.rb +45 -28
  55. data/lib/new_relic/agent/instrumentation/curb.rb +59 -18
  56. data/lib/new_relic/agent/instrumentation/data_mapper.rb +3 -1
  57. data/lib/new_relic/agent/instrumentation/excon.rb +1 -1
  58. data/lib/new_relic/agent/instrumentation/excon/connection.rb +6 -3
  59. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +2 -1
  60. data/lib/new_relic/agent/instrumentation/grape.rb +5 -10
  61. data/lib/new_relic/agent/instrumentation/http.rb +6 -3
  62. data/lib/new_relic/agent/instrumentation/httpclient.rb +5 -3
  63. data/lib/new_relic/agent/instrumentation/memcache.rb +3 -1
  64. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +6 -2
  65. data/lib/new_relic/agent/instrumentation/mongo.rb +9 -3
  66. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +13 -0
  67. data/lib/new_relic/agent/instrumentation/net.rb +6 -3
  68. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +25 -1
  69. data/lib/new_relic/agent/instrumentation/redis.rb +9 -3
  70. data/lib/new_relic/agent/instrumentation/resque.rb +3 -0
  71. data/lib/new_relic/agent/instrumentation/sidekiq.rb +47 -23
  72. data/lib/new_relic/agent/instrumentation/typhoeus.rb +23 -6
  73. data/lib/new_relic/agent/logging.rb +139 -0
  74. data/lib/new_relic/agent/messaging.rb +5 -73
  75. data/lib/new_relic/agent/method_tracer.rb +18 -6
  76. data/lib/new_relic/agent/method_tracer_helpers.rb +2 -2
  77. data/lib/new_relic/agent/monitors.rb +27 -0
  78. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +110 -0
  79. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +27 -0
  80. data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +1 -1
  81. data/lib/new_relic/agent/{synthetics_monitor.rb → monitors/synthetics_monitor.rb} +2 -4
  82. data/lib/new_relic/agent/new_relic_service.rb +7 -6
  83. data/lib/new_relic/agent/noticible_error.rb +22 -0
  84. data/lib/new_relic/agent/span_event_aggregator.rb +1 -0
  85. data/lib/new_relic/agent/span_event_primitive.rb +86 -53
  86. data/lib/new_relic/agent/sql_sampler.rb +3 -3
  87. data/lib/new_relic/agent/supported_versions.rb +2 -2
  88. data/lib/new_relic/agent/system_info.rb +12 -3
  89. data/lib/new_relic/agent/tracer.rb +65 -18
  90. data/lib/new_relic/agent/transaction.rb +84 -79
  91. data/lib/new_relic/agent/transaction/abstract_segment.rb +28 -2
  92. data/lib/new_relic/agent/transaction/distributed_tracer.rb +171 -0
  93. data/lib/new_relic/agent/transaction/distributed_tracing.rb +57 -146
  94. data/lib/new_relic/agent/transaction/external_request_segment.rb +29 -36
  95. data/lib/new_relic/agent/transaction/message_broker_segment.rb +3 -11
  96. data/lib/new_relic/agent/transaction/segment.rb +7 -1
  97. data/lib/new_relic/agent/transaction/trace.rb +2 -4
  98. data/lib/new_relic/agent/transaction/trace_context.rb +168 -0
  99. data/lib/new_relic/agent/transaction/trace_node.rb +10 -8
  100. data/lib/new_relic/agent/transaction_error_primitive.rb +10 -15
  101. data/lib/new_relic/agent/transaction_event_primitive.rb +28 -39
  102. data/lib/new_relic/cli/commands/deployments.rb +1 -1
  103. data/lib/new_relic/cli/commands/install.rb +3 -2
  104. data/lib/new_relic/coerce.rb +31 -6
  105. data/lib/new_relic/constants.rb +38 -0
  106. data/lib/new_relic/control/instance_methods.rb +10 -1
  107. data/lib/new_relic/dependency_detection.rb +4 -4
  108. data/lib/new_relic/environment_report.rb +5 -1
  109. data/lib/new_relic/noticed_error.rb +38 -17
  110. data/lib/new_relic/rack/browser_monitoring.rb +5 -0
  111. data/lib/new_relic/supportability_helper.rb +14 -0
  112. data/lib/new_relic/version.rb +1 -1
  113. data/lib/tasks/multiverse.rb +25 -0
  114. data/lib/tasks/tests.rake +6 -1
  115. data/newrelic_rpm.gemspec +19 -8
  116. data/test/agent_helper.rb +323 -71
  117. metadata +100 -33
  118. data/lib/new_relic/agent/cross_app_monitor.rb +0 -110
  119. data/lib/new_relic/agent/distributed_trace_monitor.rb +0 -40
  120. data/lib/new_relic/agent/http_clients/abstract_request.rb +0 -31
  121. data/lib/new_relic/agent/transaction/attributes.rb +0 -154
  122. data/lib/tasks/versions.html.erb +0 -28
  123. data/lib/tasks/versions.postface.html +0 -8
  124. data/lib/tasks/versions.preface.html +0 -9
  125. data/lib/tasks/versions.rake +0 -65
  126. data/lib/tasks/versions.txt.erb +0 -14
@@ -173,6 +173,10 @@ module NewRelic
173
173
  StartupLogger.instance.dump(self)
174
174
  end
175
175
 
176
+ def self.format_fatal_error message
177
+ "** [NewRelic] FATAL : #{message}\n"
178
+ end
179
+
176
180
  end
177
181
 
178
182
  # In an effort to not lose messages during startup, we trap them in memory
@@ -121,7 +121,7 @@ module NewRelic
121
121
  @high_security = config[:high_security]
122
122
 
123
123
  setup_key_cache
124
- cache_prefix_blacklist
124
+ cache_prefix_denylist
125
125
  end
126
126
 
127
127
  # Note the key_cache is a global cache, accessible by multiple threads,
@@ -222,16 +222,16 @@ module NewRelic
222
222
  # arguments for Sidekiq and Resque in the common case, since none of
223
223
  # these attributes are captured by default.
224
224
  #
225
- def cache_prefix_blacklist
226
- @prefix_blacklist = {}
227
- @prefix_blacklist[:'request.parameters'] = true unless might_allow_prefix_uncached?(:'request.parameters')
228
- @prefix_blacklist[:'job.sidekiq.args'] = true unless might_allow_prefix_uncached?(:'job.sidekiq.args')
229
- @prefix_blacklist[:'job.resque.args'] = true unless might_allow_prefix_uncached?(:'job.resque.args')
225
+ def cache_prefix_denylist
226
+ @prefix_denylist = {}
227
+ @prefix_denylist[:'request.parameters'] = true unless might_allow_prefix_uncached?(:'request.parameters')
228
+ @prefix_denylist[:'job.sidekiq.args'] = true unless might_allow_prefix_uncached?(:'job.sidekiq.args')
229
+ @prefix_denylist[:'job.resque.args'] = true unless might_allow_prefix_uncached?(:'job.resque.args')
230
230
  end
231
231
 
232
232
  # Note that the given prefix *must* be a Symbol
233
233
  def might_allow_prefix?(prefix)
234
- !@prefix_blacklist.include?(prefix)
234
+ !@prefix_denylist.include?(prefix)
235
235
  end
236
236
 
237
237
  def might_allow_prefix_uncached?(prefix)
@@ -0,0 +1,150 @@
1
+ # encoding: utf-8
2
+ # This file is distributed under New Relic's license terms.
3
+ # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+
5
+ require 'new_relic/agent/attribute_processing'
6
+
7
+ module NewRelic
8
+ module Agent
9
+ class Attributes
10
+ KEY_LIMIT = 255
11
+ VALUE_LIMIT = 255
12
+ COUNT_LIMIT = 64
13
+
14
+ def initialize(filter)
15
+ @filter = filter
16
+
17
+ @custom_attributes = {}
18
+ @agent_attributes = {}
19
+ @intrinsic_attributes = {}
20
+
21
+ @custom_destinations = {}
22
+ @agent_destinations = {}
23
+ @already_warned_count_limit = nil
24
+ end
25
+
26
+ def add_agent_attribute(key, value, default_destinations)
27
+ destinations = @filter.apply(key, default_destinations)
28
+ return if destinations == AttributeFilter::DST_NONE
29
+
30
+ @agent_destinations[key] = destinations
31
+ add(@agent_attributes, key, value)
32
+ end
33
+
34
+ def add_agent_attribute_with_key_check(key, value, default_destinations)
35
+ if exceeds_bytesize_limit? key, KEY_LIMIT
36
+ NewRelic::Agent.logger.debug("Agent attribute #{key} was dropped for exceeding key length limit #{KEY_LIMIT}")
37
+ return
38
+ end
39
+
40
+ add_agent_attribute(key, value, default_destinations)
41
+ end
42
+
43
+ def add_intrinsic_attribute(key, value)
44
+ add(@intrinsic_attributes, key, value)
45
+ end
46
+
47
+ def merge_untrusted_agent_attributes(attributes, prefix, default_destinations)
48
+ return if @filter.high_security?
49
+ return if !@filter.might_allow_prefix?(prefix)
50
+
51
+ AttributeProcessing.flatten_and_coerce(attributes, prefix) do |k, v|
52
+ add_agent_attribute_with_key_check(k, v, AttributeFilter::DST_NONE)
53
+ end
54
+ end
55
+
56
+ def merge_custom_attributes(other)
57
+ return unless Agent.config[:'custom_attributes.enabled']
58
+ return if other.empty?
59
+ AttributeProcessing.flatten_and_coerce(other) do |k, v|
60
+ add_custom_attribute(k, v)
61
+ end
62
+ end
63
+
64
+ def custom_attributes_for(destination)
65
+ for_destination(@custom_attributes, @custom_destinations, destination)
66
+ end
67
+
68
+ def agent_attributes_for(destination)
69
+ for_destination(@agent_attributes, @agent_destinations, destination)
70
+ end
71
+
72
+ def intrinsic_attributes_for(destination)
73
+ if destination == NewRelic::Agent::AttributeFilter::DST_TRANSACTION_TRACER ||
74
+ destination == NewRelic::Agent::AttributeFilter::DST_ERROR_COLLECTOR
75
+ @intrinsic_attributes
76
+ else
77
+ NewRelic::EMPTY_HASH
78
+ end
79
+ end
80
+
81
+ private
82
+
83
+ def add_custom_attribute(key, value)
84
+ if @custom_attributes.size >= COUNT_LIMIT
85
+ unless @already_warned_count_limit
86
+ NewRelic::Agent.logger.warn("Custom attributes count exceeded limit of #{COUNT_LIMIT}. Any additional custom attributes during this transaction will be dropped.")
87
+ @already_warned_count_limit = true
88
+ end
89
+ return
90
+ end
91
+
92
+ if @filter.high_security?
93
+ NewRelic::Agent.logger.debug("Unable to add custom attribute #{key} while in high security mode.")
94
+ return
95
+ end
96
+
97
+ if exceeds_bytesize_limit?(key, KEY_LIMIT)
98
+ NewRelic::Agent.logger.warn("Custom attribute key '#{key}' was longer than limit of #{KEY_LIMIT} bytes. This attribute will be dropped.")
99
+ return
100
+ end
101
+
102
+ destinations = @filter.apply(key, AttributeFilter::DST_ALL)
103
+ return if destinations == AttributeFilter::DST_NONE
104
+
105
+ @custom_destinations[key] = destinations
106
+ add(@custom_attributes, key, value)
107
+ end
108
+
109
+ def add(attributes, key, value)
110
+ return if value.nil?
111
+
112
+ if exceeds_bytesize_limit?(value, VALUE_LIMIT)
113
+ value = slice(value)
114
+ end
115
+
116
+ attributes[key] = value
117
+ end
118
+
119
+ def for_destination(attributes, calculated_destinations, destination)
120
+ # Avoid allocating anything if there are no attrs at all
121
+ return NewRelic::EMPTY_HASH if attributes.empty?
122
+
123
+ attributes.inject({}) do |memo, (key, value)|
124
+ if @filter.allows?(calculated_destinations[key], destination)
125
+ memo[key] = value
126
+ end
127
+ memo
128
+ end
129
+ end
130
+
131
+ def exceeds_bytesize_limit?(value, limit)
132
+ if value.respond_to?(:bytesize)
133
+ value.bytesize > limit
134
+ elsif value.is_a?(Symbol)
135
+ value.to_s.bytesize > limit
136
+ else
137
+ false
138
+ end
139
+ end
140
+
141
+ # Take one byte past our limit. Why? This lets us unconditionally chop!
142
+ # the end. It'll either remove the one-character-too-many we have, or
143
+ # peel off the partial, mangled character left by the byteslice.
144
+ def slice(incoming)
145
+ result = incoming.to_s.byteslice(0, VALUE_LIMIT + 1)
146
+ result.chop!
147
+ end
148
+ end
149
+ end
150
+ end
@@ -20,23 +20,28 @@ module NewRelic
20
20
 
21
21
 
22
22
  # The constants, executables (i.e. $0) and rake tasks used can be
23
- # configured with the config keys 'autostart.blacklisted_constants',
24
- # 'autostart.blacklisted_executables' and
25
- # 'autostart.blacklisted_rake_tasks'
23
+ # configured with the config keys 'autostart.denylisted_constants',
24
+ # 'autostart.denylisted_executables' and
25
+ # 'autostart.denylisted_rake_tasks'
26
26
  def agent_should_start?
27
- !blacklisted_constants? &&
28
- !blacklisted_executables? &&
29
- !in_blacklisted_rake_task?
27
+ !denylisted_constants? &&
28
+ !denylisted_executables? &&
29
+ !in_denylisted_rake_task?
30
30
  end
31
31
 
32
- def blacklisted_constants?
33
- blacklisted?(NewRelic::Agent.config[:'autostart.blacklisted_constants']) do |name|
32
+ COMMA = ",".freeze
33
+
34
+ def denylisted_constants?
35
+ # For backwards compatibility until :'autostart_blacklisted_constants' config option is removed
36
+ constants = NewRelic::Agent.config[:'autostart.denylisted_constants'] << COMMA << NewRelic::Agent.config[:'autostart.blacklisted_constants']
37
+
38
+ denylisted?(constants) do |name|
34
39
  constant_is_defined?(name)
35
40
  end
36
41
  end
37
42
 
38
- def blacklisted_executables?
39
- blacklisted?(NewRelic::Agent.config[:'autostart.blacklisted_executables']) do |bin|
43
+ def denylisted_executables?
44
+ denylisted?(NewRelic::Agent.config[:'autostart.denylisted_executables']) do |bin|
40
45
  File.basename($0) == bin
41
46
  end
42
47
  end
@@ -47,18 +52,18 @@ module NewRelic
47
52
  !!::NewRelic::LanguageSupport.constantize(const_name)
48
53
  end
49
54
 
50
- def blacklisted?(value, &block)
55
+ def denylisted?(value, &block)
51
56
  value.split(/\s*,\s*/).any?(&block)
52
57
  end
53
58
 
54
- def in_blacklisted_rake_task?
59
+ def in_denylisted_rake_task?
55
60
  tasks = begin
56
61
  ::Rake.application.top_level_tasks
57
62
  rescue => e
58
- ::NewRelic::Agent.logger.debug("Not in Rake environment so skipping blacklisted_rake_tasks check: #{e}")
63
+ ::NewRelic::Agent.logger.debug("Not in Rake environment so skipping denylisted_rake_tasks check: #{e}")
59
64
  []
60
65
  end
61
- !(tasks & ::NewRelic::Agent.config[:'autostart.blacklisted_rake_tasks'].split(/\s*,\s*/)).empty?
66
+ !(tasks & ::NewRelic::Agent.config[:'autostart.denylisted_rake_tasks'].split(/\s*,\s*/)).empty?
62
67
  end
63
68
  end
64
69
  end
@@ -196,6 +196,15 @@ module NewRelic
196
196
  end
197
197
  end
198
198
 
199
+ SEMICOLON = ';'.freeze
200
+ def self.convert_to_list_on_semicolon value
201
+ case value
202
+ when Array then value
203
+ when String then value.split(SEMICOLON)
204
+ else []
205
+ end
206
+ end
207
+
199
208
  def self.convert_to_constant_list(raw_value)
200
209
  const_names = convert_to_list(raw_value)
201
210
  const_names.map! do |class_name|
@@ -209,9 +218,19 @@ module NewRelic
209
218
  end
210
219
  const_names.compact
211
220
  end
221
+
222
+ def self.enforce_fallback(allowed_values: nil, fallback: nil)
223
+ Proc.new do |configured_value|
224
+ if allowed_values.any? { |v| v =~ /#{configured_value}/i }
225
+ configured_value
226
+ else
227
+ fallback
228
+ end
229
+ end
230
+ end
212
231
  end
213
232
 
214
- AUTOSTART_BLACKLISTED_RAKE_TASKS = [
233
+ AUTOSTART_DENYLISTED_RAKE_TASKS = [
215
234
  'about',
216
235
  'assets:clean',
217
236
  'assets:clobber',
@@ -291,8 +310,17 @@ module NewRelic
291
310
  :public => true,
292
311
  :type => String,
293
312
  :allowed_from_server => false,
313
+ :transform => DefaultSource.method(:convert_to_list_on_semicolon),
294
314
  :description => 'Specify the <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/installation-configuration/name-your-application">application name</a> used to aggregate data in the New Relic UI. To report data to <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/installation-configuration/using-multiple-names-app">multiple apps at the same time</a>, specify a list of names separated by a semicolon <code>;</code>. For example, <code>MyApp</code> or <code>MyStagingApp;Instance1</code>.'
295
315
  },
316
+ :entity_guid => {
317
+ :default => nil,
318
+ :allow_nil => true,
319
+ :public => true,
320
+ :type => String,
321
+ :allowed_from_server => true,
322
+ :description => 'The <a href="https://docs.newrelic.com/attribute-dictionary/span/entityguid">Entity GUID</a> for the entity running this agent.'
323
+ },
296
324
  :monitor_mode => {
297
325
  :default => value_of(:enabled),
298
326
  :public => true,
@@ -367,7 +395,21 @@ module NewRelic
367
395
  :public => true,
368
396
  :type => Boolean,
369
397
  :allowed_from_server => false,
370
- :description => 'When <code>true</code>, the agent captures HTTP request parameters and attaches them to transaction traces, traced errors, and <a href="https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights">TransactionError events</a>.'
398
+ :description => 'When <code>true</code>, the agent captures HTTP request parameters ' \
399
+ 'and attaches them to transaction traces, traced errors, and ' \
400
+ '<a href="https://docs.newrelic.com/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241">'\
401
+ '<code>TransactionError</code> events.' \
402
+ "\n" \
403
+ '<div class="callout-warning">' \
404
+ "\n" \
405
+ '<p>When using the <code>capture_params</code> setting, the Ruby agent will not attempt ' \
406
+ 'to filter secret information. <b>Recommendation:</b> To filter secret information from ' \
407
+ 'request parameters, use the <a href="/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby">' \
408
+ '<code>attributes.include</code> setting</a> instead. For more information, see the ' \
409
+ '<a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">' \
410
+ 'Ruby attribute examples</a>.' \
411
+ "</p>\n" \
412
+ '</div>'
371
413
  },
372
414
  :config_path => {
373
415
  :default => DefaultSource.config_path,
@@ -398,6 +440,17 @@ module NewRelic
398
440
  :description => 'Autodetected application framework used to enable framework-specific functionality.'
399
441
  },
400
442
  :'autostart.blacklisted_constants' => {
443
+ :default => 'Rails::Console',
444
+ :public => true,
445
+ :type => String,
446
+ :allowed_from_server => false,
447
+ :description => 'Deprecated. ' \
448
+ 'For agent versions 6.8.0 or higher, ' \
449
+ 'use <a href="#autostart-denylisted_constants"><code>' \
450
+ 'autostart.denylisted_constants' \
451
+ '</code></a> instead.'
452
+ },
453
+ :'autostart.denylisted_constants' => {
401
454
  :default => 'Rails::Console',
402
455
  :public => true,
403
456
  :type => String,
@@ -409,10 +462,32 @@ module NewRelic
409
462
  :public => true,
410
463
  :type => String,
411
464
  :allowed_from_server => false,
465
+ :description => 'Deprecated. ' \
466
+ 'For agent versions 6.8.0 or higher, ' \
467
+ 'use <a href="#autostart-denylisted_executables"><code>' \
468
+ 'autostart.denylisted_executables' \
469
+ '</code></a> instead.'
470
+ },
471
+ :'autostart.denylisted_executables' => {
472
+ :default => value_of(:'autostart.blacklisted_executables'),
473
+ :public => true,
474
+ :type => String,
475
+ :allowed_from_server => false,
412
476
  :description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, <code>rake,my_ruby_script.rb</code>.'
413
477
  },
414
478
  :'autostart.blacklisted_rake_tasks' => {
415
- :default => AUTOSTART_BLACKLISTED_RAKE_TASKS,
479
+ :default => AUTOSTART_DENYLISTED_RAKE_TASKS,
480
+ :public => true,
481
+ :type => String,
482
+ :allowed_from_server => false,
483
+ :description => 'Deprecated. ' \
484
+ 'For agent versions 6.8.0 or higher, ' \
485
+ 'use <a href="#autostart-denylisted_rake_tasks"><code>' \
486
+ 'autostart.denylisted_rake_tasks' \
487
+ '</code></a> instead.'
488
+ },
489
+ :'autostart.denylisted_rake_tasks' => {
490
+ :default => value_of(:'autostart.blacklisted_rake_tasks'),
416
491
  :public => true,
417
492
  :type => String,
418
493
  :allowed_from_server => false,
@@ -460,15 +535,28 @@ module NewRelic
460
535
  :public => true,
461
536
  :type => Boolean,
462
537
  :allowed_from_server => false,
463
- :description => 'If true, the agent strips messages from all exceptions except those in the <a href="#strip_exception_messages-whitelist">whitelist</a>. Enabled automatically in <a href="https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security">high security mode</a>.'
538
+ :description => 'If true, the agent strips messages from all exceptions except those in the <a href="#strip_exception_messages-allowlist">allowlist</a>. Enabled automatically in <a href="https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security">high security mode</a>.'
464
539
  },
465
540
  :'strip_exception_messages.whitelist' => {
541
+ :default => '',
542
+ :public => true,
543
+ :type => String,
544
+ :deprecated => true,
545
+ :allowed_from_server => false,
546
+ :transform => DefaultSource.method(:convert_to_constant_list),
547
+ :description => 'Deprecated. ' \
548
+ 'For agent versions 6.8.0 or higher, ' \
549
+ 'use <a href="#strip_exception_messages.allowed_classes"><code>' \
550
+ 'strip_exception_messages.allowed_classes' \
551
+ '</code></a> instead.'
552
+ },
553
+ :'strip_exception_messages.allowed_classes' => {
466
554
  :default => '',
467
555
  :public => true,
468
556
  :type => String,
469
557
  :allowed_from_server => false,
470
558
  :transform => DefaultSource.method(:convert_to_constant_list),
471
- :description => 'Specify a whitelist of exceptions you do not want the agent to strip when <a href="#strip_exception_messages-enabled">strip_exception_messages</a> is <code>true</code>. Separate exceptions with a comma. For example, <code>"ImportantException,PreserveMessageException"</code>.'
559
+ :description => 'Specify a list of exceptions you do not want the agent to strip when <a href="#strip_exception_messages-enabled">strip_exception_messages</a> is <code>true</code>. Separate exceptions with a comma. For example, <code>"ImportantException,PreserveMessageException"</code>.'
472
560
  },
473
561
  :host => {
474
562
  :default => DefaultSource.host,
@@ -527,7 +615,7 @@ module NewRelic
527
615
  :description => 'Use HTTP PUT requests instead of POST.'
528
616
  },
529
617
  :compressed_content_encoding => {
530
- :default => 'deflate',
618
+ :default => 'gzip',
531
619
  :public => false,
532
620
  :type => String,
533
621
  :allowed_from_server => false,
@@ -568,14 +656,37 @@ module NewRelic
568
656
  :allowed_from_server => true,
569
657
  :description => 'Number of seconds betwixt connections to the New Relic event collection services.'
570
658
  },
571
- :'data_report_periods.analytic_event_data' => {
659
+ :'event_report_period.analytic_event_data' => {
660
+ :default => 60,
661
+ :public => false,
662
+ :type => Integer,
663
+ :dynamic_name => true,
664
+ :allowed_from_server => true,
665
+ :description => 'Number of seconds betwixt connections to the New Relic analytic event collection services.'
666
+ },
667
+ :'event_report_period.custom_event_data' => {
668
+ :default => 60,
669
+ :public => false,
670
+ :type => Integer,
671
+ :dynamic_name => true,
672
+ :allowed_from_server => true,
673
+ :description => 'Number of seconds betwixt connections to the New Relic custom event collection services.'
674
+ },
675
+ :'event_report_period.error_event_data' => {
676
+ :default => 60,
677
+ :public => false,
678
+ :type => Integer,
679
+ :dynamic_name => true,
680
+ :allowed_from_server => true,
681
+ :description => 'Number of seconds betwixt connections to the New Relic error event collection services.'
682
+ },
683
+ :'event_report_period.span_event_data' => {
572
684
  :default => 60,
573
685
  :public => false,
574
686
  :type => Integer,
575
- :deprecated => true,
576
687
  :dynamic_name => true,
577
688
  :allowed_from_server => true,
578
- :description => 'Number of seconds between connections to the New Relic data collection service for sending transaction event data.'
689
+ :description => 'Number of seconds betwixt connections to the New Relic span event collection services.'
579
690
  },
580
691
  :keep_retrying => {
581
692
  :default => true,
@@ -1810,12 +1921,46 @@ module NewRelic
1810
1921
  :allowed_from_server => true,
1811
1922
  :description => 'If <code>true</code>, enables span event sampling.'
1812
1923
  },
1924
+ :'span_events.queue_size' => {
1925
+ :default => 10_000,
1926
+ :public => true,
1927
+ :type => Integer,
1928
+ :allowed_from_server => false,
1929
+ :external => :infinite_tracing,
1930
+ :description => "Sets the maximum number of span events to buffer when streaming to the trace observer."
1931
+ },
1813
1932
  :'span_events.max_samples_stored' => {
1814
1933
  :default => 1000,
1815
1934
  :public => true,
1816
1935
  :type => Integer,
1817
1936
  :allowed_from_server => true,
1818
1937
  :description => 'Defines the maximum number of span events reported from a single harvest.'
1938
+ },
1939
+ :'exclude_newrelic_header' => {
1940
+ :default => false,
1941
+ :public => true,
1942
+ :type => Boolean,
1943
+ :allowed_from_server => true,
1944
+ :description => "Allows newrelic distributed tracing headers to be suppressed on outbound requests."
1945
+ },
1946
+ :'infinite_tracing.trace_observer.host' => {
1947
+ :default => '',
1948
+ :public => true,
1949
+ :type => String,
1950
+ :allowed_from_server => false,
1951
+ :external => :infinite_tracing,
1952
+ :description => "Configures the hostname for the Trace Observer Host. " \
1953
+ "When configured, enables tail-based sampling by sending all recorded spans " \
1954
+ "to a Trace Observer for further sampling decisions, irrespective of any usual " \
1955
+ "agent sampling decision."
1956
+ },
1957
+ :'infinite_tracing.trace_observer.port' => {
1958
+ :default => 443,
1959
+ :public => true,
1960
+ :type => Integer,
1961
+ :allowed_from_server => false,
1962
+ :external => :infinite_tracing,
1963
+ :description => "Configures the TCP/IP port for the Trace Observer Host"
1819
1964
  }
1820
1965
  }.freeze
1821
1966
  end