newrelic_rpm 6.13.1 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +247 -0
  4. data/CONTRIBUTING.md +13 -2
  5. data/README.md +2 -2
  6. data/lib/new_relic/agent.rb +6 -8
  7. data/lib/new_relic/agent/agent.rb +4 -5
  8. data/lib/new_relic/agent/audit_logger.rb +10 -0
  9. data/lib/new_relic/agent/autostart.rb +1 -2
  10. data/lib/new_relic/agent/configuration/default_source.rb +462 -221
  11. data/lib/new_relic/agent/configuration/manager.rb +3 -3
  12. data/lib/new_relic/agent/connect/request_builder.rb +4 -2
  13. data/lib/new_relic/agent/database_adapter.rb +33 -0
  14. data/lib/new_relic/agent/datastores/redis.rb +0 -4
  15. data/lib/new_relic/agent/distributed_tracing.rb +0 -66
  16. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +2 -2
  17. data/lib/new_relic/agent/error_collector.rb +52 -37
  18. data/lib/new_relic/agent/error_filter.rb +167 -0
  19. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +4 -5
  20. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +21 -68
  21. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +0 -16
  22. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +23 -57
  23. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +1 -3
  24. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -15
  25. data/lib/new_relic/agent/instrumentation/bunny.rb +10 -196
  26. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  27. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +152 -0
  28. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  29. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +1 -0
  30. data/lib/new_relic/agent/instrumentation/curb.rb +9 -259
  31. data/lib/new_relic/agent/instrumentation/curb/chain.rb +93 -0
  32. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +222 -0
  33. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +63 -0
  34. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +38 -0
  35. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +53 -0
  36. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +34 -0
  37. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +8 -84
  38. data/lib/new_relic/agent/instrumentation/excon.rb +2 -1
  39. data/lib/new_relic/agent/instrumentation/grape.rb +13 -113
  40. data/lib/new_relic/agent/instrumentation/grape/chain.rb +25 -0
  41. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
  42. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  43. data/lib/new_relic/agent/instrumentation/httpclient.rb +8 -30
  44. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +25 -0
  45. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +38 -0
  46. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +17 -0
  47. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  48. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  49. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
  50. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  51. data/lib/new_relic/agent/instrumentation/memcache.rb +54 -69
  52. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +16 -0
  53. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +38 -121
  54. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +56 -0
  55. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +88 -0
  56. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +88 -0
  57. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +4 -10
  58. data/lib/new_relic/agent/instrumentation/mongo.rb +7 -0
  59. data/lib/new_relic/agent/instrumentation/net_http.rb +44 -0
  60. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +25 -0
  61. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +40 -0
  62. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  63. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +1 -1
  64. data/lib/new_relic/agent/instrumentation/padrino.rb +18 -75
  65. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +34 -0
  66. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +27 -0
  67. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  68. data/lib/new_relic/agent/instrumentation/rack.rb +29 -160
  69. data/lib/new_relic/agent/instrumentation/rack/chain.rb +58 -0
  70. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +32 -0
  71. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +73 -0
  72. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +37 -0
  73. data/lib/new_relic/agent/instrumentation/rake.rb +13 -188
  74. data/lib/new_relic/agent/instrumentation/rake/chain.rb +25 -0
  75. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +144 -0
  76. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  77. data/lib/new_relic/agent/instrumentation/redis.rb +12 -186
  78. data/lib/new_relic/agent/instrumentation/redis/chain.rb +34 -0
  79. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +65 -0
  80. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +24 -0
  81. data/lib/new_relic/agent/instrumentation/resque.rb +21 -32
  82. data/lib/new_relic/agent/instrumentation/resque/chain.rb +22 -0
  83. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  84. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +35 -0
  85. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +16 -0
  86. data/lib/new_relic/agent/instrumentation/sidekiq.rb +1 -1
  87. data/lib/new_relic/agent/instrumentation/sinatra.rb +20 -198
  88. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  89. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +29 -34
  90. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +124 -0
  91. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  92. data/lib/new_relic/agent/instrumentation/typhoeus.rb +10 -89
  93. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  94. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +82 -0
  95. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  96. data/lib/new_relic/agent/javascript_instrumentor.rb +12 -7
  97. data/lib/new_relic/agent/method_tracer.rb +6 -16
  98. data/lib/new_relic/agent/new_relic_service.rb +16 -13
  99. data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
  100. data/lib/new_relic/agent/span_event_primitive.rb +10 -8
  101. data/lib/new_relic/agent/sql_sampler.rb +3 -3
  102. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -1
  103. data/lib/new_relic/agent/transaction.rb +1 -4
  104. data/lib/new_relic/agent/transaction/abstract_segment.rb +1 -1
  105. data/lib/new_relic/agent/transaction/distributed_tracer.rb +12 -6
  106. data/lib/new_relic/agent/transaction/message_broker_segment.rb +1 -0
  107. data/lib/new_relic/agent/vm/mri_vm.rb +6 -4
  108. data/lib/new_relic/cli/commands/deployments.rb +0 -1
  109. data/lib/new_relic/constants.rb +4 -0
  110. data/lib/new_relic/control/frameworks/rails.rb +11 -9
  111. data/lib/new_relic/control/instance_methods.rb +1 -0
  112. data/lib/new_relic/dependency_detection.rb +119 -9
  113. data/lib/new_relic/environment_report.rb +1 -7
  114. data/lib/new_relic/noticed_error.rb +4 -8
  115. data/lib/new_relic/supportability_helper.rb +3 -2
  116. data/lib/new_relic/version.rb +3 -3
  117. data/lib/tasks/config.html.erb +14 -25
  118. data/lib/tasks/config.rake +8 -7
  119. data/newrelic_rpm.gemspec +2 -2
  120. data/test/agent_helper.rb +1 -0
  121. metadata +56 -32
  122. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  123. data/.github/ISSUE_TEMPLATE/config.yml +0 -5
  124. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -24
  125. data/.github/actions/annotate/README.md +0 -79
  126. data/.github/actions/annotate/action.yml +0 -6
  127. data/.github/actions/annotate/dist/index.js +0 -433
  128. data/.github/actions/annotate/index.js +0 -25
  129. data/.github/actions/annotate/package-lock.json +0 -172
  130. data/.github/actions/annotate/package.json +0 -30
  131. data/.github/actions/annotate/pre-commit +0 -5
  132. data/.github/actions/build-ruby/README.md +0 -79
  133. data/.github/actions/build-ruby/action.yml +0 -15
  134. data/.github/actions/build-ruby/dist/index.js +0 -52683
  135. data/.github/actions/build-ruby/index.js +0 -514
  136. data/.github/actions/build-ruby/package-lock.json +0 -581
  137. data/.github/actions/build-ruby/package.json +0 -32
  138. data/.github/actions/build-ruby/pre-commit +0 -5
  139. data/.github/pull_request_template.md +0 -16
  140. data/.github/workflows/ci.yml +0 -212
  141. data/.github/workflows/pr_review_checklist.yml +0 -22
  142. data/.github/workflows/release.yml +0 -78
  143. data/.github/workflows/scripts/rubygems-authenticate.py +0 -13
  144. data/.github/workflows/scripts/rubygems-publish.rb +0 -32
  145. data/.github/workflows/snyk.yml +0 -27
  146. data/.github/workflows/stale.yml +0 -21
  147. data/cert/cacert.pem +0 -1177
  148. data/lib/new_relic/agent/instrumentation/http.rb +0 -49
  149. data/lib/new_relic/agent/instrumentation/net.rb +0 -87
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 97813a208eb3ad21826b8069ad1978523f4fc24d1c823e2ef887a33242f8dc93
4
- data.tar.gz: 8ccc2df94bcffa988b31ffb8f4015b2ce6ab7997c8690386e3ef6a77fcdefe6b
3
+ metadata.gz: e364456c599b5484bd0b031f9bc19fd1ec634954c6c060eee1ac85c38adfed78
4
+ data.tar.gz: aaaaa6a31504b5aac1da40ac2c0d69fefbbae8525ce96ef38e7fc01460c618d9
5
5
  SHA512:
6
- metadata.gz: 609270a7843fc1b63aef90f1e5892532f8e28e2bfbbbb077e7b3024851931ca62f68ef18bc6c2c1f5abe35db5f01d6c5d438553a7d0761a07f08d40d341604af
7
- data.tar.gz: 44413974581e5334c04ed78d8c6802d0ffef07ec7fbfc20e785cabf6bb45b3331e01f6499d70da57aee368e69e50c1c0986d672b4c68760f1c4b09d55da4faa6
6
+ metadata.gz: c8a7d6825a9d05a99d45bffb9fc537f5630f9e8077cd939970f28b17e85991fa80443752bc05560b5fcea7f3a47058e68eb96621f66a0e3b2989206a0aa66ebd
7
+ data.tar.gz: 2586902aac108d89c355eccae23acf6b88a72c18abdc773ef4938f3a5aaf17568821e2890bd2ecc4e56695d3798f1f74bdb136f2df3fc6002aacaa563fd329ea
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .ruby-version
1
2
  Gemfile.lock
2
3
  Guard*
3
4
  .DS\_Store
data/CHANGELOG.md CHANGED
@@ -1,5 +1,252 @@
1
1
  # New Relic Ruby Agent Release Notes #
2
2
 
3
+ ## v7.2.0
4
+
5
+ * **Expected Errors and Ignore Errors**
6
+ This release adds support for configuration for expected/ignored errors by class name, status code, and message. The following configuration options are now available:
7
+ - `error_collector.ignore_classes`
8
+ - `error_collector.ignore_messages`
9
+ - `error_collector.ignore_status_codes`
10
+ - `error_collector.expected_classes`
11
+ - `error_collector.expected_messages`
12
+ - `error_collector.expected_status_codes`
13
+ For more details about expected and ignored errors, please see our [configuration documentation](https://docs.newrelic.com/docs/agents/ruby-agent/configuration/)
14
+
15
+ * **Bugfix: resolves "can't add a new key into hash during iteration" Errors**
16
+
17
+ Thanks to @wyhaines for this fix that prevents "can't add a new key into hash during iteration" errors from occuring when iterating over environment data.
18
+
19
+ * **Bugfix: kwarg support fixed for Rack middleware instrumentation**
20
+
21
+ Thanks to @walro for submitting this fix. This fixes the rack instrumentation when using kwargs.
22
+
23
+ * **Update known conflicts with use of Module#Prepend**
24
+
25
+ With our release of v7.0.0, we updated our instrumentation to use Module#Prepend by default, instead of method chaining. We have received reports of conflicts and added a check for these known conflicts. If a known conflict with prepend is detected while using the default value of 'auto' for gem instrumentation, the agent will instead install method chaining instrumentation in order to avoid this conflict. This check can be bypassed by setting the instrumentation method for the gem to 'prepend'.
26
+
27
+
28
+ ## v7.1.0
29
+
30
+ * **Add support for CSP nonces when using our API to insert the browser agent**
31
+
32
+ We now support passing in a nonce to our API method `browser_timing_header` to allow the browser agent to run on applications using CSP nonces. This allows users to inject the browser agent themselves and use the nonce required for the script to run. In order to utilize this new feature, you must disable auto instrumentation for the browser agent, and use the API method browser_timing_header to pass the nonce in and inject the script manually.
33
+
34
+ * **Removed MD5 use in the SQL sampler**
35
+
36
+ In order to allow the agent to run in FIPS compliant environments, the usage of MD5 for aggregating slow sql traces has been replaced with SHA1.
37
+
38
+ * **Enable server-side configuration of distributed tracing**
39
+
40
+ `distributed_tracing.enabled` may now be set in server-side application configuration.
41
+
42
+ * **Bugfix: Fix for missing part of a previous bugfix**
43
+
44
+ Our previous fix of "nil Middlewares injection now prevented and gracefully handled in Sinatra" released in 7.0.0 was partially overwritten by some of the other changes in that release. This release adds back those missing sections of the bugfix, and should resolve the issue for sinatra users.
45
+
46
+ * **Update known conflicts with use of Module#Prepend**
47
+
48
+ With our release of v7.0.0, we updated our instrumentation to use Module#Prepend by default, instead of method chaining. We have received reports of conflicts and added a check for these known conflicts. If a known conflict with prepend is detected while using the default value of 'auto' for gem instrumentation, the agent will instead install method chaining instrumentation in order to avoid this conflict. This check can be bypassed by setting the instrumentation method for the gem to 'prepend'.
49
+
50
+ * **Bugfix: Updated support for ActiveRecord 6.1+ instrumentation**
51
+
52
+ Previously, the agent depended on `connection_id` to be present in the Active Support instrumentation for `sql.active_record`
53
+ to get the current ActiveRecord connection. As of Rails 6.1, `connection_id` has been dropped in favor of providing the connection
54
+ object through the `connection` value exclusively. This resulted in datastore spans displaying fallback behavior, including showing
55
+ "ActiveRecord" as the database vendor.
56
+
57
+ * **Bugfix: Updated support for Resque's FORK_PER_JOB option**
58
+
59
+ Support for Resque's FORK_PER_JOB flag within the Ruby agent was incomplete and nonfunctional. The agent should now behave
60
+ correctly when running in a non-forking Resque worker process.
61
+
62
+ * **Bugfix: Added check for ruby2_keywords in add_transaction_tracer**
63
+
64
+ Thanks @beauraF for the contribution! Previously, the add_transaction_tracer was not updated when we added support for ruby 3. In order to correctly support `**kwargs`, ruby2_keywords was added to correctly update the method signature to use **kwargs in ruby versions that support that.
65
+
66
+ * **Confirmed support for yajl 1.4.0**
67
+
68
+ Thanks to @creaturenex for the contribution! `yajl-ruby` 1.4.0 was added to our test suite and confirmed all tests pass, showing the agent supports this version as well.
69
+
70
+
71
+ ## v7.0.0
72
+
73
+ * **Ruby Agent 6.x to 7.x Migration Guide Available**
74
+
75
+ Please see our [Ruby Agent 6.x to 7.x migration guide](https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/migration-7x-guide/) for helpful strategies and tips for migrating from earlier versions of the Ruby agent to 7.0.0. We cover new configuration settings, diagnosiing and installing SSL CA certificates and deprecated items and their replacements in this guide.
76
+
77
+ * **Ruby 2.0 and 2.1 Dropped**
78
+
79
+ Support for Ruby 2.0 and 2.1 dropped with this release. No code changes that would prevent the agent from continuing to
80
+ work with these releases are known. However, Rubies 2.0 and 2.1 are no longer included in our test matrices and are not supported
81
+ for 7.0.0 and onward.
82
+
83
+ * **Implemented prepend auto-instrumentation strategies for most Ruby gems/libraries**
84
+
85
+ This release brings the auto-instrumentation strategies for most gems into the modern era for Ruby by providing both
86
+ prepend and method-chaining (a.k.a. method-aliasing) strategies for auto instrumenting. Prepend, which has been available since
87
+ Ruby 2.0 is now the default strategy employed in auto-instrumenting. It is known that some external gems lead to Stack Level
88
+ too Deep exceptions when prepend and method-chaining are mixed. In such known cases, auto-instrumenting strategy will fall back
89
+ to method-chaining automatically.
90
+
91
+ This release also deprecates many overlapping and inconsistently named configuration settings in favor of being able to control
92
+ behavior of instrumentation per library with one setting that can be one of auto (the default), disabled, prepend, or chain.
93
+
94
+ Please see the above-referenced migration guide for further details.
95
+
96
+ * **Removed SSL cert bundle**
97
+
98
+ The agent will no longer ship this bundle and will rely on system certs.
99
+
100
+ * **Removed deprecated config options**
101
+
102
+ The following config options were previously deprecated and are no longer available
103
+ - `disable_active_record_4`
104
+ - `disable_active_record_5`
105
+ - `autostart.blacklisted_constants`
106
+ - `autostart.blacklisted_executables`
107
+ - `autostart.blacklisted_rake_tasks`
108
+ - `strip_exception_messages.whitelist`
109
+
110
+ * **Removed deprecated attribute**
111
+
112
+ The attribute `httpResponseCode` was previously deprecated and replaced with `http.statusCode`. This deprecated attribute has now been removed.
113
+
114
+ * **Removed deprecated option in notice_error**
115
+
116
+ Previously, the `:trace_only` option to NewRelic::Agent.notice_error was deprecated and replaced with `:expected`. This deprecated option has been removed.
117
+
118
+ * **Removed deprecated api methods**
119
+
120
+ Previously the api methods `create_distributed_trace_payload` and `accept_distributed_trace_payload` were deprecated. These have now been removed. Instead, please see `insert_distributed_trace_headers` and `accept_distributed_trace_headers`, respectively.
121
+
122
+ * **Bugfix: Prevent browser monitoring middleware from installing to middleware multiple times**
123
+
124
+ In rare cases on jRuby, the BrowserMonitoring middleware could attempt to install itself
125
+ multiple times at start up. This bug fix addresses that by using a mutex to introduce
126
+ thread safety to the operation. Sintra in particular can have this race condition because
127
+ its middleware stack is not installed until the first request is received.
128
+
129
+ * **Skip constructing Time for transactions**
130
+
131
+ Thanks to @viraptor, we are no longer constructing an unused Time object with every call to starting a new Transaction.
132
+
133
+ * **Bugfix: nil Middlewares injection now prevented and gracefully handled in Sinatra**
134
+
135
+ Previously, the agent could potentially inject multiples of an instrumented middleware if Sinatra received many
136
+ requests at once during start up and initialization due to Sinatra's ability to delay full start up as long as possible.
137
+ This has now been fixed and the Ruby agent correctly instruments only once as well as gracefully handles nil middleware
138
+ classes in general.
139
+
140
+ * **Bugfix: Ensure transaction nesting max depth is always consistent with length of segments**
141
+
142
+ Thanks to @warp for noticing and fixing the scenario where Transaction nesting_max_depth can get out of sync
143
+ with segments length resulting in an exception when attempting to nest the initial segment which does not exist.
144
+
145
+ ## v6.15.0
146
+
147
+ * **Official Ruby 3.0 support**
148
+
149
+ The ruby agent has been verified to run on ruby 3.0.0
150
+
151
+ * **Added support for Rails 6.1**
152
+
153
+ The ruby agent has been verified to run with Rails 6.1
154
+ Special thanks to @hasghari for setting this up!
155
+
156
+ * **Added support for Sidekiq 6.0, 6.1**
157
+
158
+ The ruby agent has been verified to run with both 6.0 and 6.1 versions of sidekiq
159
+
160
+ * **Bugfix: No longer overwrites sidekiq trace data**
161
+
162
+ Distributed tracing data is now added to the job trace info rather than overwriting the existing data.
163
+
164
+ * **Bugfix: Fixes cases where errors are reported for spans with no other attributes**
165
+
166
+ Previously, in cases where a span does not have any agent/custom attributes on it, but an error
167
+ is noticed and recorded against the span, a `FrozenError: can't modify frozen Hash` is thrown.
168
+ This is now fixed and errors are now correctly recorded against such span events.
169
+
170
+ * **Bugfix: `DistributedTracing.insert_distributed_trace_headers` Supportability metric now recorded**
171
+
172
+ Previously, API calls to `DistributedTracing.insert_distributed_trace_headers` would lead to an exception
173
+ about the missing supportability metric rather than flowing through the API implementation as intended.
174
+ This would potentially lead to broken distributed traces as the trace headers were not inserted on the API call.
175
+ `DistributedTracing.insert_distributed_trace_headers` now correctly records the supportability metric and
176
+ inserts the distributed trace headers as intended.
177
+
178
+ * **Bugfix: child completions after parent completes sometimes throws exception attempting to access nil parent**
179
+
180
+ In scenarios where the child segment/span is completing after the parent in jRuby, the parent may have already
181
+ been freed and no longer accessible. This would lead to an attempt to call `descendant_complete` on a Nil
182
+ object. This is fixed to protect against calling the `descendant_complete` in such cases.
183
+
184
+ * **Feature: implements `force_install_exit_handler` config flag**
185
+
186
+ The `force_install_exit_handler` configuration flag allows an application to instruct the agent to install its
187
+ graceful shutdown exit handler, which will send any locally cached data to the New Relic collector prior to the
188
+ application shutting down. This is useful for when the primary framework has an embedded Sinatra application that
189
+ is otherwise detected and skips installing the exit hook for graceful shutdowns.
190
+
191
+ * **Default prepend_net_instrumentation to false**
192
+
193
+ Previously, `prepend_net_instrumentation` defaulted to true. However, many gems are still using monkey patching on Net::HTTP, which causes compatibility issues with using prepend. Defaulting this to false minimizes instances of
194
+ unexpected compatibilty issues.
195
+
196
+ ## v6.14.0
197
+
198
+ * **Bugfix: Method tracers no longer cloning arguments**
199
+
200
+ Previously, when calling add_method_tracer with certain combination of arguments, it would lead to the wrapped method's arguments being cloned rather than passed to the original method for manipulation as intended. This has been fixed.
201
+
202
+ * **Bugfix: Delayed Job instrumentation fixed for Ruby 2.7+**
203
+
204
+ Previously, the agent was erroneousy separating positional and keyword arguments on the instrumented method calls into
205
+ Delayed Job's library. The led to Delayed job not auto-instrumenting correctly and has been fixed.
206
+
207
+ * **Bugfix: Ruby 2.7+ methods sometimes erroneously attributed compiler warnings to the Agent's `add_method_tracer`**
208
+
209
+ The specific edge cases presented are now fixed by this release of the agent. There are still some known corner-cases
210
+ that will be resolved with upcoming changes in next major release of the Agent. If you encounter a problem with adding
211
+ method tracers and compiler warnings raised, please continue to submit small repoducible examples.
212
+
213
+ * **Bugfix: Ruby 2.7+ fix for keyword arguments on Rack apps is unnecessary and removed**
214
+
215
+ A common fix for positional and keyword arguments for method parameters was implemented where it was not needed and
216
+ led to RackApps getting extra arguments converted to keyword arguments rather than Hash when it expected one. This
217
+ Ruby 2.7+ change was reverted so that Rack apps behave correctly for Ruby >= 2.7.
218
+
219
+ * **Feature: captures incoming and outgoing request headers for distributed tracing**
220
+
221
+ HTTP request headers will be logged when log level is at least debug level. Similarly, request headers
222
+ for exchanges with New Relic servers are now audit logged when audit logging is enabled.
223
+
224
+ * **Bugfix: `newrelic.yml.erb` added to the configuration search path**
225
+
226
+ Previously, when a user specifies a `newrelic.yml.erb` and no `newrelic.yml` file, the agent fails to find
227
+ the `.erb` file because it was not in the list of files searched at startup. The Ruby agent has long supported this as a
228
+ means of configuring the agent programatically. The `newrelic.yml.erb` filename is restored to the search
229
+ path and will be utilized if present. NOTE: `newrelic.yml` still takes precedence over `newrelic.yml.erb` If found,
230
+ the `.yml` file is used instead of the `.erb` file. Search directories and order of traversal remain unchanged.
231
+
232
+ * **Bugfix: dependency detection of Redis now works without raising an exception**
233
+
234
+ Previously, when detecting if Redis was available to instrument, the dependency detection would fail with an Exception raised
235
+ (with side effect of not attempting to instrument Redis). This is now fixed with a better dependency check that resolves falsly without raising an `Exception`.
236
+
237
+ * **Bugfix: Gracefully handles NilClass as a Middleware Class when instrumenting**
238
+
239
+ Previously, if a NilClass is passed as the Middleware Class to instrument when processing the middleware stack,
240
+ the agent would fail to fully load and instrument the middleware stack. This fix gracefully skips over nil classes.
241
+
242
+ * **Memory Sampler updated to recognize macOS Big Sur**
243
+
244
+ Previously, the agent was unable to recognize the platform macOS Big Sur in the memory sampler, resulting in an error being logged. The memory sampler is now able to recognize Big Sur.
245
+
246
+ * **Prepend implementation of Net::HTTP instrumentation available**
247
+
248
+ There is now a config option (`prepend_net_instrumentation`) that will enable the agent to use prepend while instrumenting Net::HTTP. This option is set to true by default.
249
+
3
250
  ## v6.13.1
4
251
 
5
252
  * **Bugfix: obfuscating URLs to external services no longer modifying original URI**
data/CONTRIBUTING.md CHANGED
@@ -6,8 +6,7 @@ development team.
6
6
 
7
7
  When contributing, keep in mind that the agent runs in a wide variety of Ruby
8
8
  language implementations (e.g. 2.x.x, jruby, etc.) as well as a wide variety of
9
- application environments (e.g. Rails, Sinatra, roll-your-own, etc.) See [Ruby agent requirements and supported frameworks]
10
- (https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/ruby-agent-requirements-supported-frameworks)
9
+ application environments (e.g. Rails, Sinatra, roll-your-own, etc.) See [Ruby agent requirements and supported frameworks](https://docs.newrelic.com/docs/agents/ruby-agent/getting-started/ruby-agent-requirements-supported-frameworks)
11
10
  for the current full list.
12
11
 
13
12
  Because of this, we need to be more defensive in our coding practices than most
@@ -85,6 +84,18 @@ release from this repo, use the appropriate tag. New Relic usually pushes beta
85
84
  versions of a release to a working branch before tagging them for General
86
85
  Availability.
87
86
 
87
+ ## Development Environment Setup
88
+
89
+ 1. Fork and clone the repo locally
90
+ - Fork the repository inside GitHub
91
+ - `git clone git@github.com:<gh username>/newrelic-ruby-agent.git`
92
+ 1. Pick a Ruby version
93
+ - Use rbenv or rvm to install any version of Ruby between 2.2 up to 3.0.1
94
+ 1. Install development dependencies
95
+ - `bundle install`
96
+ 1. Check that your env is setup correctly
97
+ - `bundle exec rake`
98
+
88
99
  ## Testing
89
100
 
90
101
  The agent includes a suite of unit and functional tests which should be used to
data/README.md CHANGED
@@ -47,7 +47,7 @@ and then require the New Relic Ruby agent in your Ruby start-up sequence:
47
47
  require 'newrelic_rpm'
48
48
  ```
49
49
 
50
- #### Oher Environments
50
+ #### Other Environments
51
51
 
52
52
  Assuming you have installed the agent per above, you may also need to tell the Ruby agent to start for some frameworks and non-framework environments. To do so, add the following to your Ruby start-up sequence start the agent:
53
53
 
@@ -133,4 +133,4 @@ Thank you, and may your application scale to infinity plus one.
133
133
 
134
134
  Lew Cirne, Founder and CEO
135
135
 
136
- New Relic, Inc.
136
+ New Relic, Inc.
@@ -44,8 +44,10 @@ module NewRelic
44
44
  require 'new_relic/agent/sql_sampler'
45
45
  require 'new_relic/agent/commands/thread_profiler_session'
46
46
  require 'new_relic/agent/error_collector'
47
+ require 'new_relic/agent/error_filter'
47
48
  require 'new_relic/agent/sampler'
48
49
  require 'new_relic/agent/database'
50
+ require 'new_relic/agent/database_adapter'
49
51
  require 'new_relic/agent/datastores'
50
52
  require 'new_relic/agent/pipe_channel_manager'
51
53
  require 'new_relic/agent/configuration'
@@ -282,12 +284,6 @@ module NewRelic
282
284
  def notice_error(exception, options={})
283
285
  record_api_supportability_metric(:notice_error)
284
286
 
285
- if options.has_key?(:trace_only)
286
- NewRelic::Agent.logger.log_once(:warn, :trace_only_deprecated,
287
- 'Passing the :trace_only option to NewRelic::Agent.notice_error is deprecated. Please use :expected instead.')
288
- options[:expected] = options.delete(:trace_only)
289
- end
290
-
291
287
  Transaction.notice_error(exception, options)
292
288
  nil # don't return a noticed error datastructure. it can only hurt.
293
289
  end
@@ -763,13 +759,15 @@ module NewRelic
763
759
  # In previous agents there was a corresponding footer required, but all the
764
760
  # work is now done by this single method.
765
761
  #
762
+ # @param [String] nonce The nonce to use in the javascript tag for browser instrumentation
763
+ #
766
764
  # @api public
767
765
  #
768
- def browser_timing_header
766
+ def browser_timing_header(nonce=nil)
769
767
  record_api_supportability_metric(:browser_timing_header)
770
768
 
771
769
  return "" unless agent
772
- agent.javascript_instrumentor.browser_timing_header
770
+ agent.javascript_instrumentor.browser_timing_header(nonce)
773
771
  end
774
772
 
775
773
  # @!endgroup
@@ -17,6 +17,7 @@ require 'new_relic/agent/new_relic_service'
17
17
  require 'new_relic/agent/pipe_service'
18
18
  require 'new_relic/agent/configuration/manager'
19
19
  require 'new_relic/agent/database'
20
+ require 'new_relic/agent/instrumentation/resque/helper'
20
21
  require 'new_relic/agent/commands/agent_command_router'
21
22
  require 'new_relic/agent/event_listener'
22
23
  require 'new_relic/agent/distributed_tracing'
@@ -395,10 +396,8 @@ module NewRelic
395
396
  end
396
397
 
397
398
  def should_install_exit_handler?
398
- (
399
- Agent.config[:send_data_on_exit] &&
400
- !sinatra_classic_app?
401
- )
399
+ return false unless Agent.config[:send_data_on_exit]
400
+ !sinatra_classic_app? || Agent.config[:force_install_exit_handler]
402
401
  end
403
402
 
404
403
  def install_exit_handler
@@ -472,7 +471,7 @@ module NewRelic
472
471
  # before Resque calls Process.daemon (Jira RUBY-857)
473
472
  def defer_for_resque?
474
473
  NewRelic::Agent.config[:dispatcher] == :resque &&
475
- NewRelic::LanguageSupport.can_fork? &&
474
+ NewRelic::Agent::Instrumentation::Resque::Helper.resque_fork_per_job? &&
476
475
  !PipeChannelManager.listener.started?
477
476
  end
478
477
 
@@ -26,6 +26,16 @@ module NewRelic
26
26
  !@log.nil?
27
27
  end
28
28
 
29
+ def log_request_headers(uri, headers)
30
+ return unless enabled? && allowed_endpoint?(uri)
31
+ @log.info("REQUEST HEADERS: #{headers}")
32
+ rescue StandardError, SystemStackError, SystemCallError => e
33
+ ::NewRelic::Agent.logger.warn("Failed writing request headers to audit log", e)
34
+ rescue Exception => e
35
+ ::NewRelic::Agent.logger.warn("Failed writing request headers to audit log with exception. Re-raising in case of interrupt.", e)
36
+ raise
37
+ end
38
+
29
39
  def log_request(uri, data, marshaller)
30
40
  return unless enabled? && allowed_endpoint?(uri)
31
41
 
@@ -32,8 +32,7 @@ module NewRelic
32
32
  COMMA = ",".freeze
33
33
 
34
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']
35
+ constants = NewRelic::Agent.config[:'autostart.denylisted_constants']
37
36
 
38
37
  denylisted?(constants) do |name|
39
38
  constant_is_defined?(name)
@@ -15,6 +15,35 @@ module NewRelic
15
15
  end
16
16
  end
17
17
 
18
+ # Combines potentially two properties into one.
19
+ # Given the example:
20
+ # :disable_net_http and :prepend_net_instrumentation
21
+ # if :disable_net_http is true, then returned value is "disabled"
22
+ # if :prepend_net_instrumentation is false, then returned value is "chain"
23
+ # otherwise, "auto" is returned.
24
+ #
25
+ # Intent is:
26
+ # - if user sets disable_xxx property, then don't instrument
27
+ # - if user set prepend to `false` then we use method_alias chaining
28
+ # - auto, when returned means, try to use prepend unless conflicting gems discovered
29
+ #
30
+ def self.instrumentation_value_of(disable_key, prepend_key=nil)
31
+ Proc.new do
32
+ if NewRelic::Agent.config[disable_key]
33
+ "disabled"
34
+ elsif prepend_key && !NewRelic::Agent.config[prepend_key]
35
+ "chain"
36
+ else
37
+ "auto"
38
+ end
39
+ end
40
+ end
41
+
42
+ def self.deprecated_description new_setting, description
43
+ link_ref = new_setting.to_s.gsub(".", "-")
44
+ %{Please see: [#{new_setting}](docs/agents/ruby-agent/configuration/ruby-agent-configuration##{link_ref}). \n\n#{description}}
45
+ end
46
+
18
47
  class Boolean
19
48
  def self.===(o)
20
49
  TrueClass === o or FalseClass === o
@@ -48,23 +77,30 @@ module NewRelic
48
77
  Proc.new {
49
78
  paths = [
50
79
  File.join("config","newrelic.yml"),
51
- File.join("newrelic.yml")
80
+ File.join("newrelic.yml"),
81
+ File.join("config","newrelic.yml.erb"),
82
+ File.join("newrelic.yml.erb")
52
83
  ]
53
84
 
54
85
  if NewRelic::Control.instance.root
55
86
  paths << File.join(NewRelic::Control.instance.root, "config", "newrelic.yml")
56
87
  paths << File.join(NewRelic::Control.instance.root, "newrelic.yml")
88
+ paths << File.join(NewRelic::Control.instance.root, "config", "newrelic.yml.erb")
89
+ paths << File.join(NewRelic::Control.instance.root, "newrelic.yml.erb")
57
90
  end
58
91
 
59
92
  if ENV["HOME"]
60
93
  paths << File.join(ENV["HOME"], ".newrelic", "newrelic.yml")
61
94
  paths << File.join(ENV["HOME"], "newrelic.yml")
95
+ paths << File.join(ENV["HOME"], ".newrelic", "newrelic.yml.erb")
96
+ paths << File.join(ENV["HOME"], "newrelic.yml.erb")
62
97
  end
63
98
 
64
99
  # If we're packaged for warbler, we can tell from GEM_HOME
65
100
  if ENV["GEM_HOME"] && ENV["GEM_HOME"].end_with?(".jar!")
66
101
  app_name = File.basename(ENV["GEM_HOME"], ".jar!")
67
102
  paths << File.join(ENV["GEM_HOME"], app_name, "config", "newrelic.yml")
103
+ paths << File.join(ENV["GEM_HOME"], app_name, "config", "newrelic.yml.erb")
68
104
  end
69
105
 
70
106
  paths
@@ -94,7 +130,8 @@ module NewRelic
94
130
  when 4..6
95
131
  :rails_notifications
96
132
  else
97
- ::NewRelic::Agent.logger.error "Detected unsupported Rails version #{Rails::VERSION::STRING}"
133
+ ::NewRelic::Agent.logger.warn "Detected untested Rails version #{Rails::VERSION::STRING}"
134
+ :rails_notifications
98
135
  end
99
136
  when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra
100
137
  when defined?(::NewRelic::IA) then :external
@@ -288,14 +325,14 @@ module NewRelic
288
325
  :public => true,
289
326
  :type => String,
290
327
  :allowed_from_server => false,
291
- :description => 'Your New Relic <a href="https://docs.newrelic.com/docs/accounts-partnerships/accounts/account-setup/license-key">license key</a>.'
328
+ :description => 'Your New Relic [license key](/docs/accounts-partnerships/accounts/account-setup/license-key).'
292
329
  },
293
330
  :agent_enabled => {
294
331
  :default => DefaultSource.agent_enabled,
295
332
  :public => true,
296
333
  :type => Boolean,
297
334
  :allowed_from_server => false,
298
- :description => 'If <code>true</code>, allows the Ruby agent to run.'
335
+ :description => 'If `true`, allows the Ruby agent to run.'
299
336
  },
300
337
  :enabled => {
301
338
  :default => true,
@@ -311,7 +348,7 @@ module NewRelic
311
348
  :type => String,
312
349
  :allowed_from_server => false,
313
350
  :transform => DefaultSource.method(:convert_to_list_on_semicolon),
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>.'
351
+ :description => 'Specify the [application name](/docs/apm/new-relic-apm/installation-configuration/name-your-application) used to aggregate data in the New Relic UI. To report data to [multiple apps at the same time](/docs/apm/new-relic-apm/installation-configuration/using-multiple-names-app), specify a list of names separated by a semicolon `;`. For example, `MyApp` or `MyStagingApp;Instance1`.'
315
352
  },
316
353
  :entity_guid => {
317
354
  :default => nil,
@@ -319,35 +356,35 @@ module NewRelic
319
356
  :public => true,
320
357
  :type => String,
321
358
  :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.'
359
+ :description => 'The [Entity GUID](/attribute-dictionary/span/entityguid) for the entity running this agent.'
323
360
  },
324
361
  :monitor_mode => {
325
362
  :default => value_of(:enabled),
326
363
  :public => true,
327
364
  :type => Boolean,
328
365
  :allowed_from_server => false,
329
- :description => 'When <code>true</code>, the agent transmits data about your app to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>.'
366
+ :description => 'When `true`, the agent transmits data about your app to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector).'
330
367
  },
331
368
  :test_mode => {
332
369
  :default => false,
333
370
  :public => false,
334
371
  :type => Boolean,
335
372
  :allowed_from_server => false,
336
- :description => 'Used in tests for agent to start up but not connect to collector. Formerly used <code>developer_mode</code> in test config for this purpose.'
373
+ :description => 'Used in tests for agent to start up but not connect to collector. Formerly used `developer_mode` in test config for this purpose.'
337
374
  },
338
375
  :log_level => {
339
376
  :default => 'info',
340
377
  :public => true,
341
378
  :type => String,
342
379
  :allowed_from_server => false,
343
- :description => 'Sets the level of detail of log messages. Possible log levels, in increasing verbosity, are: <code>error</code>, <code>warn</code>, <code>info</code> or <code>debug</code>.'
380
+ :description => 'Sets the level of detail of log messages. Possible log levels, in increasing verbosity, are: `error`, `warn`, `info` or `debug`.'
344
381
  },
345
382
  :high_security => {
346
383
  :default => false,
347
384
  :public => true,
348
385
  :type => Boolean,
349
386
  :allowed_from_server => false,
350
- :description => 'If <code>true</code>, enables <a href="https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security">high security mode</a>. Ensure you understand the implications of high security mode before enabling this setting.'
387
+ :description => 'If `true`, enables [high security mode](/docs/accounts-partnerships/accounts/security/high-security). Ensure you understand the implications of high security mode before enabling this setting.'
351
388
  },
352
389
  :security_policies_token => {
353
390
  :default => '',
@@ -362,7 +399,7 @@ module NewRelic
362
399
  :public => true,
363
400
  :type => String,
364
401
  :allowed_from_server => false,
365
- :description => 'Defines a host for communicating with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> via a proxy server.'
402
+ :description => 'Defines a host for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
366
403
  },
367
404
  :proxy_port => {
368
405
  :default => 8080,
@@ -370,7 +407,7 @@ module NewRelic
370
407
  :public => true,
371
408
  :type => Integer,
372
409
  :allowed_from_server => false,
373
- :description => 'Defines a port for communicating with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> via a proxy server.'
410
+ :description => 'Defines a port for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
374
411
  },
375
412
  :proxy_user => {
376
413
  :default => nil,
@@ -379,7 +416,7 @@ module NewRelic
379
416
  :type => String,
380
417
  :allowed_from_server => false,
381
418
  :exclude_from_reported_settings => true,
382
- :description => 'Defines a user for communicating with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> via a proxy server.'
419
+ :description => 'Defines a user for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
383
420
  },
384
421
  :proxy_pass => {
385
422
  :default => nil,
@@ -388,27 +425,26 @@ module NewRelic
388
425
  :type => String,
389
426
  :allowed_from_server => false,
390
427
  :exclude_from_reported_settings => true,
391
- :description => 'Defines a password for communicating with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> via a proxy server.'
428
+ :description => 'Defines a password for communicating with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) via a proxy server.'
392
429
  },
393
430
  :capture_params => {
394
431
  :default => false,
395
432
  :public => true,
396
433
  :type => Boolean,
397
434
  :allowed_from_server => false,
398
- :description => 'When <code>true</code>, the agent captures HTTP request parameters ' \
435
+ :description => 'When `true`, the agent captures HTTP request parameters ' \
399
436
  '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.' \
437
+ '[`TransactionError` events](/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241)'\
402
438
  "\n" \
403
439
  '<div class="callout-warning">' \
404
440
  "\n" \
405
- '<p>When using the <code>capture_params</code> setting, the Ruby agent will not attempt ' \
441
+ 'When using the `capture_params` setting, the Ruby agent will not attempt ' \
406
442
  '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 ' \
443
+ 'request parameters, use the [`attributes.include` setting](/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby) ' \
444
+ 'instead. For more information, see the ' \
409
445
  '<a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">' \
410
446
  'Ruby attribute examples</a>.' \
411
- "</p>\n" \
447
+ "\n" \
412
448
  '</div>'
413
449
  },
414
450
  :config_path => {
@@ -439,73 +475,43 @@ module NewRelic
439
475
  :allowed_from_server => false,
440
476
  :description => 'Autodetected application framework used to enable framework-specific functionality.'
441
477
  },
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
478
  :'autostart.denylisted_constants' => {
454
479
  :default => 'Rails::Console',
455
480
  :public => true,
456
481
  :type => String,
457
482
  :allowed_from_server => false,
458
- :description => 'Specify a list of constants that should prevent the agent from starting automatically. Separate individual constants with a comma <code>,</code>. For example, <code>Rails::Console,UninstrumentedBackgroundJob</code>.'
459
- },
460
- :'autostart.blacklisted_executables' => {
461
- :default => 'irb,rspec',
462
- :public => true,
463
- :type => String,
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.'
483
+ :description => 'Specify a list of constants that should prevent the agent from starting automatically. Separate individual constants with a comma `,`. For example, `Rails::Console,UninstrumentedBackgroundJob`.'
470
484
  },
471
485
  :'autostart.denylisted_executables' => {
472
- :default => value_of(:'autostart.blacklisted_executables'),
473
- :public => true,
474
- :type => String,
475
- :allowed_from_server => false,
476
- :description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, <code>rake,my_ruby_script.rb</code>.'
477
- },
478
- :'autostart.blacklisted_rake_tasks' => {
479
- :default => AUTOSTART_DENYLISTED_RAKE_TASKS,
486
+ :default => 'irb,rspec',
480
487
  :public => true,
481
488
  :type => String,
482
489
  :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.'
490
+ :description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, `rake,my_ruby_script.rb`.'
488
491
  },
489
492
  :'autostart.denylisted_rake_tasks' => {
490
- :default => value_of(:'autostart.blacklisted_rake_tasks'),
493
+ :default => AUTOSTART_DENYLISTED_RAKE_TASKS,
491
494
  :public => true,
492
495
  :type => String,
493
496
  :allowed_from_server => false,
494
- :description => 'Defines a comma-delimited list of Rake tasks that the agent should not instrument. For example, <code>assets:precompile,db:migrate</code>.'
497
+ :description => 'Defines a comma-delimited list of Rake tasks that the agent should not instrument. For example, `assets:precompile,db:migrate`.'
495
498
  },
499
+
496
500
  :disable_rake => {
497
501
  :default => false,
498
502
  :public => true,
499
503
  :type => Boolean,
500
504
  :allowed_from_server => false,
501
- :description => 'If <code>true</code>, disables Rake instrumentation.'
505
+ :deprecated => true,
506
+ :description => deprecated_description(:'instrumentation.rake', 'If `true`, disables Rake instrumentation.')
502
507
  },
503
508
  :disable_rake_instrumentation => {
504
509
  :default => false,
505
510
  :public => false,
506
511
  :type => Boolean,
507
512
  :allowed_from_server => false,
508
- :description => 'Enable or disable Rake instrumentation. Preferred key is `disable_rake`'
513
+ :deprecated => true,
514
+ :description => deprecated_description(:'instrumentation.rake', 'Enable or disable Rake instrumentation. Preferred key is `disable_rake`')
509
515
  },
510
516
  :'rake.tasks' => {
511
517
  :default => [],
@@ -528,27 +534,14 @@ module NewRelic
528
534
  :type => Float,
529
535
  :allowed_from_server => true,
530
536
  :deprecated => true,
531
- :description => 'Deprecated. For agent versions 3.5.0 or higher, <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/apdex/changing-your-apdex-settings">set your Apdex T via the New Relic UI</a>.'
537
+ :description => 'Deprecated. For agent versions 3.5.0 or higher, [set your Apdex T via the New Relic UI](/docs/apm/new-relic-apm/apdex/changing-your-apdex-settings).'
532
538
  },
533
539
  :'strip_exception_messages.enabled' => {
534
540
  :default => value_of(:high_security),
535
541
  :public => true,
536
542
  :type => Boolean,
537
543
  :allowed_from_server => false,
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>.'
539
- },
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.'
544
+ :description => 'If true, the agent strips messages from all exceptions except those in the [allowlist](#strip_exception_messages-allowlist). Enabled automatically in [high security mode](/docs/accounts-partnerships/accounts/security/high-security).'
552
545
  },
553
546
  :'strip_exception_messages.allowed_classes' => {
554
547
  :default => '',
@@ -556,7 +549,7 @@ module NewRelic
556
549
  :type => String,
557
550
  :allowed_from_server => false,
558
551
  :transform => DefaultSource.method(:convert_to_constant_list),
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>.'
552
+ :description => 'Specify a list of exceptions you do not want the agent to strip when [strip_exception_messages](#strip_exception_messages-enabled) is `true`. Separate exceptions with a comma. For example, `"ImportantException,PreserveMessageException"`.'
560
553
  },
561
554
  :host => {
562
555
  :default => DefaultSource.host,
@@ -591,14 +584,14 @@ module NewRelic
591
584
  :public => true,
592
585
  :type => Boolean,
593
586
  :allowed_from_server => false,
594
- :description => 'When set to <code>true</code>, forces a synchronous connection to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> during application startup. For very short-lived processes, this helps ensure the New Relic agent has time to report.'
587
+ :description => 'When set to `true`, forces a synchronous connection to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) during application startup. For very short-lived processes, this helps ensure the New Relic agent has time to report.'
595
588
  },
596
589
  :send_data_on_exit => {
597
590
  :default => true,
598
591
  :public => true,
599
592
  :type => Boolean,
600
593
  :allowed_from_server => false,
601
- :description => 'If <code>true</code>, enables the exit handler that sends data to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a> before shutting down.'
594
+ :description => 'If `true`, enables the exit handler that sends data to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) before shutting down.'
602
595
  },
603
596
  :max_payload_size_in_bytes => {
604
597
  :default => 1000000,
@@ -696,6 +689,18 @@ module NewRelic
696
689
  :allowed_from_server => false,
697
690
  :description => 'Enable or disable retrying failed connections to the New Relic data collection service.'
698
691
  },
692
+ :force_install_exit_handler => {
693
+ :default => false,
694
+ :public => true,
695
+ :type => Boolean,
696
+ :allowed_from_server => false,
697
+ :description => 'Forces the exit handler that sends all cached data to collector ' \
698
+ 'before shutting down to be installed regardless of detecting scenarios where it generally should not be. ' \
699
+ 'Known use-case for this option is where Sinatra is running as an embedded service within another framework ' \
700
+ 'and the agent is detecting the Sinatra app and skipping the `at_exit` handler as a result. Sinatra classically ' \
701
+ 'runs the entire application in an `at_exit` block and would otherwise misbehave if the Agent\'s `at_exit` handler ' \
702
+ 'was also installed in those circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting.'
703
+ },
699
704
  :force_reconnect => {
700
705
  :default => false,
701
706
  :public => false,
@@ -729,7 +734,7 @@ module NewRelic
729
734
  :public => true,
730
735
  :type => Boolean,
731
736
  :allowed_from_server => false,
732
- :description => 'If <code>true</code>, enables an audit log which logs communications with the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>.'
737
+ :description => 'If `true`, enables an audit log which logs communications with the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector).'
733
738
  },
734
739
  :'audit_log.path' => {
735
740
  :default => DefaultSource.audit_log_path,
@@ -751,49 +756,53 @@ module NewRelic
751
756
  :public => true,
752
757
  :type => Boolean,
753
758
  :allowed_from_server => false,
754
- :description => 'If <code>true</code>, disables the collection of sampler metrics. Sampler metrics are metrics that are not event-based (such as CPU time or memory usage).'
759
+ :description => 'If `true`, disables the collection of sampler metrics. Sampler metrics are metrics that are not event-based (such as CPU time or memory usage).'
755
760
  },
756
761
  :disable_resque => {
757
762
  :default => false,
758
763
  :public => true,
759
764
  :type => Boolean,
765
+ :deprecated => true,
760
766
  :allowed_from_server => false,
761
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/resque-instrumentation">Resque instrumentation</a>.'
767
+ :description => deprecated_description(:'instrumentation.resque', 'If `true`, disables [Resque instrumentation](/docs/agents/ruby-agent/background-jobs/resque-instrumentation).')
762
768
  },
763
769
  :disable_sidekiq => {
764
770
  :default => false,
765
771
  :public => true,
766
772
  :type => Boolean,
767
773
  :allowed_from_server => false,
768
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/sidekiq-instrumentation">Sidekiq instrumentation</a>.'
774
+ :description => 'If `true`, disables [Sidekiq instrumentation](/docs/agents/ruby-agent/background-jobs/sidekiq-instrumentation).'
769
775
  },
770
776
  :disable_dj => {
771
777
  :default => false,
772
778
  :public => true,
779
+ :deprecated => true,
773
780
  :type => Boolean,
774
781
  :allowed_from_server => false,
775
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/background-jobs/delayedjob">Delayed::Job instrumentation</a>.'
782
+ :description => deprecated_description(:'instrumentation.delayed_job', 'If `true`, disables [Delayed::Job instrumentation](/docs/agents/ruby-agent/background-jobs/delayedjob).'
783
+ )
776
784
  },
777
785
  :disable_sinatra => {
778
786
  :default => false,
779
787
  :public => true,
780
788
  :type => Boolean,
789
+ :deprecated => true,
781
790
  :allowed_from_server => false,
782
- :description => 'If <code>true</code> , disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/sinatra-support">Sinatra instrumentation</a>.'
791
+ :description => deprecated_description(:'instrumentation.sinatra', 'If `true` , disables [Sinatra instrumentation](/docs/agents/ruby-agent/frameworks/sinatra-support).' )
783
792
  },
784
793
  :disable_sinatra_auto_middleware => {
785
794
  :default => false,
786
795
  :public => true,
787
796
  :type => Boolean,
788
797
  :allowed_from_server => false,
789
- :description => 'If <code>true</code>, disables agent middleware for Sinatra. This middleware is responsible for advanced feature support such as <a href="https://docs.newrelic.com/docs/apm/transactions/cross-application-traces/cross-application-tracing">cross application tracing</a>, <a href="https://docs.newrelic.com/docs/browser/new-relic-browser/getting-started/new-relic-browser">page load timing</a>, and <a href="https://docs.newrelic.com/docs/apm/applications-menu/events/view-apm-error-analytics">error collection</a>.'
798
+ :description => 'If `true`, disables agent middleware for Sinatra. This middleware is responsible for advanced feature support such as [cross application tracing](/docs/apm/transactions/cross-application-traces/cross-application-tracing), [page load timing](/docs/browser/new-relic-browser/getting-started/new-relic-browser), and [error collection](/docs/apm/applications-menu/events/view-apm-error-analytics).'
790
799
  },
791
800
  :disable_view_instrumentation => {
792
801
  :default => false,
793
802
  :public => true,
794
803
  :type => Boolean,
795
804
  :allowed_from_server => false,
796
- :description => 'If <code>true</code>, disables view instrumentation.'
805
+ :description => 'If `true`, disables view instrumentation.'
797
806
  },
798
807
  :disable_harvest_thread => {
799
808
  :default => false,
@@ -814,21 +823,187 @@ module NewRelic
814
823
  :public => true,
815
824
  :type => Boolean,
816
825
  :allowed_from_server => false,
817
- :description => 'If <code>true</code>, disables active record instrumentation.'
826
+ :description => 'If `true`, disables active record instrumentation.'
818
827
  },
819
828
  :prepend_active_record_instrumentation => {
820
829
  :default => false,
821
830
  :public => true,
822
831
  :type => Boolean,
823
832
  :allowed_from_server => false,
824
- :description => 'If <code>true</code>, uses Module.prepend rather than alias_method for ActiveRecord instrumentation.'
833
+ :description => 'If `true`, uses `Module#prepend` rather than `alias_method` for ActiveRecord instrumentation.'
834
+ },
835
+ :prepend_net_instrumentation => {
836
+ :default => true,
837
+ :public => false,
838
+ :type => Boolean,
839
+ :allowed_from_server => false,
840
+ :deprecated => true,
841
+ :description => deprecated_description(:'instrumentation.net_http',
842
+ 'If `true`, uses `Module#prepend` rather than alias_method for Net::HTTP instrumentation.'
843
+ )
844
+ },
845
+ :'instrumentation.net_http' => {
846
+ :default => instrumentation_value_of(:disable_net_http, :prepend_net_instrumentation),
847
+ :public => true,
848
+ :type => String,
849
+ :dynamic_name => true,
850
+ :allowed_from_server => false,
851
+ :description => "Controls auto-instrumentation of Net::HTTP at start up. May be one of [auto|prepend|chain|disabled]."
852
+ },
853
+ :'instrumentation.typhoeus' => {
854
+ :default => instrumentation_value_of(:disable_typhoeus),
855
+ :public => true,
856
+ :type => String,
857
+ :dynamic_name => true,
858
+ :allowed_from_server => false,
859
+ :description => "Controls auto-instrumentation of Typhoeus at start up. May be one of [auto|prepend|chain|disabled]."
860
+ },
861
+ :'instrumentation.bunny' => {
862
+ :default => instrumentation_value_of(:disable_bunny),
863
+ :public => true,
864
+ :type => String,
865
+ :dynamic_name => true,
866
+ :allowed_from_server => false,
867
+ :description => 'Controls auto-instrumentation of bunny at start up. May be one of [auto|prepend|chain|disabled].'
868
+ },
869
+ :'instrumentation.httprb' => {
870
+ :default => instrumentation_value_of(:disable_httprb),
871
+ :public => true,
872
+ :type => String,
873
+ :dynamic_name => true,
874
+ :allowed_from_server => false,
875
+ :description => 'Controls auto-instrumentation of http.rb gem at start up. May be one of [auto|prepend|chain|disabled].'
876
+ },
877
+ :'instrumentation.resque' => {
878
+ :default => instrumentation_value_of(:disable_resque),
879
+ :public => true,
880
+ :type => String,
881
+ :dynamic_name => true,
882
+ :allowed_from_server => false,
883
+ :description => "Controls auto-instrumentation of resque at start up. May be one of [auto|prepend|chain|disabled]."
884
+ },
885
+ :'instrumentation.redis' => {
886
+ :default => instrumentation_value_of(:disable_redis),
887
+ :public => true,
888
+ :type => String,
889
+ :dynamic_name => true,
890
+ :allowed_from_server => false,
891
+ :description => "Controls auto-instrumentation of Redis at start up. May be one of [auto|prepend|chain|disabled]."
892
+ },
893
+ :'instrumentation.rake' => {
894
+ :default => instrumentation_value_of(:disable_rake),
895
+ :public => :true,
896
+ :type => String,
897
+ :dynamic_name => true,
898
+ :allowed_from_server => false,
899
+ :description => "Controls auto-instrumentation of rake at start up. May be one of [auto|prepend|chain|disabled]."
900
+ },
901
+ :'instrumentation.mongo' => {
902
+ :default => instrumentation_value_of(:disable_mongo),
903
+ :public => :true,
904
+ :type => String,
905
+ :dynamic_name => true,
906
+ :allowed_from_server => false,
907
+ :description => "Controls auto-instrumentation of Mongo at start up. May be one of [enabled|disabled]."
908
+ },
909
+ :'instrumentation.delayed_job' => {
910
+ :default => instrumentation_value_of(:disable_dj),
911
+ :public => true,
912
+ :type => String,
913
+ :dynamic_name => true,
914
+ :allowed_from_server => false,
915
+ :description => 'Controls auto-instrumentation of Delayed Job at start up. May be one of [auto|prepend|chain|disabled].'
916
+ },
917
+ :'instrumentation.httpclient' => {
918
+ :default => instrumentation_value_of(:disable_httpclient),
919
+ :public => true,
920
+ :type => String,
921
+ :dynamic_name => true,
922
+ :allowed_from_server => false,
923
+ :description => "Controls auto-instrumentation of HTTPClient at start up. May be one of [auto|prepend|chain|disabled]."
924
+ },
925
+ :'instrumentation.curb' => {
926
+ :default => instrumentation_value_of(:disable_curb),
927
+ :public => true,
928
+ :type => String,
929
+ :dynamic_name => true,
930
+ :allowed_from_server => false,
931
+ :description => 'Controls auto-instrumentation of Curb at start up. May be one of [auto|prepend|chain|disabled].'
932
+ },
933
+ :'instrumentation.sinatra' => {
934
+ :default => instrumentation_value_of(:disable_sinatra),
935
+ :public => :true,
936
+ :type => String,
937
+ :dynamic_name => true,
938
+ :allowed_from_server => false,
939
+ :description => "Controls auto-instrumentation of Sinatra at start up. May be one of [auto|prepend|chain|disabled]."
940
+ },
941
+ :'instrumentation.rack' => {
942
+ :default => instrumentation_value_of(:disable_rack),
943
+ :public => true,
944
+ :type => String,
945
+ :dynamic_name => true,
946
+ :allowed_from_server => false,
947
+ :description => "Controls auto-instrumentation of Rack. When enabled, the agent hooks into the " \
948
+ "`to_app` method in Rack::Builder to find gems to instrument during " \
949
+ "application startup. May be one of [auto|prepend|chain|disabled]."
950
+ },
951
+ :'instrumentation.rack_urlmap' => {
952
+ :default => instrumentation_value_of(:disable_rack_urlmap),
953
+ :public => true,
954
+ :type => String,
955
+ :dynamic_name => true,
956
+ :allowed_from_server => false,
957
+ :description => 'Controls auto-instrumentation of Rack::URLMap at start up. May be one of [auto|prepend|chain|disabled].'
958
+ },
959
+ :'instrumentation.puma_rack' => {
960
+ :default => instrumentation_value_of(:disable_puma_rack), # TODO: change to value_of(:'instrumentation.rack') when we remove :disable_puma_rack in 8.0)
961
+ :public => true,
962
+ :type => String,
963
+ :dynamic_name => true,
964
+ :allowed_from_server => false,
965
+ :description => "Controls auto-instrumentation of Puma::Rack. When enabled, the agent hooks into the " \
966
+ "`to_app` method in Puma::Rack::Builder to find gems to instrument during " \
967
+ "application startup. May be one of [auto|prepend|chain|disabled]."
968
+ },
969
+ :'instrumentation.puma_rack_urlmap' => {
970
+ :default => instrumentation_value_of(:disable_puma_rack_urlmap), # TODO: change to value_of(:'instrumentation.rack_urlmap') when we remove :disable_puma_rack_urlmap in 8.0)
971
+ :public => true,
972
+ :type => String,
973
+ :dynamic_name => true,
974
+ :allowed_from_server => false,
975
+ :description => 'Controls auto-instrumentation of Puma::Rack::URLMap at start up. May be one of [auto|prepend|chain|disabled].'
976
+ },
977
+ :'instrumentation.memcached' => {
978
+ :default => instrumentation_value_of(:disable_memcached),
979
+ :public => true,
980
+ :type => String,
981
+ :dynamic_name => true,
982
+ :allowed_from_server => false,
983
+ :description => 'Controls auto-instrumentation of memcached gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
984
+ },
985
+ :'instrumentation.memcache_client' => {
986
+ :default => instrumentation_value_of(:disable_memcache_client),
987
+ :public => true,
988
+ :type => String,
989
+ :dynamic_name => true,
990
+ :allowed_from_server => false,
991
+ :description => 'Controls auto-instrumentation of memcache-client gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
992
+ },
993
+ :'instrumentation.memcache' => {
994
+ :default => instrumentation_value_of(:disable_dalli),
995
+ :public => true,
996
+ :type => String,
997
+ :dynamic_name => true,
998
+ :allowed_from_server => false,
999
+ :description => 'Controls auto-instrumentation of dalli gem for Memcache at start up. May be one of [auto|prepend|chain|disabled].'
825
1000
  },
826
1001
  :disable_data_mapper => {
827
1002
  :default => false,
828
1003
  :public => true,
829
1004
  :type => Boolean,
830
1005
  :allowed_from_server => false,
831
- :description => 'If <code>true</code>, disables DataMapper instrumentation.'
1006
+ :description => 'If `true`, disables DataMapper instrumentation.'
832
1007
  },
833
1008
  :disable_activejob => {
834
1009
  :default => false,
@@ -836,7 +1011,7 @@ module NewRelic
836
1011
  :type => Boolean,
837
1012
  :dynamic_name => true,
838
1013
  :allowed_from_server => false,
839
- :description => 'If <code>true</code>, disables ActiveJob instrumentation.'
1014
+ :description => 'If `true`, disables ActiveJob instrumentation.'
840
1015
  },
841
1016
  :disable_action_cable_instrumentation => {
842
1017
  :default => false,
@@ -844,7 +1019,7 @@ module NewRelic
844
1019
  :type => Boolean,
845
1020
  :dynamic_name => true,
846
1021
  :allowed_from_server => false,
847
- :description => 'If <code>true</code>, disables Action Cable instrumentation.'
1022
+ :description => 'If `true`, disables Action Cable instrumentation.'
848
1023
  },
849
1024
  :disable_active_storage => {
850
1025
  :default => false,
@@ -852,49 +1027,54 @@ module NewRelic
852
1027
  :type => Boolean,
853
1028
  :dynamic_name => true,
854
1029
  :allowed_from_server => false,
855
- :description => 'If <code>true</code>, disables ActiveStorage instrumentation.'
1030
+ :description => 'If `true`, disables ActiveStorage instrumentation.'
856
1031
  },
857
1032
  :disable_memcached => {
858
1033
  :default => value_of(:disable_memcache_instrumentation),
859
1034
  :public => true,
860
1035
  :type => Boolean,
1036
+ :deprecated => true,
861
1037
  :allowed_from_server => false,
862
- :description => 'If <code>true</code>, disables instrumentation for the memcached gem.'
1038
+ :description => deprecated_description(:'instrumentation.memcached', 'If `true`, disables instrumentation for the memcached gem.')
863
1039
  },
864
1040
  :disable_memcache_client => {
865
1041
  :default => value_of(:disable_memcache_instrumentation),
866
1042
  :public => true,
867
1043
  :type => Boolean,
1044
+ :deprecated => true,
868
1045
  :allowed_from_server => false,
869
- :description => 'If <code>true</code>, disables instrumentation for the memcache-client gem.'
1046
+ :description => deprecated_description(:'instrumentation.memcache-client', 'If `true`, disables instrumentation for the memcache-client gem.')
870
1047
  },
871
1048
  :disable_dalli => {
872
1049
  :default => value_of(:disable_memcache_instrumentation),
873
1050
  :public => true,
874
1051
  :type => Boolean,
1052
+ :deprecated => true,
875
1053
  :allowed_from_server => false,
876
- :description => 'If <code>true</code>, disables instrumentation for the dalli gem.'
1054
+ :description => deprecated_description(:'instrumentation.memcache', 'If `true`, disables instrumentation for the dalli gem.')
877
1055
  },
878
1056
  :disable_dalli_cas_client => {
879
1057
  :default => value_of(:disable_memcache_instrumentation),
880
1058
  :public => true,
881
1059
  :type => Boolean,
1060
+ :deprecated => true,
882
1061
  :allowed_from_server => false,
883
- :description => "If <code>true</code>, disables instrumentation for the dalli gem\'s additional CAS client support."
1062
+ :description => deprecated_description(:'instrumentation.memcache', "If `true`, disables instrumentation for the dalli gem\'s additional CAS client support.")
884
1063
  },
885
1064
  :disable_memcache_instrumentation => {
886
1065
  :default => false,
887
1066
  :public => true,
888
1067
  :type => Boolean,
1068
+ :deprecated => true,
889
1069
  :allowed_from_server => false,
890
- :description => 'If <code>true</code>, disables memcache instrumentation.'
1070
+ :description => deprecated_description(:'instrumentation.memcache', 'If `true`, disables memcache instrumentation.')
891
1071
  },
892
1072
  :disable_gc_profiler => {
893
1073
  :default => false,
894
1074
  :public => true,
895
1075
  :type => Boolean,
896
1076
  :allowed_from_server => false,
897
- :description => 'If <code>true</code>, disables the use of GC::Profiler to measure time spent in garbage collection'
1077
+ :description => 'If `true`, disables the use of GC::Profiler to measure time spent in garbage collection'
898
1078
  },
899
1079
  :'sidekiq.capture_params' => {
900
1080
  :default => false,
@@ -903,7 +1083,7 @@ module NewRelic
903
1083
  :allowed_from_server => false,
904
1084
  :dynamic_name => true,
905
1085
  :deprecated => true,
906
- :description => 'If <code>true</code>, enables the capture of job arguments for transaction traces and traced errors in Sidekiq.'
1086
+ :description => 'If `true`, enables the capture of job arguments for transaction traces and traced errors in Sidekiq.'
907
1087
  },
908
1088
  :'resque.capture_params' => {
909
1089
  :default => false,
@@ -912,7 +1092,7 @@ module NewRelic
912
1092
  :allowed_from_server => false,
913
1093
  :dynamic_name => true,
914
1094
  :deprecated => true,
915
- :description => 'If <code>true</code>, enables the capture of job arguments for transaction traces and traced errors in Resque.'
1095
+ :description => 'If `true`, enables the capture of job arguments for transaction traces and traced errors in Resque.'
916
1096
  },
917
1097
  :'resque.use_ruby_dns' => {
918
1098
  :default => true,
@@ -933,37 +1113,37 @@ module NewRelic
933
1113
  :public => true,
934
1114
  :type => Boolean,
935
1115
  :allowed_from_server => true,
936
- :description => 'If <code>true</code>, enables collection of <a href="https://docs.newrelic.com/docs/apm/traces/transaction-traces/transaction-traces">transaction traces</a>.'
1116
+ :description => 'If `true`, enables collection of [transaction traces](/docs/apm/traces/transaction-traces/transaction-traces).'
937
1117
  },
938
1118
  :'transaction_tracer.transaction_threshold' => {
939
1119
  :default => DefaultSource.transaction_tracer_transaction_threshold,
940
1120
  :public => true,
941
1121
  :type => Float,
942
1122
  :allowed_from_server => true,
943
- :description => 'Specify a threshold in seconds. Transactions with a duration longer than this threshold are eligible for transaction traces. Specify a float value or the string <code><a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#apdex_f">apdex_f</a></code>.'
1123
+ :description => 'Specify a threshold in seconds. Transactions with a duration longer than this threshold are eligible for transaction traces. Specify a float value or the string `apdex_f`.'
944
1124
  },
945
1125
  :'transaction_tracer.record_sql' => {
946
1126
  :default => 'obfuscated',
947
1127
  :public => true,
948
1128
  :type => String,
949
1129
  :allowed_from_server => true,
950
- :description => 'Obfuscation level for SQL queries reported in transaction trace nodes.</p>
1130
+ :description => 'Obfuscation level for SQL queries reported in transaction trace nodes.
951
1131
 
952
- <p>By default, this is set to <code>obfuscated</code>, which strips out the numeric and string literals.</p>
1132
+ By default, this is set to `obfuscated`, which strips out the numeric and string literals.
953
1133
 
954
1134
  <ul>
955
- <li>If you do not want the agent to capture query information, set this to <code>none</code>.</li>
956
- <li>If you want the agent to capture all query information in its original form, set this to <code>raw</code>.</li>
957
- <li>When you enable <a href="/docs/agents/manage-apm-agents/configuration/high-security-mode">high security mode</a>, this is automatically set to <code>obfuscated</code>.</li>
1135
+ <li>If you do not want the agent to capture query information, set this to `none`.</li>
1136
+ <li>If you want the agent to capture all query information in its original form, set this to `raw`.</li>
1137
+ <li>When you enable [high security mode](/docs/agents/manage-apm-agents/configuration/high-security-mode), this is automatically set to `obfuscated`.</li>
958
1138
  </ul>
959
- <p>' # Doc generator will wrap this in <p>...</p>
1139
+ '
960
1140
  },
961
1141
  :'transaction_tracer.record_redis_arguments' => {
962
1142
  :default => false,
963
1143
  :public => true,
964
1144
  :type => Boolean,
965
1145
  :allowed_from_server => false,
966
- :description => 'If <code>true</code>, the agent records Redis command arguments in transaction traces.'
1146
+ :description => 'If `true`, the agent records Redis command arguments in transaction traces.'
967
1147
  },
968
1148
  :'transaction_tracer.capture_attributes' => {
969
1149
  :default => true,
@@ -971,21 +1151,21 @@ module NewRelic
971
1151
  :type => Boolean,
972
1152
  :deprecated => true,
973
1153
  :allowed_from_server => false,
974
- :description => 'Deprecated; use <a href="#transaction_tracer-attributes-enabled"><code>transaction_tracer.attributes.enabled</code></a> instead.'
1154
+ :description => 'Deprecated; use [`transaction_tracer.attributes.enabled`](#transaction_tracer-attributes-enabled) instead.'
975
1155
  },
976
1156
  :'transaction_tracer.explain_threshold' => {
977
1157
  :default => 0.5,
978
1158
  :public => true,
979
1159
  :type => Float,
980
1160
  :allowed_from_server => true,
981
- :description => 'Threshold (in seconds) above which the agent will collect explain plans. Relevant only when <code><a href="#transaction_tracer.explain_enabled">explain_enabled</a></code> is true.'
1161
+ :description => 'Threshold (in seconds) above which the agent will collect explain plans. Relevant only when [`explain_enabled`](#transaction_tracer.explain_enabled) is true.'
982
1162
  },
983
1163
  :'transaction_tracer.explain_enabled' => {
984
1164
  :default => true,
985
1165
  :public => true,
986
1166
  :type => Boolean,
987
1167
  :allowed_from_server => true,
988
- :description => 'If <code>true</code>, enables the collection of explain plans in transaction traces. This setting will also apply to explain plans in slow SQL traces if <a href="#slow_sql-explain_enabled"><code>slow_sql.explain_enabled</code></a> is not set separately.'
1168
+ :description => 'If `true`, enables the collection of explain plans in transaction traces. This setting will also apply to explain plans in slow SQL traces if [`slow_sql.explain_enabled`](#slow_sql-explain_enabled) is not set separately.'
989
1169
  },
990
1170
  :'transaction_tracer.stack_trace_threshold' => {
991
1171
  :default => 0.5,
@@ -1006,7 +1186,7 @@ module NewRelic
1006
1186
  :public => true,
1007
1187
  :type => Boolean,
1008
1188
  :allowed_from_server => false,
1009
- :description => 'If <code>true</code>, disables <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/sequel-instrumentation">Sequel instrumentation</a>.'
1189
+ :description => 'If `true`, disables [Sequel instrumentation](/docs/agents/ruby-agent/frameworks/sequel-instrumentation).'
1010
1190
  },
1011
1191
  :disable_database_instrumentation => {
1012
1192
  :default => false,
@@ -1014,7 +1194,7 @@ module NewRelic
1014
1194
  :type => Boolean,
1015
1195
  :allowed_from_server => false,
1016
1196
  :deprecated => true,
1017
- :description => 'Deprecated; use <a href="#disable_sequel_instrumentation"><code>disable_sequel_instrumentation</code></a> instead.'
1197
+ :description => 'Deprecated; use [`disable_sequel_instrumentation`](#disable_sequel_instrumentation) instead.'
1018
1198
  },
1019
1199
  :disable_mongo => {
1020
1200
  :default => false,
@@ -1022,56 +1202,59 @@ module NewRelic
1022
1202
  :type => Boolean,
1023
1203
  :allowed_from_server => false,
1024
1204
  :dynamic_name => true,
1025
- :description => 'If <code>true</code>, the agent won\'t install <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/mongo-instrumentation">instrumentation for the Mongo gem</a>.'
1205
+ :deprecated => true,
1206
+ :description => deprecated_description(:'instrumentation.mongo', 'If `true`, the agent won\'t install [instrumentation for the Mongo gem](/docs/agents/ruby-agent/frameworks/mongo-instrumentation).')
1026
1207
  },
1027
1208
  :disable_redis => {
1028
1209
  :default => false,
1029
1210
  :public => true,
1030
1211
  :type => Boolean,
1212
+ :deprecated => true,
1031
1213
  :allowed_from_server => false,
1032
- :description => 'If <code>true</code>, the agent won\'t install <a href="https://docs.newrelic.com/docs/agents/ruby-agent/frameworks/redis-instrumentation">instrumentation for Redis</a>.'
1214
+ :description => deprecated_description(:'instrumentation.redis', 'If `true`, the agent won\'t install [instrumentation for Redis](/docs/agents/ruby-agent/frameworks/redis-instrumentation).')
1033
1215
  },
1034
1216
  :disable_redis_instrumentation => {
1035
1217
  :default => false,
1036
1218
  :public => false,
1037
1219
  :type => Boolean,
1220
+ :deprecated => true,
1038
1221
  :allowed_from_server => false,
1039
- :description => 'Disables installation of Redis instrumentation. Standard key to use is disable_redis.'
1222
+ :description => deprecated_description(:'instrumentation.redis', 'Disables installation of Redis instrumentation. Standard key to use is disable_redis.')
1040
1223
  },
1041
1224
  :'message_tracer.segment_parameters.enabled' => {
1042
1225
  :default => true,
1043
1226
  :public => true,
1044
1227
  :type => Boolean,
1045
1228
  :allowed_from_server => true,
1046
- :description => 'If <code>true</code>, the agent will collect metadata about messages and attach them as segment parameters.'
1229
+ :description => 'If `true`, the agent will collect metadata about messages and attach them as segment parameters.'
1047
1230
  },
1048
1231
  :'slow_sql.enabled' => {
1049
1232
  :default => value_of(:'transaction_tracer.enabled'),
1050
1233
  :public => true,
1051
1234
  :type => Boolean,
1052
1235
  :allowed_from_server => true,
1053
- :description => 'If <code>true</code>, the agent collects <a href="https://docs.newrelic.com/docs/apm/applications-menu/monitoring/viewing-slow-query-details">slow SQL queries</a>.'
1236
+ :description => 'If `true`, the agent collects [slow SQL queries](/docs/apm/applications-menu/monitoring/viewing-slow-query-details).'
1054
1237
  },
1055
1238
  :'slow_sql.explain_threshold' => {
1056
1239
  :default => value_of(:'transaction_tracer.explain_threshold'),
1057
1240
  :public => true,
1058
1241
  :type => Float,
1059
1242
  :allowed_from_server => true,
1060
- :description => 'Specify a threshold in seconds. The agent collects <a href="https://docs.newrelic.com/docs/apm/applications-menu/monitoring/viewing-slow-query-details">slow SQL queries</a> and explain plans that exceed this threshold.'
1243
+ :description => 'Specify a threshold in seconds. The agent collects [slow SQL queries](/docs/apm/applications-menu/monitoring/viewing-slow-query-details) and explain plans that exceed this threshold.'
1061
1244
  },
1062
1245
  :'slow_sql.explain_enabled' => {
1063
1246
  :default => value_of(:'transaction_tracer.explain_enabled'),
1064
1247
  :public => true,
1065
1248
  :type => Boolean,
1066
1249
  :allowed_from_server => true,
1067
- :description => 'If <code>true</code>, the agent collects explain plans in slow SQL queries. If this setting is omitted, the <a href="#transaction_tracer-explain_enabled"><code>transaction_tracer.explain_enabled</code></a> setting will be applied as the default setting for explain plans in slow SQL as well.'
1250
+ :description => 'If `true`, the agent collects explain plans in slow SQL queries. If this setting is omitted, the [`transaction_tracer.explain_enabled`](#transaction_tracer-explain_enabled) setting will be applied as the default setting for explain plans in slow SQL as well.'
1068
1251
  },
1069
1252
  :'slow_sql.record_sql' => {
1070
1253
  :default => value_of(:'transaction_tracer.record_sql'),
1071
1254
  :public => true,
1072
1255
  :type => String,
1073
1256
  :allowed_from_server => true,
1074
- :description => 'Defines an obfuscation level for slow SQL queries. Valid options are <code>obfuscated</code>, <code>raw</code>, or <code>none</code>).'
1257
+ :description => 'Defines an obfuscation level for slow SQL queries. Valid options are `obfuscated`, `raw`, or `none`).'
1075
1258
  },
1076
1259
  :'slow_sql.use_longer_sql_id' => {
1077
1260
  :default => false,
@@ -1085,21 +1268,21 @@ module NewRelic
1085
1268
  :public => true,
1086
1269
  :type => Boolean,
1087
1270
  :allowed_from_server => true,
1088
- :description => 'If <code>true</code>, the agent captures Mongo queries in transaction traces.'
1271
+ :description => 'If `true`, the agent captures Mongo queries in transaction traces.'
1089
1272
  },
1090
1273
  :'mongo.obfuscate_queries' => {
1091
1274
  :default => true,
1092
1275
  :public => true,
1093
1276
  :type => Boolean,
1094
1277
  :allowed_from_server => true,
1095
- :description => 'If <code>true</code>, the agent obfuscates Mongo queries in transaction traces.'
1278
+ :description => 'If `true`, the agent obfuscates Mongo queries in transaction traces.'
1096
1279
  },
1097
1280
  :'error_collector.enabled' => {
1098
1281
  :default => true,
1099
1282
  :public => true,
1100
1283
  :type => Boolean,
1101
1284
  :allowed_from_server => true,
1102
- :description => 'If <code>true</code>, the agent captures traced errors and error count metrics.'
1285
+ :description => 'If `true`, the agent captures traced errors and error count metrics.'
1103
1286
  },
1104
1287
  :'error_collector.capture_attributes' => {
1105
1288
  :default => true,
@@ -1107,14 +1290,63 @@ module NewRelic
1107
1290
  :type => Boolean,
1108
1291
  :deprecated => true,
1109
1292
  :allowed_from_server => false,
1110
- :description => 'Deprecated; use <a href="#error_collector-attributes-enabled"><code>error_collector.attributes.enabled</code></a> instead.'
1293
+ :description => 'Deprecated; use [`error_collector.attributes.enabled`](#error_collector-attributes-enabled) instead.'
1111
1294
  },
1112
1295
  :'error_collector.ignore_errors' => {
1113
1296
  :default => 'ActionController::RoutingError,Sinatra::NotFound',
1114
1297
  :public => true,
1115
1298
  :type => String,
1116
1299
  :allowed_from_server => true,
1117
- :description => 'Specify a comma-delimited list of error classes that the agent should ignore.'
1300
+ :dynamic_name => true,
1301
+ :description => 'DEPRECATED; use `error_collector.ignore_classes` instead. Specify a comma-delimited list of error classes that the agent should ignore.'
1302
+ },
1303
+ :'error_collector.ignore_classes' => {
1304
+ :default => [],
1305
+ :public => true,
1306
+ :type => Array,
1307
+ :allowed_from_server => true,
1308
+ :dynamic_name => true,
1309
+ :description => 'A list of error classes that the agent should ignore. *Note: this setting cannot be set via environment variable.*'
1310
+ },
1311
+ :'error_collector.ignore_messages' => {
1312
+ :default => {},
1313
+ :public => true,
1314
+ :type => Hash,
1315
+ :allowed_from_server => true,
1316
+ :dynamic_name => true,
1317
+ :description => 'A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be ignored. *Note: this setting cannot be set via environment variable.*'
1318
+ },
1319
+ :'error_collector.ignore_status_codes' => {
1320
+ :default => '',
1321
+ :public => true,
1322
+ :type => String,
1323
+ :allowed_from_server => true,
1324
+ :dynamic_name => true,
1325
+ :description => 'A comma separated list of status codes, possibly including ranges. Errors associated with these status codes, where applicable, will be ignored.'
1326
+ },
1327
+ :'error_collector.expected_classes' => {
1328
+ :default => [],
1329
+ :public => true,
1330
+ :type => Array,
1331
+ :allowed_from_server => true,
1332
+ :dynamic_name => true,
1333
+ :description => 'A list of error classes that the agent should treat as expected. *Note: this setting cannot be set via environment variable.*'
1334
+ },
1335
+ :'error_collector.expected_messages' => {
1336
+ :default => {},
1337
+ :public => true,
1338
+ :type => Hash,
1339
+ :allowed_from_server => true,
1340
+ :dynamic_name => true,
1341
+ :description => 'A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be treated as expected. *Note: this setting cannot be set via environment variable.*'
1342
+ },
1343
+ :'error_collector.expected_status_codes' => {
1344
+ :default => '',
1345
+ :public => true,
1346
+ :type => String,
1347
+ :allowed_from_server => true,
1348
+ :dynamic_name => true,
1349
+ :description => 'A comma separated list of status codes, possibly including ranges. Errors associated with these status codes, where applicable, will be treated as expected.'
1118
1350
  },
1119
1351
  :'error_collector.max_backtrace_frames' => {
1120
1352
  :default => 50,
@@ -1129,14 +1361,14 @@ module NewRelic
1129
1361
  :type => Boolean,
1130
1362
  :allowed_from_server => true,
1131
1363
  :dynamic_name => true,
1132
- :description => 'If <code>true</code>, the agent collects <a href="https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights">TransactionError events</a>.'
1364
+ :description => 'If `true`, the agent collects [TransactionError events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights).'
1133
1365
  },
1134
1366
  :'error_collector.max_event_samples_stored' => {
1135
1367
  :default => 100,
1136
1368
  :public => true,
1137
1369
  :type => Integer,
1138
1370
  :allowed_from_server => true,
1139
- :description => 'Defines the maximum number of <a href="https://docs.newrelic.com/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights">TransactionError events</a> sent to Insights per harvest cycle.'
1371
+ :description => 'Defines the maximum number of [TransactionError events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights) sent to Insights per harvest cycle.'
1140
1372
  },
1141
1373
  :'rum.enabled' => {
1142
1374
  :default => true,
@@ -1185,7 +1417,7 @@ module NewRelic
1185
1417
  :public => true,
1186
1418
  :type => Boolean,
1187
1419
  :allowed_from_server => true,
1188
- :description => 'If <code>true</code>, enables <a href="https://docs.newrelic.com/docs/browser/new-relic-browser/installation-configuration/adding-apps-new-relic-browser#select-apm-app">auto-injection</a> of the JavaScript header for page load timing (sometimes referred to as real user monitoring or RUM).'
1420
+ :description => 'If `true`, enables [auto-injection](/docs/browser/new-relic-browser/installation-configuration/adding-apps-new-relic-browser#select-apm-app) of the JavaScript header for page load timing (sometimes referred to as real user monitoring or RUM).'
1189
1421
  },
1190
1422
  :'browser_monitoring.capture_attributes' => {
1191
1423
  :default => false,
@@ -1193,7 +1425,7 @@ module NewRelic
1193
1425
  :type => Boolean,
1194
1426
  :deprecated => true,
1195
1427
  :allowed_from_server => false,
1196
- :description => 'Deprecated; use <a href="#browser_monitoring-attributes-enabled"><code>browser_monitoring.attributes.enabled</code></a> instead.'
1428
+ :description => 'Deprecated; use [`browser_monitoring.attributes.enabled`](#browser_monitoring-attributes-enabled) instead.'
1197
1429
  },
1198
1430
  :'browser_monitoring.loader' => {
1199
1431
  :default => DefaultSource.browser_monitoring_loader,
@@ -1207,7 +1439,7 @@ module NewRelic
1207
1439
  :public => false,
1208
1440
  :type => String,
1209
1441
  :allowed_from_server => true,
1210
- :description => 'Version of JavaScript agent loader (returned from the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>.)'
1442
+ :description => 'Version of JavaScript agent loader (returned from the New Relic [collector](/docs/apm/new-relic-apm/getting-started/glossary#collector).)'
1211
1443
  },
1212
1444
  :'browser_monitoring.debug' => {
1213
1445
  :default => false,
@@ -1251,7 +1483,7 @@ module NewRelic
1251
1483
  :public => true,
1252
1484
  :type => Boolean,
1253
1485
  :allowed_from_server => true,
1254
- :description => 'If <code>true</code>, enables <a href="https://docs.newrelic.com/docs/apm/transactions/cross-application-traces/cross-application-tracing">cross-application tracing</a>.'
1486
+ :description => 'If `true`, enables [cross-application tracing](/docs/apm/transactions/cross-application-traces/cross-application-tracing).'
1255
1487
  },
1256
1488
  :cross_application_tracing => {
1257
1489
  :default => nil,
@@ -1281,7 +1513,7 @@ module NewRelic
1281
1513
  :public => true,
1282
1514
  :type => Boolean,
1283
1515
  :allowed_from_server => true,
1284
- :description => 'If <code>true</code>, enables use of the <a href="https://docs.newrelic.com/docs/apm/applications-menu/events/thread-profiler-tool">thread profiler</a>.'
1516
+ :description => 'If `true`, enables use of the [thread profiler](/docs/apm/applications-menu/events/thread-profiler-tool).'
1285
1517
  },
1286
1518
  :'thread_profiler.max_profile_overhead' => {
1287
1519
  :default => 0.05,
@@ -1295,14 +1527,14 @@ module NewRelic
1295
1527
  :public => true,
1296
1528
  :type => String,
1297
1529
  :allowed_from_server => false,
1298
- :description => 'Specifies a marshaller for transmitting data to the New Relic <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/glossary#collector">collector</a>. Currently <code>json</code> is the only valid value for this setting.'
1530
+ :description => 'Specifies a marshaller for transmitting data to the New Relic [collector](/docs/apm/new-relic-apm/getting-started/glossary#collector). Currently `json` is the only valid value for this setting.'
1299
1531
  },
1300
1532
  :'analytics_events.enabled' => {
1301
1533
  :default => true,
1302
1534
  :public => true,
1303
1535
  :type => Boolean,
1304
1536
  :allowed_from_server => true,
1305
- :description => 'If <code>true</code>, enables analytics event sampling.'
1537
+ :description => 'If `true`, enables analytics event sampling.'
1306
1538
  },
1307
1539
  :'analytics_events.max_samples_stored' => {
1308
1540
  :default => 1200,
@@ -1317,7 +1549,7 @@ module NewRelic
1317
1549
  :type => Boolean,
1318
1550
  :deprecated => true,
1319
1551
  :allowed_from_server => false,
1320
- :description => 'Deprecated; use <a href="#transaction_events-attributes-enabled"><code>transaction_events.attributes.enabled</code></a> instead.'
1552
+ :description => 'Deprecated; use [`transaction_events.attributes.enabled`](#transaction_events-attributes-enabled) instead.'
1321
1553
  },
1322
1554
  :restart_thread_in_children => {
1323
1555
  :default => true,
@@ -1346,7 +1578,7 @@ module NewRelic
1346
1578
  :type => Boolean,
1347
1579
  :dynamic_name => true,
1348
1580
  :allowed_from_server => false,
1349
- :description => 'If <code>true</code>, the agent won\'t <a href="https://docs.newrelic.com/docs/agents/ruby-agent/features/ruby-vm-measurements">sample performance measurements from the Ruby VM</a>.'
1581
+ :description => 'If `true`, the agent won\'t [sample performance measurements from the Ruby VM](/docs/agents/ruby-agent/features/ruby-vm-measurements).'
1350
1582
  },
1351
1583
  :disable_memory_sampler => {
1352
1584
  :default => false,
@@ -1354,7 +1586,7 @@ module NewRelic
1354
1586
  :type => Boolean,
1355
1587
  :dynamic_name => true,
1356
1588
  :allowed_from_server => false,
1357
- :description => 'If <code>true</code>, the agent won\'t sample the memory usage of the host process.'
1589
+ :description => 'If `true`, the agent won\'t sample the memory usage of the host process.'
1358
1590
  },
1359
1591
  :disable_cpu_sampler => {
1360
1592
  :default => false,
@@ -1362,7 +1594,7 @@ module NewRelic
1362
1594
  :type => Boolean,
1363
1595
  :dynamic_name => true,
1364
1596
  :allowed_from_server => false,
1365
- :description => 'If <code>true</code>, the agent won\'t sample the CPU usage of the host process.'
1597
+ :description => 'If `true`, the agent won\'t sample the CPU usage of the host process.'
1366
1598
  },
1367
1599
  :disable_delayed_job_sampler => {
1368
1600
  :default => false,
@@ -1370,33 +1602,7 @@ module NewRelic
1370
1602
  :type => Boolean,
1371
1603
  :dynamic_name => true,
1372
1604
  :allowed_from_server => false,
1373
- :description => 'If <code>true</code>, the agent won\'t measure the depth of Delayed Job queues.'
1374
- },
1375
- :disable_active_record_4 => {
1376
- :default => false,
1377
- :public => true,
1378
- :type => Boolean,
1379
- :dynamic_name => true,
1380
- :allowed_from_server => false,
1381
- :deprecated => true,
1382
- :description => 'Deprecated. ' \
1383
- 'For agent versions 6.3 or higher, ' \
1384
- 'use <a href="#disable_active_record_notifications"><code>' \
1385
- 'disable_active_record_notifications' \
1386
- '</code></a> instead.'
1387
- },
1388
- :disable_active_record_5 => {
1389
- :default => false,
1390
- :public => true,
1391
- :type => Boolean,
1392
- :dynamic_name => true,
1393
- :allowed_from_server => false,
1394
- :deprecated => true,
1395
- :description => 'Deprecated. ' \
1396
- 'For agent versions 6.3 or higher, ' \
1397
- 'use <a href="#disable_active_record_notifications"><code>' \
1398
- 'disable_active_record_notifications' \
1399
- '</code></a> instead.'
1605
+ :description => 'If `true`, the agent won\'t measure the depth of Delayed Job queues.'
1400
1606
  },
1401
1607
  :disable_active_record_notifications => {
1402
1608
  :default => false,
@@ -1404,39 +1610,51 @@ module NewRelic
1404
1610
  :type => Boolean,
1405
1611
  :dynamic_name => true,
1406
1612
  :allowed_from_server => false,
1407
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4, 5, and 6.'
1613
+ :description => 'If `true`, disables instrumentation for ActiveRecord 4, 5, and 6.'
1408
1614
  },
1409
1615
  :disable_bunny => {
1410
1616
  :default => false,
1411
1617
  :public => true,
1412
1618
  :type => Boolean,
1619
+ :deprecated => true,
1413
1620
  :dynamic_name => true,
1414
1621
  :allowed_from_server => false,
1415
- :description => 'If <code>true</code>, disables instrumentation for the bunny gem.'
1622
+ :description => deprecated_description(:'instrumentation.bunny', 'If `true`, disables instrumentation for the bunny gem.')
1416
1623
  },
1417
1624
  :disable_curb => {
1418
1625
  :default => false,
1419
1626
  :public => true,
1420
1627
  :type => Boolean,
1628
+ :deprecated => true,
1421
1629
  :dynamic_name => true,
1422
1630
  :allowed_from_server => false,
1423
- :description => 'If <code>true</code>, disables instrumentation for the curb gem.'
1631
+ :description => deprecated_description(:'instrumentation.curb', 'If `true`, disables instrumentation for the curb gem.' )
1424
1632
  },
1425
1633
  :disable_excon => {
1426
1634
  :default => false,
1427
1635
  :public => true,
1428
1636
  :type => Boolean,
1429
1637
  :dynamic_name => true,
1638
+ :deprecated => true,
1639
+ :allowed_from_server => false,
1640
+ :description => deprecated_description(:'instrumentation.excon', 'If `true`, disables instrumentation for the excon gem.')
1641
+ },
1642
+ :'instrumentation.excon' => {
1643
+ :default => instrumentation_value_of(:disable_excon),
1644
+ :public => :true,
1645
+ :type => String,
1646
+ :dynamic_name => true,
1430
1647
  :allowed_from_server => false,
1431
- :description => 'If <code>true</code>, disables instrumentation for the excon gem.'
1648
+ :description => "Controls auto-instrumentation of Excon at start up. May be one of [enabled|disabled]."
1432
1649
  },
1433
1650
  :disable_httpclient => {
1434
1651
  :default => false,
1435
1652
  :public => true,
1436
1653
  :type => Boolean,
1437
1654
  :dynamic_name => true,
1655
+ :deprecated => true,
1438
1656
  :allowed_from_server => false,
1439
- :description => 'If <code>true</code>, disables instrumentation for the httpclient gem.'
1657
+ :description => deprecated_description(:'instrumentation.httpclient', 'If `true`, disables instrumentation for the httpclient gem.')
1440
1658
  },
1441
1659
  :disable_net_http => {
1442
1660
  :default => false,
@@ -1444,7 +1662,10 @@ module NewRelic
1444
1662
  :type => Boolean,
1445
1663
  :dynamic_name => true,
1446
1664
  :allowed_from_server => false,
1447
- :description => 'If <code>true</code>, disables instrumentation for Net::HTTP.'
1665
+ :deprecated => true,
1666
+ :description => deprecated_description(:'instrumentation.net_http',
1667
+ 'If `true`, disables instrumentation for Net::HTTP.'
1668
+ )
1448
1669
  },
1449
1670
  :disable_rack => {
1450
1671
  :default => false,
@@ -1452,7 +1673,8 @@ module NewRelic
1452
1673
  :type => Boolean,
1453
1674
  :dynamic_name => true,
1454
1675
  :allowed_from_server => false,
1455
- :description => 'If <code>true</code>, prevents the agent from hooking into the <code>to_app</code> method in Rack::Builder to find gems to instrument during application startup.'
1676
+ :deprecated => true,
1677
+ :description => deprecated_description(:'instrumentation.rack', 'If `true`, prevents the agent from hooking into the `to_app` method in Rack::Builder to find gems to instrument during application startup.')
1456
1678
  },
1457
1679
  :disable_rack_urlmap => {
1458
1680
  :default => false,
@@ -1460,7 +1682,8 @@ module NewRelic
1460
1682
  :type => Boolean,
1461
1683
  :dynamic_name => true,
1462
1684
  :allowed_from_server => false,
1463
- :description => 'If <code>true</code>, prevents the agent from hooking into Rack::URLMap to install middleware tracing.'
1685
+ :deprecated => true,
1686
+ :description => deprecated_description(:'instrumentation.rack_urlmap', 'If `true`, prevents the agent from hooking into Rack::URLMap to install middleware tracing.')
1464
1687
  },
1465
1688
  :disable_puma_rack => {
1466
1689
  :default => value_of(:disable_rack),
@@ -1468,7 +1691,8 @@ module NewRelic
1468
1691
  :type => Boolean,
1469
1692
  :dynamic_name => true,
1470
1693
  :allowed_from_server => false,
1471
- :description => 'If <code>true</code>, prevents the agent from hooking into the <code>to_app</code> method in Puma::Rack::Builder to find gems to instrument during application startup.'
1694
+ :deprecated => true,
1695
+ :description => deprecated_description(:'instrumentation.puma_rack', 'If `true`, prevents the agent from hooking into the `to_app` method in Puma::Rack::Builder to find gems to instrument during application startup.')
1472
1696
  },
1473
1697
  :disable_puma_rack_urlmap => {
1474
1698
  :default => value_of(:disable_rack_urlmap),
@@ -1476,30 +1700,33 @@ module NewRelic
1476
1700
  :type => Boolean,
1477
1701
  :dynamic_name => true,
1478
1702
  :allowed_from_server => false,
1479
- :description => 'If <code>true</code>, prevents the agent from hooking into Puma::Rack::URLMap to install middleware tracing.'
1703
+ :deprecated => true,
1704
+ :description => deprecated_description(:'instrumentation.puma_rack_urlmap', 'If `true`, prevents the agent from hooking into Puma::Rack::URLMap to install middleware tracing.')
1480
1705
  },
1481
1706
  :disable_typhoeus => {
1482
1707
  :default => false,
1483
1708
  :public => true,
1484
1709
  :type => Boolean,
1485
1710
  :dynamic_name => true,
1711
+ :deprecated => true,
1486
1712
  :allowed_from_server => false,
1487
- :description => 'If <code>true</code>, the agent won\'t install instrumentation for the typhoeus gem.'
1713
+ :description => deprecated_description(:'instrumentation.typhoeus', 'If `true`, the agent won\'t install instrumentation for the typhoeus gem.' )
1488
1714
  },
1489
1715
  :disable_httprb => {
1490
1716
  :default => false,
1491
1717
  :public => true,
1492
1718
  :type => Boolean,
1493
1719
  :dynamic_name => true,
1720
+ :deprecated => true,
1494
1721
  :allowed_from_server => false,
1495
- :description => 'If <code>true</code>, the agent won\'t install instrumentation for the http.rb gem.'
1722
+ :description => deprecated_description(:'instrumentation.httprb', 'If `true`, the agent won\'t install instrumentation for the http.rb gem.' )
1496
1723
  },
1497
1724
  :disable_middleware_instrumentation => {
1498
1725
  :default => false,
1499
1726
  :public => true,
1500
1727
  :type => Boolean,
1501
1728
  :allowed_from_server => false,
1502
- :description => 'If <code>true</code>, the agent won\'t wrap third-party middlewares in instrumentation (regardless of whether they are installed via Rack::Builder or Rails).'
1729
+ :description => 'If `true`, the agent won\'t wrap third-party middlewares in instrumentation (regardless of whether they are installed via Rack::Builder or Rails).'
1503
1730
  },
1504
1731
  :disable_rails_middleware => {
1505
1732
  :default => false,
@@ -1513,7 +1740,7 @@ module NewRelic
1513
1740
  :public => true,
1514
1741
  :type => Boolean,
1515
1742
  :allowed_from_server => false,
1516
- :description => 'If <code>true</code>, the agent uses Heroku dyno names as the hostname.'
1743
+ :description => 'If `true`, the agent uses Heroku dyno names as the hostname.'
1517
1744
  },
1518
1745
  :'heroku.dyno_name_prefixes_to_shorten' => {
1519
1746
  :default => ['scheduler', 'run'],
@@ -1528,14 +1755,14 @@ module NewRelic
1528
1755
  :public => true,
1529
1756
  :type => String,
1530
1757
  :allowed_from_server => false,
1531
- :description => 'Specify a custom host name for <a href="https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/add-rename-remove-hosts#display_name">display in the New Relic UI</a>.'
1758
+ :description => 'Specify a custom host name for [display in the New Relic UI](/docs/apm/new-relic-apm/maintenance/add-rename-remove-hosts#display_name).'
1532
1759
  },
1533
1760
  :labels => {
1534
1761
  :default => '',
1535
1762
  :public => true,
1536
1763
  :type => String,
1537
1764
  :allowed_from_server => false,
1538
- :description => 'A dictionary of <a href="/docs/data-analysis/user-interface-functions/labels-categories-organize-your-apps-servers">label names</a> and values that will be applied to the data sent from this agent. May also be expressed as a semicolon-delimited <code>;</code> string of colon-separated <code>:</code> pairs. For example, <code><var>Server</var>:<var>One</var>;<var>Data Center</var>:<var>Primary</var></code>.'
1765
+ :description => 'A dictionary of [label names](/docs/data-analysis/user-interface-functions/labels-categories-organize-your-apps-servers) and values that will be applied to the data sent from this agent. May also be expressed as a semicolon-delimited `;` string of colon-separated `:` pairs. For example, `<var>Server</var>:<var>One</var>;<var>Data Center</var>:<var>Primary</var>`.'
1539
1766
  },
1540
1767
  :aggressive_keepalive => {
1541
1768
  :default => true,
@@ -1586,7 +1813,7 @@ module NewRelic
1586
1813
  :public => true,
1587
1814
  :type => Boolean,
1588
1815
  :allowed_from_server => true,
1589
- :description => 'If <code>true</code>, the agent captures <a href="/docs/insights/new-relic-insights/adding-querying-data/inserting-custom-events-new-relic-apm-agents">New Relic Insights custom events</a>.'
1816
+ :description => 'If `true`, the agent captures [New Relic Insights custom events](/docs/insights/new-relic-insights/adding-querying-data/inserting-custom-events-new-relic-apm-agents).'
1590
1817
  },
1591
1818
  :'custom_insights_events.max_samples_stored' => {
1592
1819
  :default => 1000,
@@ -1601,63 +1828,77 @@ module NewRelic
1601
1828
  :public => false,
1602
1829
  :type => Boolean,
1603
1830
  :allowed_from_server => false,
1604
- :description => 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1831
+ :deprecated => true,
1832
+ :description => deprecated_description(:'instrumentation.grape',
1833
+ 'If `true`, the agent won\'t install Grape instrumentation.'
1834
+ )
1605
1835
  },
1606
1836
  :disable_grape => {
1607
1837
  :default => false,
1608
1838
  :public => true,
1609
1839
  :type => Boolean,
1610
1840
  :allowed_from_server => false,
1611
- :description => 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1841
+ :deprecated => true,
1842
+ :description => deprecated_description(:'instrumentation.grape',
1843
+ 'If `true`, the agent won\'t install Grape instrumentation.'
1844
+ )
1845
+ },
1846
+ :'instrumentation.grape' => {
1847
+ :default => instrumentation_value_of(:disable_grape_instrumentation),
1848
+ :public => :true,
1849
+ :type => String,
1850
+ :dynamic_name => true,
1851
+ :allowed_from_server => false,
1852
+ :description => "Controls auto-instrumentation of Grape at start up. May be one of [auto|prepend|chain|disabled]."
1612
1853
  },
1613
1854
  :'attributes.enabled' => {
1614
1855
  :default => true,
1615
1856
  :public => true,
1616
1857
  :type => Boolean,
1617
1858
  :allowed_from_server => false,
1618
- :description => 'If <code>true</code>, enables capture of attributes for all destinations.'
1859
+ :description => 'If `true`, enables capture of attributes for all destinations.'
1619
1860
  },
1620
1861
  :'transaction_tracer.attributes.enabled' => {
1621
1862
  :default => value_of(:'transaction_tracer.capture_attributes'),
1622
1863
  :public => true,
1623
1864
  :type => Boolean,
1624
1865
  :allowed_from_server => false,
1625
- :description => 'If <code>true</code>, the agent captures attributes from transaction traces.'
1866
+ :description => 'If `true`, the agent captures attributes from transaction traces.'
1626
1867
  },
1627
1868
  :'transaction_events.attributes.enabled' => {
1628
1869
  :default => value_of(:'analytics_events.capture_attributes'),
1629
1870
  :public => true,
1630
1871
  :type => Boolean,
1631
1872
  :allowed_from_server => false,
1632
- :description => 'If <code>true</code>, the agent captures attributes from transaction events.'
1873
+ :description => 'If `true`, the agent captures attributes from transaction events.'
1633
1874
  },
1634
1875
  :'error_collector.attributes.enabled' => {
1635
1876
  :default => value_of(:'error_collector.capture_attributes'),
1636
1877
  :public => true,
1637
1878
  :type => Boolean,
1638
1879
  :allowed_from_server => false,
1639
- :description => 'If <code>true</code>, the agent captures attributes from error collection.'
1880
+ :description => 'If `true`, the agent captures attributes from error collection.'
1640
1881
  },
1641
1882
  :'browser_monitoring.attributes.enabled' => {
1642
1883
  :default => value_of(:'browser_monitoring.capture_attributes'),
1643
1884
  :public => true,
1644
1885
  :type => Boolean,
1645
1886
  :allowed_from_server => false,
1646
- :description => 'If <code>true</code>, the agent captures attributes from browser monitoring.'
1887
+ :description => 'If `true`, the agent captures attributes from browser monitoring.'
1647
1888
  },
1648
1889
  :'span_events.attributes.enabled' => {
1649
1890
  :default => true,
1650
1891
  :public => true,
1651
1892
  :type => Boolean,
1652
1893
  :allowed_from_server => false,
1653
- :description => 'If <code>true</code>, the agent captures attributes on span events.'
1894
+ :description => 'If `true`, the agent captures attributes on span events.'
1654
1895
  },
1655
1896
  :'transaction_segments.attributes.enabled' => {
1656
1897
  :default => true,
1657
1898
  :public => true,
1658
1899
  :type => Boolean,
1659
1900
  :allowed_from_server => false,
1660
- :description => 'If <code>true</code>, the agent captures attributes on transaction segments.'
1901
+ :description => 'If `true`, the agent captures attributes on transaction segments.'
1661
1902
  },
1662
1903
  :'attributes.exclude' => {
1663
1904
  :default => [],
@@ -1665,7 +1906,7 @@ module NewRelic
1665
1906
  :type => Array,
1666
1907
  :allowed_from_server => false,
1667
1908
  :transform => DefaultSource.method(:convert_to_list),
1668
- :description => 'Prefix of attributes to exclude from all destinations. Allows <code>*</code> as wildcard at end.'
1909
+ :description => 'Prefix of attributes to exclude from all destinations. Allows `*` as wildcard at end.'
1669
1910
  },
1670
1911
  :'transaction_tracer.attributes.exclude' => {
1671
1912
  :default => [],
@@ -1673,7 +1914,7 @@ module NewRelic
1673
1914
  :type => Array,
1674
1915
  :allowed_from_server => false,
1675
1916
  :transform => DefaultSource.method(:convert_to_list),
1676
- :description => 'Prefix of attributes to exclude from transaction traces. Allows <code>*</code> as wildcard at end.'
1917
+ :description => 'Prefix of attributes to exclude from transaction traces. Allows `*` as wildcard at end.'
1677
1918
  },
1678
1919
  :'transaction_events.attributes.exclude' => {
1679
1920
  :default => [],
@@ -1681,7 +1922,7 @@ module NewRelic
1681
1922
  :type => Array,
1682
1923
  :allowed_from_server => false,
1683
1924
  :transform => DefaultSource.method(:convert_to_list),
1684
- :description => 'Prefix of attributes to exclude from transaction events. Allows <code>*</code> as wildcard at end.'
1925
+ :description => 'Prefix of attributes to exclude from transaction events. Allows `*` as wildcard at end.'
1685
1926
  },
1686
1927
  :'error_collector.attributes.exclude' => {
1687
1928
  :default => [],
@@ -1689,7 +1930,7 @@ module NewRelic
1689
1930
  :type => Array,
1690
1931
  :allowed_from_server => false,
1691
1932
  :transform => DefaultSource.method(:convert_to_list),
1692
- :description => 'Prefix of attributes to exclude from error collection. Allows <code>*</code> as wildcard at end.'
1933
+ :description => 'Prefix of attributes to exclude from error collection. Allows `*` as wildcard at end.'
1693
1934
  },
1694
1935
  :'browser_monitoring.attributes.exclude' => {
1695
1936
  :default => [],
@@ -1697,7 +1938,7 @@ module NewRelic
1697
1938
  :type => Array,
1698
1939
  :allowed_from_server => false,
1699
1940
  :transform => DefaultSource.method(:convert_to_list),
1700
- :description => 'Prefix of attributes to exclude from browser monitoring. Allows <code>*</code> as wildcard at end.'
1941
+ :description => 'Prefix of attributes to exclude from browser monitoring. Allows `*` as wildcard at end.'
1701
1942
  },
1702
1943
  :'span_events.attributes.exclude' => {
1703
1944
  :default => [],
@@ -1705,7 +1946,7 @@ module NewRelic
1705
1946
  :type => Array,
1706
1947
  :allowed_from_server => false,
1707
1948
  :transform => DefaultSource.method(:convert_to_list),
1708
- :description => 'Prefix of attributes to exclude from span events. Allows <code>*</code> as wildcard at end.'
1949
+ :description => 'Prefix of attributes to exclude from span events. Allows `*` as wildcard at end.'
1709
1950
  },
1710
1951
  :'transaction_segments.attributes.exclude' => {
1711
1952
  :default => [],
@@ -1713,7 +1954,7 @@ module NewRelic
1713
1954
  :type => Array,
1714
1955
  :allowed_from_server => false,
1715
1956
  :transform => DefaultSource.method(:convert_to_list),
1716
- :description => 'Prefix of attributes to exclude from transaction segments. Allows <code>*</code> as wildcard at end.'
1957
+ :description => 'Prefix of attributes to exclude from transaction segments. Allows `*` as wildcard at end.'
1717
1958
  },
1718
1959
  :'attributes.include' => {
1719
1960
  :default => [],
@@ -1721,7 +1962,7 @@ module NewRelic
1721
1962
  :type => Array,
1722
1963
  :allowed_from_server => false,
1723
1964
  :transform => DefaultSource.method(:convert_to_list),
1724
- :description => 'Prefix of attributes to include in all destinations. Allows <code>*</code> as wildcard at end.'
1965
+ :description => 'Prefix of attributes to include in all destinations. Allows `*` as wildcard at end.'
1725
1966
  },
1726
1967
  :'transaction_tracer.attributes.include' => {
1727
1968
  :default => [],
@@ -1729,7 +1970,7 @@ module NewRelic
1729
1970
  :type => Array,
1730
1971
  :allowed_from_server => false,
1731
1972
  :transform => DefaultSource.method(:convert_to_list),
1732
- :description => 'Prefix of attributes to include in transaction traces. Allows <code>*</code> as wildcard at end.'
1973
+ :description => 'Prefix of attributes to include in transaction traces. Allows `*` as wildcard at end.'
1733
1974
  },
1734
1975
  :'transaction_events.attributes.include' => {
1735
1976
  :default => [],
@@ -1737,7 +1978,7 @@ module NewRelic
1737
1978
  :type => Array,
1738
1979
  :allowed_from_server => false,
1739
1980
  :transform => DefaultSource.method(:convert_to_list),
1740
- :description => 'Prefix of attributes to include in transaction events. Allows <code>*</code> as wildcard at end.'
1981
+ :description => 'Prefix of attributes to include in transaction events. Allows `*` as wildcard at end.'
1741
1982
  },
1742
1983
  :'error_collector.attributes.include' => {
1743
1984
  :default => [],
@@ -1745,7 +1986,7 @@ module NewRelic
1745
1986
  :type => Array,
1746
1987
  :allowed_from_server => false,
1747
1988
  :transform => DefaultSource.method(:convert_to_list),
1748
- :description => 'Prefix of attributes to include in error collection. Allows <code>*</code> as wildcard at end.'
1989
+ :description => 'Prefix of attributes to include in error collection. Allows `*` as wildcard at end.'
1749
1990
  },
1750
1991
  :'browser_monitoring.attributes.include' => {
1751
1992
  :default => [],
@@ -1753,7 +1994,7 @@ module NewRelic
1753
1994
  :type => Array,
1754
1995
  :allowed_from_server => false,
1755
1996
  :transform => DefaultSource.method(:convert_to_list),
1756
- :description => 'Prefix of attributes to include in browser monitoring. Allows <code>*</code> as wildcard at end.'
1997
+ :description => 'Prefix of attributes to include in browser monitoring. Allows `*` as wildcard at end.'
1757
1998
  },
1758
1999
  :'span_events.attributes.include' => {
1759
2000
  :default => [],
@@ -1761,7 +2002,7 @@ module NewRelic
1761
2002
  :type => Array,
1762
2003
  :allowed_from_server => false,
1763
2004
  :transform => DefaultSource.method(:convert_to_list),
1764
- :description => 'Prefix of attributes to include on span events. Allows <code>*</code> as wildcard at end.'
2005
+ :description => 'Prefix of attributes to include on span events. Allows `*` as wildcard at end.'
1765
2006
  },
1766
2007
  :'transaction_segments.attributes.include' => {
1767
2008
  :default => [],
@@ -1769,14 +2010,14 @@ module NewRelic
1769
2010
  :type => Array,
1770
2011
  :allowed_from_server => false,
1771
2012
  :transform => DefaultSource.method(:convert_to_list),
1772
- :description => 'Prefix of attributes to include on transaction segments. Allows <code>*</code> as wildcard at end.'
2013
+ :description => 'Prefix of attributes to include on transaction segments. Allows `*` as wildcard at end.'
1773
2014
  },
1774
2015
  :'custom_attributes.enabled' => {
1775
2016
  :default => true,
1776
2017
  :public => true,
1777
2018
  :type => Boolean,
1778
2019
  :allowed_from_server => false,
1779
- :description => 'If <code>false</code>, custom attributes will not be sent on Insights events.'
2020
+ :description => 'If `false`, custom attributes will not be sent on Insights events.'
1780
2021
  },
1781
2022
  :'utilization.detect_aws' => {
1782
2023
  :default => true,
@@ -1784,7 +2025,7 @@ module NewRelic
1784
2025
  :type => Boolean,
1785
2026
  :allowed_from_server => false,
1786
2027
  :dynamic_name => true,
1787
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an AWS environment.'
2028
+ :description => 'If `true`, the agent automatically detects that it is running in an AWS environment.'
1788
2029
  },
1789
2030
  :'utilization.detect_azure' => {
1790
2031
  :default => true,
@@ -1792,7 +2033,7 @@ module NewRelic
1792
2033
  :type => Boolean,
1793
2034
  :allowed_from_server => false,
1794
2035
  :dynamic_name => true,
1795
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an Azure environment.'
2036
+ :description => 'If `true`, the agent automatically detects that it is running in an Azure environment.'
1796
2037
  },
1797
2038
  :'utilization.detect_gcp' => {
1798
2039
  :default => true,
@@ -1800,7 +2041,7 @@ module NewRelic
1800
2041
  :type => Boolean,
1801
2042
  :allowed_from_server => false,
1802
2043
  :dynamic_name => true,
1803
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an Google Cloud Platform environment.'
2044
+ :description => 'If `true`, the agent automatically detects that it is running in an Google Cloud Platform environment.'
1804
2045
  },
1805
2046
  :'utilization.detect_pcf' => {
1806
2047
  :default => true,
@@ -1808,21 +2049,21 @@ module NewRelic
1808
2049
  :type => Boolean,
1809
2050
  :allowed_from_server => false,
1810
2051
  :dynamic_name => true,
1811
- :description => 'If <code>true</code>, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.'
2052
+ :description => 'If `true`, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.'
1812
2053
  },
1813
2054
  :'utilization.detect_docker' => {
1814
2055
  :default => true,
1815
2056
  :public => true,
1816
2057
  :type => Boolean,
1817
2058
  :allowed_from_server => false,
1818
- :description => 'If <code>true</code>, the agent automatically detects that it is running in Docker.'
2059
+ :description => 'If `true`, the agent automatically detects that it is running in Docker.'
1819
2060
  },
1820
2061
  :'utilization.detect_kubernetes' => {
1821
2062
  :default => true,
1822
2063
  :public => true,
1823
2064
  :type => Boolean,
1824
2065
  :allowed_from_server => false,
1825
- :description => 'If <code>true</code>, the agent automatically detects that it is running in Kubernetes.'
2066
+ :description => 'If `true`, the agent automatically detects that it is running in Kubernetes.'
1826
2067
  },
1827
2068
  :'utilization.billing_hostname' => {
1828
2069
  :default => nil,
@@ -1853,21 +2094,21 @@ module NewRelic
1853
2094
  :public => true,
1854
2095
  :type => Boolean,
1855
2096
  :allowed_from_server => false,
1856
- :description => 'If <code>false</code>, the agent will not report datastore instance metrics, nor add <code>host</code> or <code>port_path_or_id</code> parameters to transaction or slow sql traces.'
2097
+ :description => 'If `false`, the agent will not report datastore instance metrics, nor add `host` or `port_path_or_id` parameters to transaction or slow SQL traces.'
1857
2098
  },
1858
2099
  :'datastore_tracer.database_name_reporting.enabled' => {
1859
2100
  :default => true,
1860
2101
  :public => true,
1861
2102
  :type => Boolean,
1862
2103
  :allowed_from_server => false,
1863
- :description => 'If <code>false</code>, the agent will not add <code>database_name</code> parameter to transaction or slow sql traces.'
2104
+ :description => 'If `false`, the agent will not add `database_name` parameter to transaction or slow sql traces.'
1864
2105
  },
1865
2106
  :'clear_transaction_state_after_fork' => {
1866
2107
  :default => false,
1867
2108
  :public => true,
1868
2109
  :type => Boolean,
1869
2110
  :allowed_from_server => false,
1870
- :description => 'If <code>true</code>, the agent will clear <code>Tracer::State</code> in <code>Agent.drop_buffered_data</code>.'
2111
+ :description => 'If `true`, the agent will clear `Tracer::State` in `Agent.drop_buffered_data`.'
1871
2112
  },
1872
2113
  :account_id => {
1873
2114
  :default => nil,
@@ -1889,8 +2130,8 @@ module NewRelic
1889
2130
  :default => false,
1890
2131
  :public => true,
1891
2132
  :type => Boolean,
1892
- :allowed_from_server => false,
1893
- :description => 'Distributed tracing lets you see the path that a request takes through your distributed system. Enabling distributed tracing changes the behavior of some New Relic features, so carefully consult the <a href="https://docs.newrelic.com/docs/transition-guide-distributed-tracing">transition guide</a> before you enable this feature.'
2133
+ :allowed_from_server => true,
2134
+ :description => 'Distributed tracing lets you see the path that a request takes through your distributed system. Enabling distributed tracing changes the behavior of some New Relic features, so carefully consult the [transition guide](/docs/transition-guide-distributed-tracing) before you enable this feature.'
1894
2135
  },
1895
2136
  :trusted_account_key => {
1896
2137
  :default => nil,
@@ -1919,7 +2160,7 @@ module NewRelic
1919
2160
  :public => true,
1920
2161
  :type => Boolean,
1921
2162
  :allowed_from_server => true,
1922
- :description => 'If <code>true</code>, enables span event sampling.'
2163
+ :description => 'If `true`, enables span event sampling.'
1923
2164
  },
1924
2165
  :'span_events.queue_size' => {
1925
2166
  :default => 10_000,