newrelic_rpm 6.13.0 → 7.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +231 -0
  4. data/CONTRIBUTING.md +13 -2
  5. data/README.md +2 -2
  6. data/lib/new_relic/agent.rb +5 -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 +412 -220
  11. data/lib/new_relic/agent/configuration/manager.rb +2 -2
  12. data/lib/new_relic/agent/database_adapter.rb +33 -0
  13. data/lib/new_relic/agent/datastores/redis.rb +0 -4
  14. data/lib/new_relic/agent/distributed_tracing.rb +0 -66
  15. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +2 -2
  16. data/lib/new_relic/agent/http_clients/uri_util.rb +1 -1
  17. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +4 -5
  18. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +21 -68
  19. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +0 -16
  20. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +23 -57
  21. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +1 -3
  22. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -15
  23. data/lib/new_relic/agent/instrumentation/bunny.rb +10 -196
  24. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +45 -0
  25. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +152 -0
  26. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +35 -0
  27. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +1 -0
  28. data/lib/new_relic/agent/instrumentation/curb.rb +9 -259
  29. data/lib/new_relic/agent/instrumentation/curb/chain.rb +93 -0
  30. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +222 -0
  31. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +63 -0
  32. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +38 -0
  33. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +53 -0
  34. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +34 -0
  35. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +8 -84
  36. data/lib/new_relic/agent/instrumentation/excon.rb +2 -1
  37. data/lib/new_relic/agent/instrumentation/grape.rb +13 -113
  38. data/lib/new_relic/agent/instrumentation/grape/chain.rb +25 -0
  39. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +100 -0
  40. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +17 -0
  41. data/lib/new_relic/agent/instrumentation/httpclient.rb +8 -30
  42. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +25 -0
  43. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +38 -0
  44. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +17 -0
  45. data/lib/new_relic/agent/instrumentation/httprb.rb +29 -0
  46. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +22 -0
  47. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +30 -0
  48. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +15 -0
  49. data/lib/new_relic/agent/instrumentation/memcache.rb +54 -69
  50. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +16 -0
  51. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +38 -121
  52. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +56 -0
  53. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +88 -0
  54. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +88 -0
  55. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +4 -10
  56. data/lib/new_relic/agent/instrumentation/mongo.rb +7 -0
  57. data/lib/new_relic/agent/instrumentation/net_http.rb +44 -0
  58. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +25 -0
  59. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +40 -0
  60. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +21 -0
  61. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +1 -1
  62. data/lib/new_relic/agent/instrumentation/padrino.rb +18 -75
  63. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +34 -0
  64. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +27 -0
  65. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +20 -0
  66. data/lib/new_relic/agent/instrumentation/rack.rb +29 -160
  67. data/lib/new_relic/agent/instrumentation/rack/chain.rb +57 -0
  68. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +32 -0
  69. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +73 -0
  70. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +36 -0
  71. data/lib/new_relic/agent/instrumentation/rake.rb +13 -188
  72. data/lib/new_relic/agent/instrumentation/rake/chain.rb +25 -0
  73. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +144 -0
  74. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +14 -0
  75. data/lib/new_relic/agent/instrumentation/redis.rb +12 -186
  76. data/lib/new_relic/agent/instrumentation/redis/chain.rb +34 -0
  77. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +65 -0
  78. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +24 -0
  79. data/lib/new_relic/agent/instrumentation/resque.rb +21 -32
  80. data/lib/new_relic/agent/instrumentation/resque/chain.rb +22 -0
  81. data/lib/new_relic/agent/instrumentation/resque/helper.rb +19 -0
  82. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +35 -0
  83. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +16 -0
  84. data/lib/new_relic/agent/instrumentation/sidekiq.rb +1 -1
  85. data/lib/new_relic/agent/instrumentation/sinatra.rb +20 -198
  86. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +55 -0
  87. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +29 -34
  88. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +124 -0
  89. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +33 -0
  90. data/lib/new_relic/agent/instrumentation/typhoeus.rb +10 -89
  91. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +22 -0
  92. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +82 -0
  93. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +14 -0
  94. data/lib/new_relic/agent/javascript_instrumentor.rb +12 -7
  95. data/lib/new_relic/agent/method_tracer.rb +6 -16
  96. data/lib/new_relic/agent/new_relic_service.rb +16 -13
  97. data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
  98. data/lib/new_relic/agent/span_event_primitive.rb +10 -8
  99. data/lib/new_relic/agent/sql_sampler.rb +3 -3
  100. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -1
  101. data/lib/new_relic/agent/transaction.rb +1 -4
  102. data/lib/new_relic/agent/transaction/abstract_segment.rb +1 -1
  103. data/lib/new_relic/agent/transaction/distributed_tracer.rb +12 -6
  104. data/lib/new_relic/agent/transaction/message_broker_segment.rb +1 -0
  105. data/lib/new_relic/agent/vm/mri_vm.rb +6 -4
  106. data/lib/new_relic/cli/commands/deployments.rb +0 -1
  107. data/lib/new_relic/constants.rb +4 -0
  108. data/lib/new_relic/control/frameworks/rails.rb +11 -9
  109. data/lib/new_relic/control/instance_methods.rb +1 -0
  110. data/lib/new_relic/dependency_detection.rb +119 -9
  111. data/lib/new_relic/environment_report.rb +1 -7
  112. data/lib/new_relic/noticed_error.rb +1 -5
  113. data/lib/new_relic/supportability_helper.rb +3 -2
  114. data/lib/new_relic/version.rb +2 -2
  115. data/lib/tasks/config.html.erb +14 -25
  116. data/lib/tasks/config.rake +8 -7
  117. data/newrelic_rpm.gemspec +2 -2
  118. data/test/agent_helper.rb +1 -0
  119. metadata +55 -32
  120. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  121. data/.github/ISSUE_TEMPLATE/config.yml +0 -5
  122. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -24
  123. data/.github/actions/annotate/README.md +0 -79
  124. data/.github/actions/annotate/action.yml +0 -6
  125. data/.github/actions/annotate/dist/index.js +0 -433
  126. data/.github/actions/annotate/index.js +0 -25
  127. data/.github/actions/annotate/package-lock.json +0 -172
  128. data/.github/actions/annotate/package.json +0 -30
  129. data/.github/actions/annotate/pre-commit +0 -5
  130. data/.github/actions/build-ruby/README.md +0 -79
  131. data/.github/actions/build-ruby/action.yml +0 -15
  132. data/.github/actions/build-ruby/dist/index.js +0 -52683
  133. data/.github/actions/build-ruby/index.js +0 -514
  134. data/.github/actions/build-ruby/package-lock.json +0 -581
  135. data/.github/actions/build-ruby/package.json +0 -32
  136. data/.github/actions/build-ruby/pre-commit +0 -5
  137. data/.github/pull_request_template.md +0 -16
  138. data/.github/workflows/ci.yml +0 -212
  139. data/.github/workflows/pr_review_checklist.yml +0 -22
  140. data/.github/workflows/release.yml +0 -78
  141. data/.github/workflows/scripts/rubygems-authenticate.py +0 -13
  142. data/.github/workflows/scripts/rubygems-publish.rb +0 -32
  143. data/.github/workflows/snyk.yml +0 -27
  144. data/.github/workflows/stale.yml +0 -21
  145. data/cert/cacert.pem +0 -1177
  146. data/lib/new_relic/agent/instrumentation/http.rb +0 -49
  147. 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: 1aaaca5b73971907d308c6aa6083380b7d782773827b3c28ea4f700dafe14a30
4
- data.tar.gz: e906dd68c3d0ce180145d3a8f54ce8ea67f0f36881348c14b05ba67cea808007
3
+ metadata.gz: 768b946a5433cf79422bbbc2cda40878a70a6aad22a159e5eb0dcdb351aa9e6d
4
+ data.tar.gz: efa504f22c2029103d7ccba6940a47b77d12ef4f1d13fbff2da34d9ba7443c1a
5
5
  SHA512:
6
- metadata.gz: b6a498bbd04864a7f2367d5c15a8c82896a1832afc801622519e11296871b8bdca0c7031e0d139320f667361caf1428ff8289de3a46831e61f8b0dfd689cb165
7
- data.tar.gz: 386644d2039b9f5d5913670add5768a67d17e8d7f23aaf9e2a1193682c2f008053adf6481bf3213621163235d1f66cfce5ad09d72a002e7bcf745a23de159bf0
6
+ metadata.gz: d982762c9dadd2457e49a6ae480b39ad91d0484de4c8788cc0cb3ab3c677e001c57aa8047daaa0d1010b7a7b2b5b15c74790d60badecd81a3987bc4dc3a3d151
7
+ data.tar.gz: '079081d14361839642d5339bf1a2be928cded80310cfd951f43f2d2885c6fb71c3a6a713db6ae9e03e7bcf9e244c4a8cf48d1e132a7ba47f928b4bff974426d6'
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,236 @@
1
1
  # New Relic Ruby Agent Release Notes #
2
2
 
3
+ ## v7.1.0
4
+
5
+ * **Add support for CSP nonces when using our API to insert the browser agent**
6
+
7
+ 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.
8
+
9
+ * **Removed MD5 use in the SQL sampler**
10
+
11
+ 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.
12
+
13
+ * **Enable server-side configuration of distributed tracing**
14
+
15
+ `distributed_tracing.enabled` may now be set in server-side application configuration.
16
+
17
+ * **Bugfix: Fix for missing part of a previous bugfix**
18
+
19
+ 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.
20
+
21
+ * **Update known conflicts with use of Module#Prepend**
22
+
23
+ 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'.
24
+
25
+ * **Bugfix: Updated support for ActiveRecord 6.1+ instrumentation**
26
+
27
+ Previously, the agent depended on `connection_id` to be present in the Active Support instrumentation for `sql.active_record`
28
+ to get the current ActiveRecord connection. As of Rails 6.1, `connection_id` has been dropped in favor of providing the connection
29
+ object through the `connection` value exclusively. This resulted in datastore spans displaying fallback behavior, including showing
30
+ "ActiveRecord" as the database vendor.
31
+
32
+ * **Bugfix: Updated support for Resque's FORK_PER_JOB option**
33
+
34
+ Support for Resque's FORK_PER_JOB flag within the Ruby agent was incomplete and nonfunctional. The agent should now behave
35
+ correctly when running in a non-forking Resque worker process.
36
+
37
+ * **Bugfix: Added check for ruby2_keywords in add_transaction_tracer**
38
+
39
+ 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.
40
+
41
+ * **Confirmed support for yajl 1.4.0**
42
+
43
+ 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.
44
+
45
+
46
+ ## v7.0.0
47
+
48
+ * **Ruby Agent 6.x to 7.x Migration Guide Available**
49
+
50
+ 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.
51
+
52
+ * **Ruby 2.0 and 2.1 Dropped**
53
+
54
+ Support for Ruby 2.0 and 2.1 dropped with this release. No code changes that would prevent the agent from continuing to
55
+ 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
56
+ for 7.0.0 and onward.
57
+
58
+ * **Implemented prepend auto-instrumentation strategies for most Ruby gems/libraries**
59
+
60
+ This release brings the auto-instrumentation strategies for most gems into the modern era for Ruby by providing both
61
+ prepend and method-chaining (a.k.a. method-aliasing) strategies for auto instrumenting. Prepend, which has been available since
62
+ Ruby 2.0 is now the default strategy employed in auto-instrumenting. It is known that some external gems lead to Stack Level
63
+ too Deep exceptions when prepend and method-chaining are mixed. In such known cases, auto-instrumenting strategy will fall back
64
+ to method-chaining automatically.
65
+
66
+ This release also deprecates many overlapping and inconsistently named configuration settings in favor of being able to control
67
+ behavior of instrumentation per library with one setting that can be one of auto (the default), disabled, prepend, or chain.
68
+
69
+ Please see the above-referenced migration guide for further details.
70
+
71
+ * **Removed SSL cert bundle**
72
+
73
+ The agent will no longer ship this bundle and will rely on system certs.
74
+
75
+ * **Removed deprecated config options**
76
+
77
+ The following config options were previously deprecated and are no longer available
78
+ - `disable_active_record_4`
79
+ - `disable_active_record_5`
80
+ - `autostart.blacklisted_constants`
81
+ - `autostart.blacklisted_executables`
82
+ - `autostart.blacklisted_rake_tasks`
83
+ - `strip_exception_messages.whitelist`
84
+
85
+ * **Removed deprecated attribute**
86
+
87
+ The attribute `httpResponseCode` was previously deprecated and replaced with `http.statusCode`. This deprecated attribute has now been removed.
88
+
89
+ * **Removed deprecated option in notice_error**
90
+
91
+ Previously, the `:trace_only` option to NewRelic::Agent.notice_error was deprecated and replaced with `:expected`. This deprecated option has been removed.
92
+
93
+ * **Removed deprecated api methods**
94
+
95
+ 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.
96
+
97
+ * **Bugfix: Prevent browser monitoring middleware from installing to middleware multiple times**
98
+
99
+ In rare cases on jRuby, the BrowserMonitoring middleware could attempt to install itself
100
+ multiple times at start up. This bug fix addresses that by using a mutex to introduce
101
+ thread safety to the operation. Sintra in particular can have this race condition because
102
+ its middleware stack is not installed until the first request is received.
103
+
104
+ * **Skip constructing Time for transactions**
105
+
106
+ Thanks to @viraptor, we are no longer constructing an unused Time object with every call to starting a new Transaction.
107
+
108
+ * **Bugfix: nil Middlewares injection now prevented and gracefully handled in Sinatra**
109
+
110
+ Previously, the agent could potentially inject multiples of an instrumented middleware if Sinatra received many
111
+ requests at once during start up and initialization due to Sinatra's ability to delay full start up as long as possible.
112
+ This has now been fixed and the Ruby agent correctly instruments only once as well as gracefully handles nil middleware
113
+ classes in general.
114
+
115
+ * **Bugfix: Ensure transaction nesting max depth is always consistent with length of segments**
116
+
117
+ Thanks to @warp for noticing and fixing the scenario where Transaction nesting_max_depth can get out of sync
118
+ with segments length resulting in an exception when attempting to nest the initial segment which does not exist.
119
+
120
+ ## v6.15.0
121
+
122
+ * **Official Ruby 3.0 support**
123
+
124
+ The ruby agent has been verified to run on ruby 3.0.0
125
+
126
+ * **Added support for Rails 6.1**
127
+
128
+ The ruby agent has been verified to run with Rails 6.1
129
+ Special thanks to @hasghari for setting this up!
130
+
131
+ * **Added support for Sidekiq 6.0, 6.1**
132
+
133
+ The ruby agent has been verified to run with both 6.0 and 6.1 versions of sidekiq
134
+
135
+ * **Bugfix: No longer overwrites sidekiq trace data**
136
+
137
+ Distributed tracing data is now added to the job trace info rather than overwriting the existing data.
138
+
139
+ * **Bugfix: Fixes cases where errors are reported for spans with no other attributes**
140
+
141
+ Previously, in cases where a span does not have any agent/custom attributes on it, but an error
142
+ is noticed and recorded against the span, a `FrozenError: can't modify frozen Hash` is thrown.
143
+ This is now fixed and errors are now correctly recorded against such span events.
144
+
145
+ * **Bugfix: `DistributedTracing.insert_distributed_trace_headers` Supportability metric now recorded**
146
+
147
+ Previously, API calls to `DistributedTracing.insert_distributed_trace_headers` would lead to an exception
148
+ about the missing supportability metric rather than flowing through the API implementation as intended.
149
+ This would potentially lead to broken distributed traces as the trace headers were not inserted on the API call.
150
+ `DistributedTracing.insert_distributed_trace_headers` now correctly records the supportability metric and
151
+ inserts the distributed trace headers as intended.
152
+
153
+ * **Bugfix: child completions after parent completes sometimes throws exception attempting to access nil parent**
154
+
155
+ In scenarios where the child segment/span is completing after the parent in jRuby, the parent may have already
156
+ been freed and no longer accessible. This would lead to an attempt to call `descendant_complete` on a Nil
157
+ object. This is fixed to protect against calling the `descendant_complete` in such cases.
158
+
159
+ * **Feature: implements `force_install_exit_handler` config flag**
160
+
161
+ The `force_install_exit_handler` configuration flag allows an application to instruct the agent to install its
162
+ graceful shutdown exit handler, which will send any locally cached data to the New Relic collector prior to the
163
+ application shutting down. This is useful for when the primary framework has an embedded Sinatra application that
164
+ is otherwise detected and skips installing the exit hook for graceful shutdowns.
165
+
166
+ * **Default prepend_net_instrumentation to false**
167
+
168
+ 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
169
+ unexpected compatibilty issues.
170
+
171
+ ## v6.14.0
172
+
173
+ * **Bugfix: Method tracers no longer cloning arguments**
174
+
175
+ 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.
176
+
177
+ * **Bugfix: Delayed Job instrumentation fixed for Ruby 2.7+**
178
+
179
+ Previously, the agent was erroneousy separating positional and keyword arguments on the instrumented method calls into
180
+ Delayed Job's library. The led to Delayed job not auto-instrumenting correctly and has been fixed.
181
+
182
+ * **Bugfix: Ruby 2.7+ methods sometimes erroneously attributed compiler warnings to the Agent's `add_method_tracer`**
183
+
184
+ The specific edge cases presented are now fixed by this release of the agent. There are still some known corner-cases
185
+ that will be resolved with upcoming changes in next major release of the Agent. If you encounter a problem with adding
186
+ method tracers and compiler warnings raised, please continue to submit small repoducible examples.
187
+
188
+ * **Bugfix: Ruby 2.7+ fix for keyword arguments on Rack apps is unnecessary and removed**
189
+
190
+ A common fix for positional and keyword arguments for method parameters was implemented where it was not needed and
191
+ led to RackApps getting extra arguments converted to keyword arguments rather than Hash when it expected one. This
192
+ Ruby 2.7+ change was reverted so that Rack apps behave correctly for Ruby >= 2.7.
193
+
194
+ * **Feature: captures incoming and outgoing request headers for distributed tracing**
195
+
196
+ HTTP request headers will be logged when log level is at least debug level. Similarly, request headers
197
+ for exchanges with New Relic servers are now audit logged when audit logging is enabled.
198
+
199
+ * **Bugfix: `newrelic.yml.erb` added to the configuration search path**
200
+
201
+ Previously, when a user specifies a `newrelic.yml.erb` and no `newrelic.yml` file, the agent fails to find
202
+ the `.erb` file because it was not in the list of files searched at startup. The Ruby agent has long supported this as a
203
+ means of configuring the agent programatically. The `newrelic.yml.erb` filename is restored to the search
204
+ path and will be utilized if present. NOTE: `newrelic.yml` still takes precedence over `newrelic.yml.erb` If found,
205
+ the `.yml` file is used instead of the `.erb` file. Search directories and order of traversal remain unchanged.
206
+
207
+ * **Bugfix: dependency detection of Redis now works without raising an exception**
208
+
209
+ Previously, when detecting if Redis was available to instrument, the dependency detection would fail with an Exception raised
210
+ (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`.
211
+
212
+ * **Bugfix: Gracefully handles NilClass as a Middleware Class when instrumenting**
213
+
214
+ Previously, if a NilClass is passed as the Middleware Class to instrument when processing the middleware stack,
215
+ the agent would fail to fully load and instrument the middleware stack. This fix gracefully skips over nil classes.
216
+
217
+ * **Memory Sampler updated to recognize macOS Big Sur**
218
+
219
+ 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.
220
+
221
+ * **Prepend implementation of Net::HTTP instrumentation available**
222
+
223
+ 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.
224
+
225
+ ## v6.13.1
226
+
227
+ * **Bugfix: obfuscating URLs to external services no longer modifying original URI**
228
+
229
+ A recent change to the Ruby agent to obfuscate URIs sent to external services had the unintended side-effect of removing query parameters
230
+ from the original URI. This is fixed to obfuscate while also preserving the original URI.
231
+
232
+ Thanks to @VictorJimenezKwast for pinpointing and helpful unit test to demonstrate.
233
+
3
234
  ## v6.13.0
4
235
 
5
236
  * **Bugfix: never use redirect host when accessing preconnect endpoint**
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.
@@ -46,6 +46,7 @@ module NewRelic
46
46
  require 'new_relic/agent/error_collector'
47
47
  require 'new_relic/agent/sampler'
48
48
  require 'new_relic/agent/database'
49
+ require 'new_relic/agent/database_adapter'
49
50
  require 'new_relic/agent/datastores'
50
51
  require 'new_relic/agent/pipe_channel_manager'
51
52
  require 'new_relic/agent/configuration'
@@ -282,12 +283,6 @@ module NewRelic
282
283
  def notice_error(exception, options={})
283
284
  record_api_supportability_metric(:notice_error)
284
285
 
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
286
  Transaction.notice_error(exception, options)
292
287
  nil # don't return a noticed error datastructure. it can only hurt.
293
288
  end
@@ -763,13 +758,15 @@ module NewRelic
763
758
  # In previous agents there was a corresponding footer required, but all the
764
759
  # work is now done by this single method.
765
760
  #
761
+ # @param [String] nonce The nonce to use in the javascript tag for browser instrumentation
762
+ #
766
763
  # @api public
767
764
  #
768
- def browser_timing_header
765
+ def browser_timing_header(nonce=nil)
769
766
  record_api_supportability_metric(:browser_timing_header)
770
767
 
771
768
  return "" unless agent
772
- agent.javascript_instrumentor.browser_timing_header
769
+ agent.javascript_instrumentor.browser_timing_header(nonce)
773
770
  end
774
771
 
775
772
  # @!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,7 +1290,7 @@ 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',
@@ -1129,14 +1312,14 @@ module NewRelic
1129
1312
  :type => Boolean,
1130
1313
  :allowed_from_server => true,
1131
1314
  :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>.'
1315
+ :description => 'If `true`, the agent collects [TransactionError events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights).'
1133
1316
  },
1134
1317
  :'error_collector.max_event_samples_stored' => {
1135
1318
  :default => 100,
1136
1319
  :public => true,
1137
1320
  :type => Integer,
1138
1321
  :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.'
1322
+ :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
1323
  },
1141
1324
  :'rum.enabled' => {
1142
1325
  :default => true,
@@ -1185,7 +1368,7 @@ module NewRelic
1185
1368
  :public => true,
1186
1369
  :type => Boolean,
1187
1370
  :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).'
1371
+ :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
1372
  },
1190
1373
  :'browser_monitoring.capture_attributes' => {
1191
1374
  :default => false,
@@ -1193,7 +1376,7 @@ module NewRelic
1193
1376
  :type => Boolean,
1194
1377
  :deprecated => true,
1195
1378
  :allowed_from_server => false,
1196
- :description => 'Deprecated; use <a href="#browser_monitoring-attributes-enabled"><code>browser_monitoring.attributes.enabled</code></a> instead.'
1379
+ :description => 'Deprecated; use [`browser_monitoring.attributes.enabled`](#browser_monitoring-attributes-enabled) instead.'
1197
1380
  },
1198
1381
  :'browser_monitoring.loader' => {
1199
1382
  :default => DefaultSource.browser_monitoring_loader,
@@ -1207,7 +1390,7 @@ module NewRelic
1207
1390
  :public => false,
1208
1391
  :type => String,
1209
1392
  :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>.)'
1393
+ :description => 'Version of JavaScript agent loader (returned from the New Relic [collector](/docs/apm/new-relic-apm/getting-started/glossary#collector).)'
1211
1394
  },
1212
1395
  :'browser_monitoring.debug' => {
1213
1396
  :default => false,
@@ -1251,7 +1434,7 @@ module NewRelic
1251
1434
  :public => true,
1252
1435
  :type => Boolean,
1253
1436
  :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>.'
1437
+ :description => 'If `true`, enables [cross-application tracing](/docs/apm/transactions/cross-application-traces/cross-application-tracing).'
1255
1438
  },
1256
1439
  :cross_application_tracing => {
1257
1440
  :default => nil,
@@ -1281,7 +1464,7 @@ module NewRelic
1281
1464
  :public => true,
1282
1465
  :type => Boolean,
1283
1466
  :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>.'
1467
+ :description => 'If `true`, enables use of the [thread profiler](/docs/apm/applications-menu/events/thread-profiler-tool).'
1285
1468
  },
1286
1469
  :'thread_profiler.max_profile_overhead' => {
1287
1470
  :default => 0.05,
@@ -1295,14 +1478,14 @@ module NewRelic
1295
1478
  :public => true,
1296
1479
  :type => String,
1297
1480
  :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.'
1481
+ :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
1482
  },
1300
1483
  :'analytics_events.enabled' => {
1301
1484
  :default => true,
1302
1485
  :public => true,
1303
1486
  :type => Boolean,
1304
1487
  :allowed_from_server => true,
1305
- :description => 'If <code>true</code>, enables analytics event sampling.'
1488
+ :description => 'If `true`, enables analytics event sampling.'
1306
1489
  },
1307
1490
  :'analytics_events.max_samples_stored' => {
1308
1491
  :default => 1200,
@@ -1317,7 +1500,7 @@ module NewRelic
1317
1500
  :type => Boolean,
1318
1501
  :deprecated => true,
1319
1502
  :allowed_from_server => false,
1320
- :description => 'Deprecated; use <a href="#transaction_events-attributes-enabled"><code>transaction_events.attributes.enabled</code></a> instead.'
1503
+ :description => 'Deprecated; use [`transaction_events.attributes.enabled`](#transaction_events-attributes-enabled) instead.'
1321
1504
  },
1322
1505
  :restart_thread_in_children => {
1323
1506
  :default => true,
@@ -1346,7 +1529,7 @@ module NewRelic
1346
1529
  :type => Boolean,
1347
1530
  :dynamic_name => true,
1348
1531
  :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>.'
1532
+ :description => 'If `true`, the agent won\'t [sample performance measurements from the Ruby VM](/docs/agents/ruby-agent/features/ruby-vm-measurements).'
1350
1533
  },
1351
1534
  :disable_memory_sampler => {
1352
1535
  :default => false,
@@ -1354,7 +1537,7 @@ module NewRelic
1354
1537
  :type => Boolean,
1355
1538
  :dynamic_name => true,
1356
1539
  :allowed_from_server => false,
1357
- :description => 'If <code>true</code>, the agent won\'t sample the memory usage of the host process.'
1540
+ :description => 'If `true`, the agent won\'t sample the memory usage of the host process.'
1358
1541
  },
1359
1542
  :disable_cpu_sampler => {
1360
1543
  :default => false,
@@ -1362,7 +1545,7 @@ module NewRelic
1362
1545
  :type => Boolean,
1363
1546
  :dynamic_name => true,
1364
1547
  :allowed_from_server => false,
1365
- :description => 'If <code>true</code>, the agent won\'t sample the CPU usage of the host process.'
1548
+ :description => 'If `true`, the agent won\'t sample the CPU usage of the host process.'
1366
1549
  },
1367
1550
  :disable_delayed_job_sampler => {
1368
1551
  :default => false,
@@ -1370,33 +1553,7 @@ module NewRelic
1370
1553
  :type => Boolean,
1371
1554
  :dynamic_name => true,
1372
1555
  :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.'
1556
+ :description => 'If `true`, the agent won\'t measure the depth of Delayed Job queues.'
1400
1557
  },
1401
1558
  :disable_active_record_notifications => {
1402
1559
  :default => false,
@@ -1404,39 +1561,51 @@ module NewRelic
1404
1561
  :type => Boolean,
1405
1562
  :dynamic_name => true,
1406
1563
  :allowed_from_server => false,
1407
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4, 5, and 6.'
1564
+ :description => 'If `true`, disables instrumentation for ActiveRecord 4, 5, and 6.'
1408
1565
  },
1409
1566
  :disable_bunny => {
1410
1567
  :default => false,
1411
1568
  :public => true,
1412
1569
  :type => Boolean,
1570
+ :deprecated => true,
1413
1571
  :dynamic_name => true,
1414
1572
  :allowed_from_server => false,
1415
- :description => 'If <code>true</code>, disables instrumentation for the bunny gem.'
1573
+ :description => deprecated_description(:'instrumentation.bunny', 'If `true`, disables instrumentation for the bunny gem.')
1416
1574
  },
1417
1575
  :disable_curb => {
1418
1576
  :default => false,
1419
1577
  :public => true,
1420
1578
  :type => Boolean,
1579
+ :deprecated => true,
1421
1580
  :dynamic_name => true,
1422
1581
  :allowed_from_server => false,
1423
- :description => 'If <code>true</code>, disables instrumentation for the curb gem.'
1582
+ :description => deprecated_description(:'instrumentation.curb', 'If `true`, disables instrumentation for the curb gem.' )
1424
1583
  },
1425
1584
  :disable_excon => {
1426
1585
  :default => false,
1427
1586
  :public => true,
1428
1587
  :type => Boolean,
1429
1588
  :dynamic_name => true,
1589
+ :deprecated => true,
1590
+ :allowed_from_server => false,
1591
+ :description => deprecated_description(:'instrumentation.excon', 'If `true`, disables instrumentation for the excon gem.')
1592
+ },
1593
+ :'instrumentation.excon' => {
1594
+ :default => instrumentation_value_of(:disable_excon),
1595
+ :public => :true,
1596
+ :type => String,
1597
+ :dynamic_name => true,
1430
1598
  :allowed_from_server => false,
1431
- :description => 'If <code>true</code>, disables instrumentation for the excon gem.'
1599
+ :description => "Controls auto-instrumentation of Excon at start up. May be one of [enabled|disabled]."
1432
1600
  },
1433
1601
  :disable_httpclient => {
1434
1602
  :default => false,
1435
1603
  :public => true,
1436
1604
  :type => Boolean,
1437
1605
  :dynamic_name => true,
1606
+ :deprecated => true,
1438
1607
  :allowed_from_server => false,
1439
- :description => 'If <code>true</code>, disables instrumentation for the httpclient gem.'
1608
+ :description => deprecated_description(:'instrumentation.httpclient', 'If `true`, disables instrumentation for the httpclient gem.')
1440
1609
  },
1441
1610
  :disable_net_http => {
1442
1611
  :default => false,
@@ -1444,7 +1613,10 @@ module NewRelic
1444
1613
  :type => Boolean,
1445
1614
  :dynamic_name => true,
1446
1615
  :allowed_from_server => false,
1447
- :description => 'If <code>true</code>, disables instrumentation for Net::HTTP.'
1616
+ :deprecated => true,
1617
+ :description => deprecated_description(:'instrumentation.net_http',
1618
+ 'If `true`, disables instrumentation for Net::HTTP.'
1619
+ )
1448
1620
  },
1449
1621
  :disable_rack => {
1450
1622
  :default => false,
@@ -1452,7 +1624,8 @@ module NewRelic
1452
1624
  :type => Boolean,
1453
1625
  :dynamic_name => true,
1454
1626
  :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.'
1627
+ :deprecated => true,
1628
+ :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
1629
  },
1457
1630
  :disable_rack_urlmap => {
1458
1631
  :default => false,
@@ -1460,7 +1633,8 @@ module NewRelic
1460
1633
  :type => Boolean,
1461
1634
  :dynamic_name => true,
1462
1635
  :allowed_from_server => false,
1463
- :description => 'If <code>true</code>, prevents the agent from hooking into Rack::URLMap to install middleware tracing.'
1636
+ :deprecated => true,
1637
+ :description => deprecated_description(:'instrumentation.rack_urlmap', 'If `true`, prevents the agent from hooking into Rack::URLMap to install middleware tracing.')
1464
1638
  },
1465
1639
  :disable_puma_rack => {
1466
1640
  :default => value_of(:disable_rack),
@@ -1468,7 +1642,8 @@ module NewRelic
1468
1642
  :type => Boolean,
1469
1643
  :dynamic_name => true,
1470
1644
  :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.'
1645
+ :deprecated => true,
1646
+ :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
1647
  },
1473
1648
  :disable_puma_rack_urlmap => {
1474
1649
  :default => value_of(:disable_rack_urlmap),
@@ -1476,30 +1651,33 @@ module NewRelic
1476
1651
  :type => Boolean,
1477
1652
  :dynamic_name => true,
1478
1653
  :allowed_from_server => false,
1479
- :description => 'If <code>true</code>, prevents the agent from hooking into Puma::Rack::URLMap to install middleware tracing.'
1654
+ :deprecated => true,
1655
+ :description => deprecated_description(:'instrumentation.puma_rack_urlmap', 'If `true`, prevents the agent from hooking into Puma::Rack::URLMap to install middleware tracing.')
1480
1656
  },
1481
1657
  :disable_typhoeus => {
1482
1658
  :default => false,
1483
1659
  :public => true,
1484
1660
  :type => Boolean,
1485
1661
  :dynamic_name => true,
1662
+ :deprecated => true,
1486
1663
  :allowed_from_server => false,
1487
- :description => 'If <code>true</code>, the agent won\'t install instrumentation for the typhoeus gem.'
1664
+ :description => deprecated_description(:'instrumentation.typhoeus', 'If `true`, the agent won\'t install instrumentation for the typhoeus gem.' )
1488
1665
  },
1489
1666
  :disable_httprb => {
1490
1667
  :default => false,
1491
1668
  :public => true,
1492
1669
  :type => Boolean,
1493
1670
  :dynamic_name => true,
1671
+ :deprecated => true,
1494
1672
  :allowed_from_server => false,
1495
- :description => 'If <code>true</code>, the agent won\'t install instrumentation for the http.rb gem.'
1673
+ :description => deprecated_description(:'instrumentation.httprb', 'If `true`, the agent won\'t install instrumentation for the http.rb gem.' )
1496
1674
  },
1497
1675
  :disable_middleware_instrumentation => {
1498
1676
  :default => false,
1499
1677
  :public => true,
1500
1678
  :type => Boolean,
1501
1679
  :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).'
1680
+ :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
1681
  },
1504
1682
  :disable_rails_middleware => {
1505
1683
  :default => false,
@@ -1513,7 +1691,7 @@ module NewRelic
1513
1691
  :public => true,
1514
1692
  :type => Boolean,
1515
1693
  :allowed_from_server => false,
1516
- :description => 'If <code>true</code>, the agent uses Heroku dyno names as the hostname.'
1694
+ :description => 'If `true`, the agent uses Heroku dyno names as the hostname.'
1517
1695
  },
1518
1696
  :'heroku.dyno_name_prefixes_to_shorten' => {
1519
1697
  :default => ['scheduler', 'run'],
@@ -1528,14 +1706,14 @@ module NewRelic
1528
1706
  :public => true,
1529
1707
  :type => String,
1530
1708
  :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>.'
1709
+ :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
1710
  },
1533
1711
  :labels => {
1534
1712
  :default => '',
1535
1713
  :public => true,
1536
1714
  :type => String,
1537
1715
  :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>.'
1716
+ :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
1717
  },
1540
1718
  :aggressive_keepalive => {
1541
1719
  :default => true,
@@ -1586,7 +1764,7 @@ module NewRelic
1586
1764
  :public => true,
1587
1765
  :type => Boolean,
1588
1766
  :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>.'
1767
+ :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
1768
  },
1591
1769
  :'custom_insights_events.max_samples_stored' => {
1592
1770
  :default => 1000,
@@ -1601,63 +1779,77 @@ module NewRelic
1601
1779
  :public => false,
1602
1780
  :type => Boolean,
1603
1781
  :allowed_from_server => false,
1604
- :description => 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1782
+ :deprecated => true,
1783
+ :description => deprecated_description(:'instrumentation.grape',
1784
+ 'If `true`, the agent won\'t install Grape instrumentation.'
1785
+ )
1605
1786
  },
1606
1787
  :disable_grape => {
1607
1788
  :default => false,
1608
1789
  :public => true,
1609
1790
  :type => Boolean,
1610
1791
  :allowed_from_server => false,
1611
- :description => 'If <code>true</code>, the agent won\'t install Grape instrumentation.'
1792
+ :deprecated => true,
1793
+ :description => deprecated_description(:'instrumentation.grape',
1794
+ 'If `true`, the agent won\'t install Grape instrumentation.'
1795
+ )
1796
+ },
1797
+ :'instrumentation.grape' => {
1798
+ :default => instrumentation_value_of(:disable_grape_instrumentation),
1799
+ :public => :true,
1800
+ :type => String,
1801
+ :dynamic_name => true,
1802
+ :allowed_from_server => false,
1803
+ :description => "Controls auto-instrumentation of Grape at start up. May be one of [auto|prepend|chain|disabled]."
1612
1804
  },
1613
1805
  :'attributes.enabled' => {
1614
1806
  :default => true,
1615
1807
  :public => true,
1616
1808
  :type => Boolean,
1617
1809
  :allowed_from_server => false,
1618
- :description => 'If <code>true</code>, enables capture of attributes for all destinations.'
1810
+ :description => 'If `true`, enables capture of attributes for all destinations.'
1619
1811
  },
1620
1812
  :'transaction_tracer.attributes.enabled' => {
1621
1813
  :default => value_of(:'transaction_tracer.capture_attributes'),
1622
1814
  :public => true,
1623
1815
  :type => Boolean,
1624
1816
  :allowed_from_server => false,
1625
- :description => 'If <code>true</code>, the agent captures attributes from transaction traces.'
1817
+ :description => 'If `true`, the agent captures attributes from transaction traces.'
1626
1818
  },
1627
1819
  :'transaction_events.attributes.enabled' => {
1628
1820
  :default => value_of(:'analytics_events.capture_attributes'),
1629
1821
  :public => true,
1630
1822
  :type => Boolean,
1631
1823
  :allowed_from_server => false,
1632
- :description => 'If <code>true</code>, the agent captures attributes from transaction events.'
1824
+ :description => 'If `true`, the agent captures attributes from transaction events.'
1633
1825
  },
1634
1826
  :'error_collector.attributes.enabled' => {
1635
1827
  :default => value_of(:'error_collector.capture_attributes'),
1636
1828
  :public => true,
1637
1829
  :type => Boolean,
1638
1830
  :allowed_from_server => false,
1639
- :description => 'If <code>true</code>, the agent captures attributes from error collection.'
1831
+ :description => 'If `true`, the agent captures attributes from error collection.'
1640
1832
  },
1641
1833
  :'browser_monitoring.attributes.enabled' => {
1642
1834
  :default => value_of(:'browser_monitoring.capture_attributes'),
1643
1835
  :public => true,
1644
1836
  :type => Boolean,
1645
1837
  :allowed_from_server => false,
1646
- :description => 'If <code>true</code>, the agent captures attributes from browser monitoring.'
1838
+ :description => 'If `true`, the agent captures attributes from browser monitoring.'
1647
1839
  },
1648
1840
  :'span_events.attributes.enabled' => {
1649
1841
  :default => true,
1650
1842
  :public => true,
1651
1843
  :type => Boolean,
1652
1844
  :allowed_from_server => false,
1653
- :description => 'If <code>true</code>, the agent captures attributes on span events.'
1845
+ :description => 'If `true`, the agent captures attributes on span events.'
1654
1846
  },
1655
1847
  :'transaction_segments.attributes.enabled' => {
1656
1848
  :default => true,
1657
1849
  :public => true,
1658
1850
  :type => Boolean,
1659
1851
  :allowed_from_server => false,
1660
- :description => 'If <code>true</code>, the agent captures attributes on transaction segments.'
1852
+ :description => 'If `true`, the agent captures attributes on transaction segments.'
1661
1853
  },
1662
1854
  :'attributes.exclude' => {
1663
1855
  :default => [],
@@ -1665,7 +1857,7 @@ module NewRelic
1665
1857
  :type => Array,
1666
1858
  :allowed_from_server => false,
1667
1859
  :transform => DefaultSource.method(:convert_to_list),
1668
- :description => 'Prefix of attributes to exclude from all destinations. Allows <code>*</code> as wildcard at end.'
1860
+ :description => 'Prefix of attributes to exclude from all destinations. Allows `*` as wildcard at end.'
1669
1861
  },
1670
1862
  :'transaction_tracer.attributes.exclude' => {
1671
1863
  :default => [],
@@ -1673,7 +1865,7 @@ module NewRelic
1673
1865
  :type => Array,
1674
1866
  :allowed_from_server => false,
1675
1867
  :transform => DefaultSource.method(:convert_to_list),
1676
- :description => 'Prefix of attributes to exclude from transaction traces. Allows <code>*</code> as wildcard at end.'
1868
+ :description => 'Prefix of attributes to exclude from transaction traces. Allows `*` as wildcard at end.'
1677
1869
  },
1678
1870
  :'transaction_events.attributes.exclude' => {
1679
1871
  :default => [],
@@ -1681,7 +1873,7 @@ module NewRelic
1681
1873
  :type => Array,
1682
1874
  :allowed_from_server => false,
1683
1875
  :transform => DefaultSource.method(:convert_to_list),
1684
- :description => 'Prefix of attributes to exclude from transaction events. Allows <code>*</code> as wildcard at end.'
1876
+ :description => 'Prefix of attributes to exclude from transaction events. Allows `*` as wildcard at end.'
1685
1877
  },
1686
1878
  :'error_collector.attributes.exclude' => {
1687
1879
  :default => [],
@@ -1689,7 +1881,7 @@ module NewRelic
1689
1881
  :type => Array,
1690
1882
  :allowed_from_server => false,
1691
1883
  :transform => DefaultSource.method(:convert_to_list),
1692
- :description => 'Prefix of attributes to exclude from error collection. Allows <code>*</code> as wildcard at end.'
1884
+ :description => 'Prefix of attributes to exclude from error collection. Allows `*` as wildcard at end.'
1693
1885
  },
1694
1886
  :'browser_monitoring.attributes.exclude' => {
1695
1887
  :default => [],
@@ -1697,7 +1889,7 @@ module NewRelic
1697
1889
  :type => Array,
1698
1890
  :allowed_from_server => false,
1699
1891
  :transform => DefaultSource.method(:convert_to_list),
1700
- :description => 'Prefix of attributes to exclude from browser monitoring. Allows <code>*</code> as wildcard at end.'
1892
+ :description => 'Prefix of attributes to exclude from browser monitoring. Allows `*` as wildcard at end.'
1701
1893
  },
1702
1894
  :'span_events.attributes.exclude' => {
1703
1895
  :default => [],
@@ -1705,7 +1897,7 @@ module NewRelic
1705
1897
  :type => Array,
1706
1898
  :allowed_from_server => false,
1707
1899
  :transform => DefaultSource.method(:convert_to_list),
1708
- :description => 'Prefix of attributes to exclude from span events. Allows <code>*</code> as wildcard at end.'
1900
+ :description => 'Prefix of attributes to exclude from span events. Allows `*` as wildcard at end.'
1709
1901
  },
1710
1902
  :'transaction_segments.attributes.exclude' => {
1711
1903
  :default => [],
@@ -1713,7 +1905,7 @@ module NewRelic
1713
1905
  :type => Array,
1714
1906
  :allowed_from_server => false,
1715
1907
  :transform => DefaultSource.method(:convert_to_list),
1716
- :description => 'Prefix of attributes to exclude from transaction segments. Allows <code>*</code> as wildcard at end.'
1908
+ :description => 'Prefix of attributes to exclude from transaction segments. Allows `*` as wildcard at end.'
1717
1909
  },
1718
1910
  :'attributes.include' => {
1719
1911
  :default => [],
@@ -1721,7 +1913,7 @@ module NewRelic
1721
1913
  :type => Array,
1722
1914
  :allowed_from_server => false,
1723
1915
  :transform => DefaultSource.method(:convert_to_list),
1724
- :description => 'Prefix of attributes to include in all destinations. Allows <code>*</code> as wildcard at end.'
1916
+ :description => 'Prefix of attributes to include in all destinations. Allows `*` as wildcard at end.'
1725
1917
  },
1726
1918
  :'transaction_tracer.attributes.include' => {
1727
1919
  :default => [],
@@ -1729,7 +1921,7 @@ module NewRelic
1729
1921
  :type => Array,
1730
1922
  :allowed_from_server => false,
1731
1923
  :transform => DefaultSource.method(:convert_to_list),
1732
- :description => 'Prefix of attributes to include in transaction traces. Allows <code>*</code> as wildcard at end.'
1924
+ :description => 'Prefix of attributes to include in transaction traces. Allows `*` as wildcard at end.'
1733
1925
  },
1734
1926
  :'transaction_events.attributes.include' => {
1735
1927
  :default => [],
@@ -1737,7 +1929,7 @@ module NewRelic
1737
1929
  :type => Array,
1738
1930
  :allowed_from_server => false,
1739
1931
  :transform => DefaultSource.method(:convert_to_list),
1740
- :description => 'Prefix of attributes to include in transaction events. Allows <code>*</code> as wildcard at end.'
1932
+ :description => 'Prefix of attributes to include in transaction events. Allows `*` as wildcard at end.'
1741
1933
  },
1742
1934
  :'error_collector.attributes.include' => {
1743
1935
  :default => [],
@@ -1745,7 +1937,7 @@ module NewRelic
1745
1937
  :type => Array,
1746
1938
  :allowed_from_server => false,
1747
1939
  :transform => DefaultSource.method(:convert_to_list),
1748
- :description => 'Prefix of attributes to include in error collection. Allows <code>*</code> as wildcard at end.'
1940
+ :description => 'Prefix of attributes to include in error collection. Allows `*` as wildcard at end.'
1749
1941
  },
1750
1942
  :'browser_monitoring.attributes.include' => {
1751
1943
  :default => [],
@@ -1753,7 +1945,7 @@ module NewRelic
1753
1945
  :type => Array,
1754
1946
  :allowed_from_server => false,
1755
1947
  :transform => DefaultSource.method(:convert_to_list),
1756
- :description => 'Prefix of attributes to include in browser monitoring. Allows <code>*</code> as wildcard at end.'
1948
+ :description => 'Prefix of attributes to include in browser monitoring. Allows `*` as wildcard at end.'
1757
1949
  },
1758
1950
  :'span_events.attributes.include' => {
1759
1951
  :default => [],
@@ -1761,7 +1953,7 @@ module NewRelic
1761
1953
  :type => Array,
1762
1954
  :allowed_from_server => false,
1763
1955
  :transform => DefaultSource.method(:convert_to_list),
1764
- :description => 'Prefix of attributes to include on span events. Allows <code>*</code> as wildcard at end.'
1956
+ :description => 'Prefix of attributes to include on span events. Allows `*` as wildcard at end.'
1765
1957
  },
1766
1958
  :'transaction_segments.attributes.include' => {
1767
1959
  :default => [],
@@ -1769,14 +1961,14 @@ module NewRelic
1769
1961
  :type => Array,
1770
1962
  :allowed_from_server => false,
1771
1963
  :transform => DefaultSource.method(:convert_to_list),
1772
- :description => 'Prefix of attributes to include on transaction segments. Allows <code>*</code> as wildcard at end.'
1964
+ :description => 'Prefix of attributes to include on transaction segments. Allows `*` as wildcard at end.'
1773
1965
  },
1774
1966
  :'custom_attributes.enabled' => {
1775
1967
  :default => true,
1776
1968
  :public => true,
1777
1969
  :type => Boolean,
1778
1970
  :allowed_from_server => false,
1779
- :description => 'If <code>false</code>, custom attributes will not be sent on Insights events.'
1971
+ :description => 'If `false`, custom attributes will not be sent on Insights events.'
1780
1972
  },
1781
1973
  :'utilization.detect_aws' => {
1782
1974
  :default => true,
@@ -1784,7 +1976,7 @@ module NewRelic
1784
1976
  :type => Boolean,
1785
1977
  :allowed_from_server => false,
1786
1978
  :dynamic_name => true,
1787
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an AWS environment.'
1979
+ :description => 'If `true`, the agent automatically detects that it is running in an AWS environment.'
1788
1980
  },
1789
1981
  :'utilization.detect_azure' => {
1790
1982
  :default => true,
@@ -1792,7 +1984,7 @@ module NewRelic
1792
1984
  :type => Boolean,
1793
1985
  :allowed_from_server => false,
1794
1986
  :dynamic_name => true,
1795
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an Azure environment.'
1987
+ :description => 'If `true`, the agent automatically detects that it is running in an Azure environment.'
1796
1988
  },
1797
1989
  :'utilization.detect_gcp' => {
1798
1990
  :default => true,
@@ -1800,7 +1992,7 @@ module NewRelic
1800
1992
  :type => Boolean,
1801
1993
  :allowed_from_server => false,
1802
1994
  :dynamic_name => true,
1803
- :description => 'If <code>true</code>, the agent automatically detects that it is running in an Google Cloud Platform environment.'
1995
+ :description => 'If `true`, the agent automatically detects that it is running in an Google Cloud Platform environment.'
1804
1996
  },
1805
1997
  :'utilization.detect_pcf' => {
1806
1998
  :default => true,
@@ -1808,21 +2000,21 @@ module NewRelic
1808
2000
  :type => Boolean,
1809
2001
  :allowed_from_server => false,
1810
2002
  :dynamic_name => true,
1811
- :description => 'If <code>true</code>, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.'
2003
+ :description => 'If `true`, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.'
1812
2004
  },
1813
2005
  :'utilization.detect_docker' => {
1814
2006
  :default => true,
1815
2007
  :public => true,
1816
2008
  :type => Boolean,
1817
2009
  :allowed_from_server => false,
1818
- :description => 'If <code>true</code>, the agent automatically detects that it is running in Docker.'
2010
+ :description => 'If `true`, the agent automatically detects that it is running in Docker.'
1819
2011
  },
1820
2012
  :'utilization.detect_kubernetes' => {
1821
2013
  :default => true,
1822
2014
  :public => true,
1823
2015
  :type => Boolean,
1824
2016
  :allowed_from_server => false,
1825
- :description => 'If <code>true</code>, the agent automatically detects that it is running in Kubernetes.'
2017
+ :description => 'If `true`, the agent automatically detects that it is running in Kubernetes.'
1826
2018
  },
1827
2019
  :'utilization.billing_hostname' => {
1828
2020
  :default => nil,
@@ -1853,21 +2045,21 @@ module NewRelic
1853
2045
  :public => true,
1854
2046
  :type => Boolean,
1855
2047
  :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.'
2048
+ :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
2049
  },
1858
2050
  :'datastore_tracer.database_name_reporting.enabled' => {
1859
2051
  :default => true,
1860
2052
  :public => true,
1861
2053
  :type => Boolean,
1862
2054
  :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.'
2055
+ :description => 'If `false`, the agent will not add `database_name` parameter to transaction or slow sql traces.'
1864
2056
  },
1865
2057
  :'clear_transaction_state_after_fork' => {
1866
2058
  :default => false,
1867
2059
  :public => true,
1868
2060
  :type => Boolean,
1869
2061
  :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>.'
2062
+ :description => 'If `true`, the agent will clear `Tracer::State` in `Agent.drop_buffered_data`.'
1871
2063
  },
1872
2064
  :account_id => {
1873
2065
  :default => nil,
@@ -1889,8 +2081,8 @@ module NewRelic
1889
2081
  :default => false,
1890
2082
  :public => true,
1891
2083
  :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.'
2084
+ :allowed_from_server => true,
2085
+ :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
2086
  },
1895
2087
  :trusted_account_key => {
1896
2088
  :default => nil,
@@ -1919,7 +2111,7 @@ module NewRelic
1919
2111
  :public => true,
1920
2112
  :type => Boolean,
1921
2113
  :allowed_from_server => true,
1922
- :description => 'If <code>true</code>, enables span event sampling.'
2114
+ :description => 'If `true`, enables span event sampling.'
1923
2115
  },
1924
2116
  :'span_events.queue_size' => {
1925
2117
  :default => 10_000,