newrelic_rpm 9.9.0 → 9.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/.build_ignore +1 -0
  3. data/CHANGELOG.md +463 -1
  4. data/CONTRIBUTING.md +2 -2
  5. data/README.md +16 -17
  6. data/Rakefile +1 -1
  7. data/lib/boot/strap.rb +102 -0
  8. data/lib/new_relic/agent/agent.rb +6 -0
  9. data/lib/new_relic/agent/agent_helpers/connect.rb +3 -0
  10. data/lib/new_relic/agent/agent_helpers/harvest.rb +3 -0
  11. data/lib/new_relic/agent/agent_helpers/shutdown.rb +3 -0
  12. data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +1 -0
  13. data/lib/new_relic/agent/agent_helpers/startup.rb +7 -0
  14. data/lib/new_relic/agent/agent_logger.rb +1 -0
  15. data/lib/new_relic/agent/aws.rb +68 -0
  16. data/lib/new_relic/agent/configuration/default_source.rb +603 -105
  17. data/lib/new_relic/agent/configuration/environment_source.rb +5 -1
  18. data/lib/new_relic/agent/configuration/manager.rb +28 -2
  19. data/lib/new_relic/agent/configuration/yaml_source.rb +7 -2
  20. data/lib/new_relic/agent/database/obfuscation_helpers.rb +11 -11
  21. data/lib/new_relic/agent/database/obfuscator.rb +1 -0
  22. data/lib/new_relic/agent/database.rb +41 -1
  23. data/lib/new_relic/agent/database_adapter.rb +1 -1
  24. data/lib/new_relic/agent/datastores/redis.rb +1 -1
  25. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +1 -1
  26. data/lib/new_relic/agent/distributed_tracing.rb +4 -2
  27. data/lib/new_relic/agent/error_collector.rb +37 -10
  28. data/lib/new_relic/agent/external.rb +2 -0
  29. data/lib/new_relic/agent/health_check.rb +136 -0
  30. data/lib/new_relic/agent/http_clients/uri_util.rb +1 -1
  31. data/lib/new_relic/agent/instrumentation/action_dispatch.rb +1 -1
  32. data/lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb +1 -1
  33. data/lib/new_relic/agent/instrumentation/action_mailbox.rb +1 -1
  34. data/lib/new_relic/agent/instrumentation/action_mailer.rb +1 -1
  35. data/lib/new_relic/agent/instrumentation/active_job.rb +1 -1
  36. data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +6 -2
  37. data/lib/new_relic/agent/instrumentation/active_merchant.rb +0 -13
  38. data/lib/new_relic/agent/instrumentation/active_record.rb +7 -12
  39. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +7 -3
  40. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +11 -9
  41. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +2 -2
  42. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +9 -16
  43. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger.rb +0 -2
  44. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +0 -2
  45. data/lib/new_relic/agent/instrumentation/async_http.rb +2 -3
  46. data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/chain.rb +21 -0
  47. data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/instrumentation.rb +66 -0
  48. data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/prepend.rb +15 -0
  49. data/lib/new_relic/agent/instrumentation/aws_sdk_firehose.rb +22 -0
  50. data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/chain.rb +21 -0
  51. data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/instrumentation.rb +91 -0
  52. data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/prepend.rb +15 -0
  53. data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis.rb +22 -0
  54. data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/chain.rb +33 -0
  55. data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/instrumentation.rb +93 -0
  56. data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/prepend.rb +23 -0
  57. data/lib/new_relic/agent/instrumentation/aws_sdk_lambda.rb +23 -0
  58. data/lib/new_relic/agent/instrumentation/aws_sqs/chain.rb +37 -0
  59. data/lib/new_relic/agent/instrumentation/aws_sqs/instrumentation.rb +67 -0
  60. data/lib/new_relic/agent/instrumentation/aws_sqs/prepend.rb +21 -0
  61. data/lib/new_relic/agent/instrumentation/aws_sqs.rb +23 -0
  62. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +14 -0
  63. data/lib/new_relic/agent/instrumentation/bunny.rb +3 -4
  64. data/lib/new_relic/agent/instrumentation/concurrent_ruby.rb +1 -3
  65. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +4 -0
  66. data/lib/new_relic/agent/instrumentation/curb.rb +4 -5
  67. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +0 -23
  68. data/lib/new_relic/agent/instrumentation/dynamodb/chain.rb +27 -0
  69. data/lib/new_relic/agent/instrumentation/dynamodb/instrumentation.rb +64 -0
  70. data/lib/new_relic/agent/instrumentation/dynamodb/prepend.rb +19 -0
  71. data/lib/new_relic/agent/instrumentation/dynamodb.rb +23 -0
  72. data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +1 -2
  73. data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +53 -7
  74. data/lib/new_relic/agent/instrumentation/elasticsearch.rb +1 -3
  75. data/lib/new_relic/agent/instrumentation/ethon.rb +1 -5
  76. data/lib/new_relic/agent/instrumentation/excon.rb +1 -17
  77. data/lib/new_relic/agent/instrumentation/fiber/chain.rb +1 -1
  78. data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +1 -1
  79. data/lib/new_relic/agent/instrumentation/fiber.rb +0 -2
  80. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +0 -3
  81. data/lib/new_relic/agent/instrumentation/grape.rb +1 -1
  82. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +0 -1
  83. data/lib/new_relic/agent/instrumentation/httpclient.rb +1 -5
  84. data/lib/new_relic/agent/instrumentation/httprb.rb +0 -1
  85. data/lib/new_relic/agent/instrumentation/httpx/instrumentation.rb +1 -1
  86. data/lib/new_relic/agent/instrumentation/httpx.rb +1 -5
  87. data/lib/new_relic/agent/instrumentation/logger.rb +1 -3
  88. data/lib/new_relic/agent/instrumentation/logstasher/chain.rb +21 -0
  89. data/lib/new_relic/agent/instrumentation/logstasher/instrumentation.rb +24 -0
  90. data/lib/new_relic/agent/instrumentation/logstasher/prepend.rb +13 -0
  91. data/lib/new_relic/agent/instrumentation/logstasher.rb +25 -0
  92. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +1 -1
  93. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +2 -2
  94. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +1 -1
  95. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +1 -1
  96. data/lib/new_relic/agent/instrumentation/memcache.rb +0 -1
  97. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +1 -1
  98. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +3 -3
  99. data/lib/new_relic/agent/instrumentation/net_http.rb +2 -1
  100. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +0 -2
  101. data/lib/new_relic/agent/instrumentation/opensearch/chain.rb +21 -0
  102. data/lib/new_relic/agent/instrumentation/opensearch/instrumentation.rb +66 -0
  103. data/lib/{tasks/instrumentation_generator/templates/instrumentation.tt → new_relic/agent/instrumentation/opensearch/prepend.rb} +4 -4
  104. data/lib/new_relic/agent/instrumentation/opensearch.rb +23 -0
  105. data/lib/new_relic/agent/instrumentation/padrino.rb +3 -3
  106. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +3 -0
  107. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +9 -5
  108. data/lib/new_relic/agent/instrumentation/rake.rb +1 -2
  109. data/lib/new_relic/agent/instrumentation/rdkafka/chain.rb +72 -0
  110. data/lib/new_relic/agent/instrumentation/rdkafka/instrumentation.rb +70 -0
  111. data/lib/new_relic/agent/instrumentation/rdkafka/prepend.rb +67 -0
  112. data/lib/new_relic/agent/instrumentation/rdkafka.rb +25 -0
  113. data/lib/new_relic/agent/instrumentation/redis/cluster_middleware.rb +26 -0
  114. data/lib/new_relic/agent/instrumentation/redis/constants.rb +2 -2
  115. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +14 -11
  116. data/lib/new_relic/agent/instrumentation/redis/middleware.rb +3 -0
  117. data/lib/new_relic/agent/instrumentation/redis.rb +11 -5
  118. data/lib/new_relic/agent/instrumentation/resque.rb +8 -6
  119. data/lib/new_relic/agent/instrumentation/roda.rb +5 -5
  120. data/lib/new_relic/agent/instrumentation/ruby_kafka/chain.rb +55 -0
  121. data/lib/new_relic/agent/instrumentation/ruby_kafka/instrumentation.rb +67 -0
  122. data/lib/new_relic/agent/instrumentation/ruby_kafka/prepend.rb +60 -0
  123. data/lib/new_relic/agent/instrumentation/ruby_kafka.rb +25 -0
  124. data/lib/new_relic/agent/instrumentation/ruby_openai.rb +2 -2
  125. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delay_extensions.rb +24 -0
  126. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +2 -2
  127. data/lib/new_relic/agent/instrumentation/sidekiq.rb +9 -15
  128. data/lib/new_relic/agent/instrumentation/sinatra.rb +3 -19
  129. data/lib/new_relic/agent/instrumentation/stripe.rb +1 -1
  130. data/lib/new_relic/agent/instrumentation/stripe_subscriber.rb +22 -1
  131. data/lib/new_relic/agent/instrumentation/thread.rb +0 -2
  132. data/lib/new_relic/agent/instrumentation/tilt.rb +0 -4
  133. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +2 -2
  134. data/lib/new_relic/agent/instrumentation/typhoeus.rb +0 -1
  135. data/lib/new_relic/agent/instrumentation/view_component/instrumentation.rb +11 -5
  136. data/lib/new_relic/agent/instrumentation/view_component.rb +0 -2
  137. data/lib/new_relic/agent/javascript_instrumentor.rb +2 -3
  138. data/lib/new_relic/agent/llm/chat_completion_summary.rb +1 -1
  139. data/lib/new_relic/agent/llm/embedding.rb +1 -1
  140. data/lib/new_relic/agent/local_log_decorator.rb +20 -3
  141. data/lib/new_relic/agent/log_event_aggregator.rb +119 -28
  142. data/lib/new_relic/agent/logging.rb +1 -1
  143. data/lib/new_relic/agent/messaging.rb +16 -5
  144. data/lib/new_relic/agent/method_tracer.rb +3 -0
  145. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +1 -1
  146. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +1 -1
  147. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +2 -2
  148. data/lib/new_relic/agent/new_relic_service.rb +8 -2
  149. data/lib/new_relic/agent/opentelemetry/context/propagation/trace_propagator.rb +66 -0
  150. data/lib/new_relic/agent/opentelemetry/context/propagation.rb +15 -0
  151. data/lib/{tasks/instrumentation_generator/templates/Envfile.tt → new_relic/agent/opentelemetry/context.rb} +9 -5
  152. data/lib/new_relic/agent/opentelemetry/trace/span.rb +31 -0
  153. data/lib/new_relic/agent/opentelemetry/trace/tracer.rb +129 -0
  154. data/lib/new_relic/agent/opentelemetry/trace/tracer_provider.rb +18 -0
  155. data/lib/new_relic/agent/opentelemetry/trace.rb +15 -0
  156. data/lib/new_relic/agent/opentelemetry/transaction_patch.rb +69 -0
  157. data/lib/new_relic/agent/opentelemetry_bridge.rb +32 -0
  158. data/lib/new_relic/agent/parameter_filtering.rb +1 -1
  159. data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -1
  160. data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
  161. data/lib/new_relic/agent/serverless_handler.rb +247 -12
  162. data/lib/new_relic/agent/serverless_handler_event_sources.json +155 -0
  163. data/lib/new_relic/agent/serverless_handler_event_sources.rb +49 -0
  164. data/lib/new_relic/agent/span_event_primitive.rb +16 -11
  165. data/lib/new_relic/agent/system_info.rb +14 -0
  166. data/lib/new_relic/agent/threading/backtrace_node.rb +10 -1
  167. data/lib/new_relic/agent/tracer.rb +1 -1
  168. data/lib/new_relic/agent/transaction/abstract_segment.rb +2 -1
  169. data/lib/new_relic/agent/transaction/datastore_segment.rb +1 -1
  170. data/lib/new_relic/agent/transaction/distributed_tracer.rb +3 -3
  171. data/lib/new_relic/agent/transaction/external_request_segment.rb +0 -10
  172. data/lib/new_relic/agent/transaction/message_broker_segment.rb +4 -1
  173. data/lib/new_relic/agent/transaction/request_attributes.rb +14 -7
  174. data/lib/new_relic/agent/transaction/trace_context.rb +34 -5
  175. data/lib/new_relic/agent/transaction/tracing.rb +3 -3
  176. data/lib/new_relic/agent/transaction.rb +4 -7
  177. data/lib/new_relic/agent/transaction_time_aggregator.rb +1 -1
  178. data/lib/new_relic/agent/utilization/ecs.rb +22 -0
  179. data/lib/new_relic/agent/utilization/ecs_v4.rb +22 -0
  180. data/lib/new_relic/agent/utilization_data.rb +40 -5
  181. data/lib/new_relic/agent/vm/c_ruby_vm.rb +3 -3
  182. data/lib/new_relic/agent.rb +124 -2
  183. data/lib/new_relic/constants.rb +1 -0
  184. data/lib/new_relic/control/frameworks/grape.rb +14 -0
  185. data/lib/new_relic/control/frameworks/padrino.rb +14 -0
  186. data/lib/new_relic/control/frameworks/rails4.rb +1 -3
  187. data/lib/new_relic/control/instance_methods.rb +6 -0
  188. data/lib/new_relic/control/instrumentation.rb +1 -1
  189. data/lib/new_relic/control/private_instance_methods.rb +4 -0
  190. data/lib/new_relic/control/security_interface.rb +57 -0
  191. data/lib/new_relic/control.rb +1 -1
  192. data/lib/new_relic/dependency_detection.rb +11 -14
  193. data/lib/new_relic/environment_report.rb +2 -2
  194. data/lib/new_relic/helper.rb +22 -0
  195. data/lib/new_relic/language_support.rb +3 -1
  196. data/lib/new_relic/local_environment.rb +1 -4
  197. data/lib/new_relic/rack/browser_monitoring.rb +20 -8
  198. data/lib/new_relic/version.rb +1 -1
  199. data/lib/sequel/extensions/new_relic_instrumentation.rb +3 -2
  200. data/lib/tasks/config.rake +7 -3
  201. data/lib/tasks/gha.rake +31 -0
  202. data/lib/tasks/helpers/config.html.erb +3 -2
  203. data/lib/tasks/helpers/format.rb +1 -1
  204. data/lib/tasks/helpers/newrelicyml.rb +80 -13
  205. data/newrelic.yml +425 -162
  206. data/newrelic_rpm.gemspec +3 -1
  207. data/test/agent_helper.rb +24 -2
  208. metadata +91 -22
  209. data/lib/tasks/instrumentation_generator/README.md +0 -63
  210. data/lib/tasks/instrumentation_generator/TODO.md +0 -33
  211. data/lib/tasks/instrumentation_generator/instrumentation.thor +0 -121
  212. data/lib/tasks/instrumentation_generator/templates/chain.tt +0 -21
  213. data/lib/tasks/instrumentation_generator/templates/chain_method.tt +0 -7
  214. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +0 -29
  215. data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +0 -3
  216. data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +0 -19
  217. data/lib/tasks/instrumentation_generator/templates/prepend.tt +0 -13
  218. data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +0 -3
  219. data/lib/tasks/instrumentation_generator/templates/test.tt +0 -15
@@ -35,6 +35,15 @@ module NewRelic
35
35
  end
36
36
 
37
37
  class DefaultSource
38
+ BOOLEAN_MAP = {
39
+ 'true' => true,
40
+ 'yes' => true,
41
+ 'on' => true,
42
+ 'false' => false,
43
+ 'no' => false,
44
+ 'off' => false
45
+ }.freeze
46
+
38
47
  attr_reader :defaults
39
48
 
40
49
  extend Forwardable
@@ -64,6 +73,12 @@ module NewRelic
64
73
  value_from_defaults(key, :allowlist)
65
74
  end
66
75
 
76
+ def self.boolean_for(key, value)
77
+ string_value = (value.respond_to?(:call) ? value.call : value).to_s
78
+
79
+ BOOLEAN_MAP.fetch(string_value, nil)
80
+ end
81
+
67
82
  def self.default_for(key)
68
83
  value_from_defaults(key, :default)
69
84
  end
@@ -72,7 +87,7 @@ module NewRelic
72
87
  value_from_defaults(key, :transform)
73
88
  end
74
89
 
75
- def self.config_search_paths # rubocop:disable Metrics/AbcSize
90
+ def self.config_search_paths
76
91
  proc {
77
92
  yaml = 'newrelic.yml'
78
93
  config_yaml = File.join('config', yaml)
@@ -124,14 +139,16 @@ module NewRelic
124
139
  case Rails::VERSION::MAJOR
125
140
  when 3
126
141
  :rails3
127
- when 4..7
142
+ when 4..8
128
143
  :rails_notifications
129
144
  else
130
145
  ::NewRelic::Agent.logger.warn("Detected untested Rails version #{Rails::VERSION::STRING}")
131
146
  :rails_notifications
132
147
  end
148
+ when defined?(::Padrino) && defined?(::Padrino::PathRouter::Router) then :padrino
133
149
  when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra
134
150
  when defined?(::Roda) then :roda
151
+ when defined?(::Grape) then :grape
135
152
  when defined?(::NewRelic::IA) then :external
136
153
  else :ruby
137
154
  end
@@ -370,9 +387,9 @@ module NewRelic
370
387
  :allowed_from_server => false,
371
388
  :description => <<~DESCRIPTION
372
389
  An array of ActiveSupport custom event names to subscribe to and instrument. For example,
373
- - one.custom.event
374
- - another.event
375
- - a.third.event
390
+ \t\t- one.custom.event
391
+ \t\t- another.event
392
+ \t\t- a.third.event
376
393
  DESCRIPTION
377
394
  },
378
395
  :'ai_monitoring.enabled' => {
@@ -390,9 +407,11 @@ module NewRelic
390
407
  :description => <<~DESCRIPTION
391
408
  If `false`, LLM instrumentation (OpenAI only for now) will not capture input and output content on specific LLM events.
392
409
 
393
- The excluded attributes include:
394
- * `content` from LlmChatCompletionMessage events
395
- * `input` from LlmEmbedding events
410
+ \tThe excluded attributes include:
411
+ \t- `content` from LlmChatCompletionMessage events
412
+ \t- `input` from LlmEmbedding events
413
+
414
+ \tThis is an optional security setting to prevent recording sensitive data sent to and received from your LLMs.
396
415
  DESCRIPTION
397
416
  },
398
417
  # this is only set via server side config
@@ -408,6 +427,7 @@ module NewRelic
408
427
  :public => true,
409
428
  :type => String,
410
429
  :allowed_from_server => false,
430
+ :exclude_from_reported_settings => true,
411
431
  :description => 'Your New Relic <InlinePopover type="userKey" />. Required when using the New Relic REST API v2 to record deployments using the `newrelic deployments` command.'
412
432
  },
413
433
  :backport_fast_active_record_connection_lookup => {
@@ -423,7 +443,7 @@ module NewRelic
423
443
  :public => true,
424
444
  :type => String,
425
445
  :allowed_from_server => false,
426
- :description => "Manual override for the path to your local CA bundle. This CA bundle will be used to validate the SSL certificate presented by New Relic's data collection service."
446
+ :description => "Manual override for the path to your local CA bundle. This CA bundle validates the SSL certificate presented by New Relic's data collection service."
427
447
  },
428
448
  :capture_memcache_keys => {
429
449
  :default => false,
@@ -440,9 +460,9 @@ module NewRelic
440
460
  :description => <<~DESCRIPTION
441
461
  When `true`, the agent captures HTTP request parameters and attaches them to transaction traces, traced errors, and [`TransactionError` events](/attribute-dictionary?attribute_name=&events_tids%5B%5D=8241).
442
462
 
443
- <Callout variant="caution">
444
- When using the `capture_params` setting, the Ruby agent will not attempt to filter secret information. `Recommendation:` To filter secret information from request parameters, use the [`attributes.include` setting](/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby) instead. For more information, see the <a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">Ruby attribute examples</a>.
445
- </Callout>
463
+ <Callout variant="caution">
464
+ \tWhen using the `capture_params` setting, the Ruby agent will not attempt to filter secret information. `Recommendation:` To filter secret information from request parameters, use the [`attributes.include` setting](/docs/agents/ruby-agent/attributes/enable-disable-attributes-ruby) instead. For more information, see the <a href="/docs/agents/ruby-agent/attributes/ruby-attribute-examples#ex_req_params">Ruby attribute examples</a>.
465
+ </Callout>
446
466
  DESCRIPTION
447
467
  },
448
468
  :'clear_transaction_state_after_fork' => {
@@ -452,6 +472,14 @@ module NewRelic
452
472
  :allowed_from_server => false,
453
473
  :description => 'If `true`, the agent will clear `Tracer::State` in `Agent.drop_buffered_data`.'
454
474
  },
475
+ :'cloud.aws.account_id' => {
476
+ :default => nil,
477
+ :public => true,
478
+ :type => String,
479
+ :allow_nil => true,
480
+ :allowed_from_server => false,
481
+ :description => 'The AWS account ID for the AWS account associated with this app'
482
+ },
455
483
  :config_path => {
456
484
  :default => DefaultSource.config_path,
457
485
  :public => true,
@@ -459,10 +487,10 @@ module NewRelic
459
487
  :allowed_from_server => false,
460
488
  :description => <<~DESC
461
489
  Path to `newrelic.yml`. If undefined, the agent checks the following directories (in order):
462
- * `config/newrelic.yml`
463
- * `newrelic.yml`
464
- * `$HOME/.newrelic/newrelic.yml`
465
- * `$HOME/newrelic.yml`
490
+ \t- `config/newrelic.yml`
491
+ \t- `newrelic.yml`
492
+ \t- `$HOME/.newrelic/newrelic.yml`
493
+ \t- `$HOME/newrelic.yml`
466
494
  DESC
467
495
  },
468
496
  :'exclude_newrelic_header' => {
@@ -477,12 +505,14 @@ module NewRelic
477
505
  :public => true,
478
506
  :type => Boolean,
479
507
  :allowed_from_server => false,
480
- :description => 'Forces the exit handler that sends all cached data to collector ' \
481
- 'before shutting down to be installed regardless of detecting scenarios where it generally should not be. ' \
482
- 'Known use-case for this option is where Sinatra is running as an embedded service within another framework ' \
483
- 'and the agent is detecting the Sinatra app and skipping the `at_exit` handler as a result. Sinatra classically ' \
484
- 'runs the entire application in an `at_exit` block and would otherwise misbehave if the agent\'s `at_exit` handler ' \
485
- 'was also installed in those circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting.'
508
+ :description => <<~DESC
509
+ The exit handler that sends all cached data to the collector before shutting down is forcibly installed. \
510
+ This is true even when it detects scenarios where it generally should not be. The known use case for this \
511
+ option is when Sinatra runs as an embedded service within another framework. The agent detects the Sinatra \
512
+ app and skips the `at_exit` handler as a result. Sinatra classically runs the entire application in an \
513
+ `at_exit` block and would otherwise misbehave if the agent's `at_exit` handler was also installed in those \
514
+ circumstances. Note: `send_data_on_exit` should also be set to `true` in tandem with this setting.
515
+ DESC
486
516
  },
487
517
  :high_security => {
488
518
  :default => false,
@@ -616,7 +646,7 @@ module NewRelic
616
646
  :public => true,
617
647
  :type => Boolean,
618
648
  :allowed_from_server => true,
619
- :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.'
649
+ :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) isn't set separately."
620
650
  },
621
651
  :'transaction_tracer.explain_threshold' => {
622
652
  :default => 0.5,
@@ -644,13 +674,13 @@ module NewRelic
644
674
  :public => true,
645
675
  :type => String,
646
676
  :allowed_from_server => true,
647
- :description => 'Obfuscation level for SQL queries reported in transaction trace nodes.
648
-
649
- By default, this is set to `obfuscated`, which strips out the numeric and string literals.
650
-
651
- - If you do not want the agent to capture query information, set this to `none`.
652
- - If you want the agent to capture all query information in its original form, set this to `raw`.
653
- - When you enable [high security mode](/docs/agents/manage-apm-agents/configuration/high-security-mode), this is automatically set to `obfuscated`.'
677
+ :description => <<~DESC
678
+ Obfuscation level for SQL queries reported in transaction trace nodes.
679
+ \tBy default, this is set to `obfuscated`, which strips out the numeric and string literals.
680
+ \t- If you do not want the agent to capture query information, set this to `none`.
681
+ \t- If you want the agent to capture all query information in its original form, set this to `raw`.
682
+ \t- When you enable [high security mode](/docs/agents/manage-apm-agents/configuration/high-security-mode), this is automatically set to `obfuscated`.
683
+ DESC
654
684
  },
655
685
 
656
686
  :'transaction_tracer.stack_trace_threshold' => {
@@ -668,20 +698,6 @@ module NewRelic
668
698
  :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`.'
669
699
  },
670
700
  # Error collector
671
- :'error_collector.ignore_classes' => {
672
- :default => ['ActionController::RoutingError', 'Sinatra::NotFound'],
673
- :public => true,
674
- :type => Array,
675
- :allowed_from_server => true,
676
- :dynamic_name => true,
677
- :description => <<~DESCRIPTION
678
- A list of error classes that the agent should ignore.
679
-
680
- <Callout variant="caution">
681
- This option can't be set via environment variable.
682
- </Callout>
683
- DESCRIPTION
684
- },
685
701
  :'error_collector.capture_events' => {
686
702
  :default => value_of(:'error_collector.enabled'),
687
703
  :documentation_default => true,
@@ -706,10 +722,9 @@ module NewRelic
706
722
  :dynamic_name => true,
707
723
  :description => <<~DESCRIPTION
708
724
  A list of error classes that the agent should treat as expected.
709
-
710
- <Callout variant="caution">
711
- This option can't be set via environment variable.
712
- </Callout>
725
+ \t<Callout variant="caution">
726
+ \t\tThis option can't be set via environment variable.
727
+ \t</Callout>
713
728
  DESCRIPTION
714
729
  },
715
730
  :'error_collector.expected_messages' => {
@@ -720,10 +735,9 @@ module NewRelic
720
735
  :dynamic_name => true,
721
736
  :description => <<~DESCRIPTION
722
737
  A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be treated as expected.
723
-
724
- <Callout variant="caution">
725
- This option can't be set via environment variable.
726
- </Callout>
738
+ \t<Callout variant="caution">
739
+ \t\tThis option can't be set via environment variable.
740
+ \t</Callout>
727
741
  DESCRIPTION
728
742
  },
729
743
  :'error_collector.expected_status_codes' => {
@@ -734,19 +748,35 @@ module NewRelic
734
748
  :dynamic_name => true,
735
749
  :description => 'A comma separated list of status codes, possibly including ranges. Errors associated with these status codes, where applicable, will be treated as expected.'
736
750
  },
737
-
751
+ :'error_collector.ignore_classes' => {
752
+ :default => ['ActionController::RoutingError', 'Sinatra::NotFound'],
753
+ :public => true,
754
+ :type => Array,
755
+ :allowed_from_server => true,
756
+ :dynamic_name => true,
757
+ :description => <<~DESCRIPTION
758
+ A list of error classes that the agent should ignore.
759
+ \t<Callout variant="caution">
760
+ \t\tThis option can't be set via environment variable.
761
+ \t</Callout>
762
+ DESCRIPTION
763
+ },
738
764
  :'error_collector.ignore_messages' => {
739
- :default => {},
765
+ # we have to keep the hash rocket in the actual default so the
766
+ # class name key is treated like a string rather than a symbol.
767
+ # however, this isn't valid yaml, so document something that is
768
+ # valid yaml
769
+ :default => {'ThreadError' => ['queue empty']},
770
+ :documentation_default => {'ThreadError': ['queue empty']},
740
771
  :public => true,
741
772
  :type => Hash,
742
773
  :allowed_from_server => true,
743
774
  :dynamic_name => true,
744
775
  :description => <<~DESCRIPTION
745
776
  A map of error classes to a list of messages. When an error of one of the classes specified here occurs, if its error message contains one of the strings corresponding to it here, that error will be ignored.
746
-
747
- <Callout variant="caution">
748
- This option can't be set via environment variable.
749
- </Callout>
777
+ \t<Callout variant="caution">
778
+ \t\tThis option can't be set via environment variable.
779
+ \t</Callout>
750
780
  DESCRIPTION
751
781
  },
752
782
  :'error_collector.ignore_status_codes' => {
@@ -780,6 +810,15 @@ module NewRelic
780
810
  :allowed_from_server => true,
781
811
  :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).'
782
812
  },
813
+ # CSP nonce
814
+ :'browser_monitoring.content_security_policy_nonce' => {
815
+ :default => value_of(:'rum.enabled'),
816
+ :documentation_default => true,
817
+ :public => true,
818
+ :type => Boolean,
819
+ :allowed_from_server => false,
820
+ :description => 'If `true`, enables auto-injection of [Content Security Policy Nonce](https://content-security-policy.com/nonce/) in browser monitoring scripts. For now, auto-injection only works with Rails 5.2+.'
821
+ },
783
822
  # Transaction events
784
823
  :'transaction_events.enabled' => {
785
824
  :default => true,
@@ -819,19 +858,19 @@ module NewRelic
819
858
  :description => <<~DESCRIPTION
820
859
  Sets the minimum level a log event must have to be forwarded to New Relic.
821
860
 
822
- This is based on the integer values of Ruby's `Logger::Severity` constants: https://github.com/ruby/ruby/blob/master/lib/logger/severity.rb
861
+ \tThis is based on the integer values of [Ruby's `Logger::Severity` constants](https://github.com/ruby/logger/blob/113b82a06b3076b93a71cd467e1605b23afb3088/lib/logger/severity.rb).
823
862
 
824
- The intention is to forward logs with the level given to the configuration, as well as any logs with a higher level of severity.
863
+ \tThe intention is to forward logs with the level given to the configuration, as well as any logs with a higher level of severity.
825
864
 
826
- For example, setting this value to "debug" will forward all log events to New Relic. Setting this value to "error" will only forward log events with the levels "error", "fatal", and "unknown".
865
+ \tFor example, setting this value to "debug" will forward all log events to New Relic. Setting this value to "error" will only forward log events with the levels "error", "fatal", and "unknown".
827
866
 
828
- Valid values (ordered lowest to highest):
829
- * "debug"
830
- * "info"
831
- * "warn"
832
- * "error"
833
- * "fatal"
834
- * "unknown"
867
+ \tValid values (ordered lowest to highest):
868
+ \t- "debug"
869
+ \t- "info"
870
+ \t- "warn"
871
+ \t- "error"
872
+ \t- "fatal"
873
+ \t- "unknown"
835
874
  DESCRIPTION
836
875
  },
837
876
  :'application_logging.forwarding.custom_attributes' => {
@@ -842,6 +881,21 @@ module NewRelic
842
881
  :allowed_from_server => false,
843
882
  :description => 'A hash with key/value pairs to add as custom attributes to all log events forwarded to New Relic. If sending using an environment variable, the value must be formatted like: "key1=value1,key2=value2"'
844
883
  },
884
+ :'application_logging.forwarding.labels.enabled' => {
885
+ :default => false,
886
+ :public => true,
887
+ :type => Boolean,
888
+ :allowed_from_server => false,
889
+ :description => 'If `true`, the agent attaches [labels](https://docs.newrelic.com/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration/#labels) to log records.'
890
+ },
891
+ :'application_logging.forwarding.labels.exclude' => {
892
+ :default => [],
893
+ :public => true,
894
+ :type => Array,
895
+ :transform => DefaultSource.method(:convert_to_list),
896
+ :allowed_from_server => false,
897
+ :description => 'A case-insensitive array or comma-delimited string containing the labels to exclude from log records.'
898
+ },
845
899
  :'application_logging.forwarding.max_samples_stored' => {
846
900
  :default => 10000,
847
901
  :public => true,
@@ -1070,6 +1124,7 @@ module NewRelic
1070
1124
  Rails::Command::InitializersCommand
1071
1125
  Rails::Command::NotesCommand
1072
1126
  Rails::Command::RoutesCommand
1127
+ Rails::Command::RunnerCommand
1073
1128
  Rails::Command::SecretsCommand
1074
1129
  Rails::Console
1075
1130
  Rails::DBConsole].join(','),
@@ -1098,7 +1153,7 @@ module NewRelic
1098
1153
  :public => true,
1099
1154
  :type => Boolean,
1100
1155
  :allowed_from_server => true,
1101
- :description => "If `true`, the agent will report source code level metrics for traced methods.\nsee: " \
1156
+ :description => "If `true`, the agent will report source code level metrics for traced methods.\n\tSee: " \
1102
1157
  'https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration/'
1103
1158
  },
1104
1159
  # Cross application tracer
@@ -1110,7 +1165,7 @@ module NewRelic
1110
1165
  :deprecated => true,
1111
1166
  :description => deprecated_description(
1112
1167
  :'distributed_tracing.enabled',
1113
- 'If `true`, enables [cross-application tracing](/docs/agents/ruby-agent/features/cross-application-tracing-ruby/) when `distributed_tracing.enabled` is set to `false`.'
1168
+ ' If `true`, enables [cross-application tracing](/docs/agents/ruby-agent/features/cross-application-tracing-ruby/) when `distributed_tracing.enabled` is set to `false`.'
1114
1169
  )
1115
1170
  },
1116
1171
  # Custom attributes
@@ -1121,6 +1176,56 @@ module NewRelic
1121
1176
  :allowed_from_server => false,
1122
1177
  :description => 'If `false`, custom attributes will not be sent on events.'
1123
1178
  },
1179
+ :automatic_custom_instrumentation_method_list => {
1180
+ :default => NewRelic::EMPTY_ARRAY,
1181
+ :public => true,
1182
+ :type => Array,
1183
+ :allowed_from_server => false,
1184
+ :transform => proc { |arr| NewRelic::Agent.add_automatic_method_tracers(arr) },
1185
+ :description => <<~DESCRIPTION
1186
+ An array of `CLASS#METHOD` (for instance methods) and/or `CLASS.METHOD` (for class methods) strings representing Ruby methods that the agent can automatically add custom instrumentation to. This doesn't require any modifications of the source code that defines the methods.
1187
+
1188
+ \tUse fully qualified class names (using the `::` delimiter) that include any module or class namespacing.
1189
+
1190
+ \tHere is some Ruby source code that defines a `render_png` instance method for an `Image` class and a `notify` class method for a `User` class, both within a `MyCompany` module namespace:
1191
+
1192
+ \t```rb
1193
+ \t\tmodule MyCompany
1194
+ \t\t\tclass Image
1195
+ \t\t\t\tdef render_png
1196
+ \t\t\t\t\t# code to render a PNG
1197
+ \t\t\t\tend
1198
+ \t\t\tend
1199
+
1200
+ \t\t\tclass User
1201
+ \t\t\t\tdef self.notify
1202
+ \t\t\t\t\t# code to notify users
1203
+ \t\t\t\tend
1204
+ \t\t\tend
1205
+ \t\tend
1206
+ \t```
1207
+
1208
+ \tGiven that source code, the `newrelic.yml` config file might request instrumentation for both of these methods like so:
1209
+
1210
+ \t```yaml
1211
+ \t\tautomatic_custom_instrumentation_method_list:
1212
+ \t\t\t- MyCompany::Image#render_png
1213
+ \t\t\t- MyCompany::User.notify
1214
+ \t```
1215
+
1216
+ \tThat configuration example uses YAML array syntax to specify both methods. Alternatively, you can use a comma-delimited string:
1217
+
1218
+ \t```yaml
1219
+ \t\tautomatic_custom_instrumentation_method_list: 'MyCompany::Image#render_png, MyCompany::User.notify'
1220
+ \t```
1221
+
1222
+ \tWhitespace around the comma(s) in the list is optional. When configuring the agent with a list of methods via the `NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LIST` environment variable, use this comma-delimited string format:
1223
+
1224
+ \t```sh
1225
+ \t\texport NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LIST='MyCompany::Image#render_png, MyCompany::User.notify'
1226
+ \t```
1227
+ DESCRIPTION
1228
+ },
1124
1229
  # Custom events
1125
1230
  :'custom_insights_events.enabled' => {
1126
1231
  :default => true,
@@ -1134,8 +1239,13 @@ module NewRelic
1134
1239
  :public => true,
1135
1240
  :type => Integer,
1136
1241
  :allowed_from_server => true,
1137
- :description => 'Specify a maximum number of custom events to buffer in memory at a time.',
1138
- :dynamic_name => true
1242
+ :dynamic_name => true,
1243
+ # Keep the extra two-space indent before the second bullet to appease translation tool
1244
+ :description => <<~DESC
1245
+ - Specify a maximum number of custom events to buffer in memory at a time.
1246
+ - When configuring the agent for [AI monitoring](/docs/ai-monitoring/intro-to-ai-monitoring), \
1247
+ set to max value `100000`. This ensures the agent captures the maximum amount of LLM events.
1248
+ DESC
1139
1249
  },
1140
1250
  # Datastore tracer
1141
1251
  :'datastore_tracer.database_name_reporting.enabled' => {
@@ -1200,6 +1310,7 @@ module NewRelic
1200
1310
  :default => false,
1201
1311
  :public => true,
1202
1312
  :type => Boolean,
1313
+ :aliases => %i[disable_active_job],
1203
1314
  :allowed_from_server => false,
1204
1315
  :description => 'If `true`, disables Active Job instrumentation.'
1205
1316
  },
@@ -1274,9 +1385,9 @@ module NewRelic
1274
1385
  :description => <<~DESCRIPTION
1275
1386
  If `true`, the agent won't wrap third-party middlewares in instrumentation (regardless of whether they are installed via `Rack::Builder` or Rails).
1276
1387
 
1277
- <Callout variant="important">
1278
- When middleware instrumentation is disabled, if an application is using middleware that could alter the response code, the HTTP status code reported on the transaction may not reflect the altered value.
1279
- </Callout>
1388
+ <Callout variant="important">
1389
+ When middleware instrumentation is disabled, if an application is using middleware that could alter the response code, the HTTP status code reported on the transaction may not reflect the altered value.
1390
+ </Callout>
1280
1391
  DESCRIPTION
1281
1392
  },
1282
1393
  :disable_samplers => {
@@ -1315,20 +1426,18 @@ module NewRelic
1315
1426
  :description => <<~DESCRIPTION
1316
1427
  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).
1317
1428
 
1318
- <Callout variant="important">
1319
- Cross application tracing is deprecated in favor of [distributed tracing](/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing). Distributed tracing is on by default for Ruby agent versions 8.0.0 and above. Middlewares are not required to support distributed tracing.
1320
-
1321
- To continue using cross application tracing, update the following options in your `newrelic.yml` configuration file:
1429
+ \t<Callout variant="important">
1430
+ \t\tCross application tracing is deprecated in favor of [distributed tracing](/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing). Distributed tracing is on by default for Ruby agent versions 8.0.0 and above. Middlewares are not required to support distributed tracing.
1322
1431
 
1323
- ```yaml
1324
- # newrelic.yml
1432
+ \t\tTo continue using cross application tracing, update the following options in your `newrelic.yml` configuration file:
1325
1433
 
1326
- cross_application_tracer:
1327
- enabled: true
1328
- distributed_tracing:
1329
- enabled: false
1330
- ```
1331
- </Callout>
1434
+ \t\t```yaml
1435
+ \t\t\tcross_application_tracer:
1436
+ \t\t\t\tenabled: true
1437
+ \t\t\tdistributed_tracing:
1438
+ \t\t\t\tenabled: false
1439
+ \t\t```
1440
+ \t</Callout>
1332
1441
  DESCRIPTION
1333
1442
  },
1334
1443
  :disable_view_instrumentation => {
@@ -1354,7 +1463,28 @@ module NewRelic
1354
1463
  :allowed_from_server => true,
1355
1464
  :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.'
1356
1465
  },
1466
+ :'distributed_tracing.sampler.remote_parent_sampled' => {
1467
+ :default => 'default',
1468
+ :public => true,
1469
+ :type => String,
1470
+ :allowed_from_server => true,
1471
+ :description => 'This setting controls the behavior of transaction sampling when a remote parent is sampled and the trace flag is set in the traceparent. Available values are `default`, `always_on`, and `always_off`.'
1472
+ },
1473
+ :'distributed_tracing.sampler.remote_parent_not_sampled' => {
1474
+ :default => 'default',
1475
+ :public => true,
1476
+ :type => String,
1477
+ :allowed_from_server => true,
1478
+ :description => 'This setting controls the behavior of transaction sampling when a remote parent is not sampled and the trace flag is not set in the traceparent. Available values are `default`, `always_on`, and `always_off`.'
1479
+ },
1357
1480
  # Elasticsearch
1481
+ :'elasticsearch.capture_cluster_name' => {
1482
+ :default => true,
1483
+ :public => true,
1484
+ :type => Boolean,
1485
+ :allowed_from_server => true,
1486
+ :description => 'If `true`, the agent captures the Elasticsearch cluster name in transaction traces.'
1487
+ },
1358
1488
  :'elasticsearch.capture_queries' => {
1359
1489
  :default => true,
1360
1490
  :public => true,
@@ -1426,6 +1556,7 @@ module NewRelic
1426
1556
  },
1427
1557
  :'instrumentation.async_http' => {
1428
1558
  :default => 'auto',
1559
+ :documentation_default => 'auto',
1429
1560
  :public => true,
1430
1561
  :type => String,
1431
1562
  :dynamic_name => true,
@@ -1434,14 +1565,85 @@ module NewRelic
1434
1565
  },
1435
1566
  :'instrumentation.bunny' => {
1436
1567
  :default => 'auto',
1568
+ :documentation_default => 'auto',
1437
1569
  :public => true,
1438
1570
  :type => String,
1439
1571
  :dynamic_name => true,
1440
1572
  :allowed_from_server => false,
1441
1573
  :description => 'Controls auto-instrumentation of bunny at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1442
1574
  },
1575
+ :'instrumentation.aws_sdk_firehose' => {
1576
+ :default => 'auto',
1577
+ :documentation_default => 'auto',
1578
+ :public => true,
1579
+ :type => String,
1580
+ :dynamic_name => true,
1581
+ :allowed_from_server => false,
1582
+ :description => 'Controls auto-instrumentation of the aws-sdk-firehose library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
1583
+ },
1584
+ :'instrumentation.aws_sdk_lambda' => {
1585
+ :default => 'auto',
1586
+ :documentation_default => 'auto',
1587
+ :public => true,
1588
+ :type => String,
1589
+ :dynamic_name => true,
1590
+ :allowed_from_server => false,
1591
+ :description => 'Controls auto-instrumentation of the aws_sdk_lambda library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
1592
+ },
1593
+ :'instrumentation.aws_sdk_kinesis' => {
1594
+ :default => 'auto',
1595
+ :documentation_default => 'auto',
1596
+ :public => true,
1597
+ :type => String,
1598
+ :dynamic_name => true,
1599
+ :allowed_from_server => false,
1600
+ :description => 'Controls auto-instrumentation of the aws-sdk-kinesis library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
1601
+ },
1602
+ :'instrumentation.ruby_kafka' => {
1603
+ :default => 'auto',
1604
+ :public => true,
1605
+ :type => String,
1606
+ :dynamic_name => true,
1607
+ :allowed_from_server => false,
1608
+ :description => 'Controls auto-instrumentation of the ruby-kafka library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
1609
+ },
1610
+ :'instrumentation.opensearch' => {
1611
+ :default => 'auto',
1612
+ :documentation_default => 'auto',
1613
+ :public => true,
1614
+ :type => String,
1615
+ :dynamic_name => true,
1616
+ :allowed_from_server => false,
1617
+ :description => 'Controls auto-instrumentation of the opensearch-ruby library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
1618
+ },
1619
+ :'instrumentation.rdkafka' => {
1620
+ :default => 'auto',
1621
+ :public => true,
1622
+ :type => String,
1623
+ :dynamic_name => true,
1624
+ :allowed_from_server => false,
1625
+ :description => 'Controls auto-instrumentation of the rdkafka library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
1626
+ },
1627
+ :'instrumentation.aws_sqs' => {
1628
+ :default => 'auto',
1629
+ :public => true,
1630
+ :type => String,
1631
+ :dynamic_name => true,
1632
+ :allowed_from_server => false,
1633
+ :description => 'Controls auto-instrumentation of the aws-sdk-sqs library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1634
+ },
1635
+ :'instrumentation.dynamodb' => {
1636
+ :default => 'auto',
1637
+ :documentation_default => 'auto',
1638
+ :public => true,
1639
+ :type => String,
1640
+ :dynamic_name => true,
1641
+ :allowed_from_server => false,
1642
+ :description => 'Controls auto-instrumentation of the aws-sdk-dynamodb library at start-up. May be one of `auto`, `prepend`, `chain`, `disabled`.'
1643
+ },
1443
1644
  :'instrumentation.fiber' => {
1444
1645
  :default => 'auto',
1646
+ :documentation_default => 'auto',
1445
1647
  :public => true,
1446
1648
  :type => String,
1447
1649
  :dynamic_name => true,
@@ -1450,6 +1652,7 @@ module NewRelic
1450
1652
  },
1451
1653
  :'instrumentation.concurrent_ruby' => {
1452
1654
  :default => 'auto',
1655
+ :documentation_default => 'auto',
1453
1656
  :public => true,
1454
1657
  :type => String,
1455
1658
  :dynamic_name => true,
@@ -1476,6 +1679,7 @@ module NewRelic
1476
1679
  },
1477
1680
  :'instrumentation.elasticsearch' => {
1478
1681
  :default => 'auto',
1682
+ :documentation_default => 'auto',
1479
1683
  :public => true,
1480
1684
  :type => String,
1481
1685
  :dynamic_name => true,
@@ -1484,11 +1688,12 @@ module NewRelic
1484
1688
  },
1485
1689
  :'instrumentation.ethon' => {
1486
1690
  :default => 'auto',
1691
+ :documentation_default => 'auto',
1487
1692
  :public => true,
1488
1693
  :type => String,
1489
1694
  :dynamic_name => true,
1490
1695
  :allowed_from_server => false,
1491
- :description => 'Controls auto-instrumentation of ethon at start up. May be one of [auto|prepend|chain|disabled]'
1696
+ :description => 'Controls auto-instrumentation of ethon at start up. May be one of `auto`, `prepend`, `chain`, `disabled`'
1492
1697
  },
1493
1698
  :'instrumentation.excon' => {
1494
1699
  :default => 'enabled',
@@ -1501,6 +1706,7 @@ module NewRelic
1501
1706
  },
1502
1707
  :'instrumentation.grape' => {
1503
1708
  :default => 'auto',
1709
+ :documentation_default => 'auto',
1504
1710
  :public => true,
1505
1711
  :type => String,
1506
1712
  :dynamic_name => true,
@@ -1558,7 +1764,7 @@ module NewRelic
1558
1764
  :type => String,
1559
1765
  :dynamic_name => true,
1560
1766
  :allowed_from_server => false,
1561
- :description => 'Controls auto-instrumentation of httpx at start up. May be one of [auto|prepend|chain|disabled]'
1767
+ :description => 'Controls auto-instrumentation of httpx at start up. May be one of `auto`, `prepend`, `chain`, `disabled`'
1562
1768
  },
1563
1769
  :'instrumentation.logger' => {
1564
1770
  :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
@@ -1569,8 +1775,18 @@ module NewRelic
1569
1775
  :allowed_from_server => false,
1570
1776
  :description => 'Controls auto-instrumentation of Ruby standard library Logger at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1571
1777
  },
1778
+ :'instrumentation.logstasher' => {
1779
+ :default => instrumentation_value_from_boolean(:'application_logging.enabled'),
1780
+ :documentation_default => 'auto',
1781
+ :public => true,
1782
+ :type => String,
1783
+ :dynamic_name => true,
1784
+ :allowed_from_server => false,
1785
+ :description => 'Controls auto-instrumentation of the LogStasher library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1786
+ },
1572
1787
  :'instrumentation.memcache' => {
1573
1788
  :default => 'auto',
1789
+ :documentation_default => 'auto',
1574
1790
  :public => true,
1575
1791
  :type => String,
1576
1792
  :dynamic_name => true,
@@ -1620,7 +1836,7 @@ module NewRelic
1620
1836
  :type => String,
1621
1837
  :dynamic_name => true,
1622
1838
  :allowed_from_server => false,
1623
- :description => 'Controls auto-instrumentation of the ruby-openai gem at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
1839
+ :description => 'Controls auto-instrumentation of the ruby-openai gem at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`. Defaults to `disabled` in high security mode.'
1624
1840
  },
1625
1841
  :'instrumentation.puma_rack' => {
1626
1842
  :default => value_of(:'instrumentation.rack'),
@@ -1664,6 +1880,7 @@ module NewRelic
1664
1880
  },
1665
1881
  :'instrumentation.rake' => {
1666
1882
  :default => 'auto',
1883
+ :documentation_default => 'auto',
1667
1884
  :public => true,
1668
1885
  :type => String,
1669
1886
  :dynamic_name => true,
@@ -1672,6 +1889,7 @@ module NewRelic
1672
1889
  },
1673
1890
  :'instrumentation.redis' => {
1674
1891
  :default => 'auto',
1892
+ :documentation_default => 'auto',
1675
1893
  :public => true,
1676
1894
  :type => String,
1677
1895
  :dynamic_name => true,
@@ -1689,6 +1907,7 @@ module NewRelic
1689
1907
  },
1690
1908
  :'instrumentation.roda' => {
1691
1909
  :default => 'auto',
1910
+ :documentation_default => 'auto',
1692
1911
  :public => true,
1693
1912
  :type => String,
1694
1913
  :dynamic_name => true,
@@ -1697,6 +1916,7 @@ module NewRelic
1697
1916
  },
1698
1917
  :'instrumentation.sinatra' => {
1699
1918
  :default => 'auto',
1919
+ :documentation_default => 'auto',
1700
1920
  :public => true,
1701
1921
  :type => String,
1702
1922
  :dynamic_name => true,
@@ -1712,6 +1932,7 @@ module NewRelic
1712
1932
  },
1713
1933
  :'instrumentation.view_component' => {
1714
1934
  :default => 'auto',
1935
+ :documentation_default => 'auto',
1715
1936
  :public => true,
1716
1937
  :type => String,
1717
1938
  :dynamic_name => true,
@@ -1728,7 +1949,7 @@ module NewRelic
1728
1949
  :description => <<~DESCRIPTION
1729
1950
  An array of strings to specify which keys inside a Stripe event's `user_data` hash should be reported
1730
1951
  to New Relic. Each string in this array will be turned into a regular expression via `Regexp.new` to
1731
- permit advanced matching. Setting the value to `["."]` will report all `user_data`.
1952
+ enable advanced matching. Setting the value to `["."]` will report all `user_data`.
1732
1953
  DESCRIPTION
1733
1954
  },
1734
1955
  :'stripe.user_data.exclude' => {
@@ -1740,14 +1961,15 @@ module NewRelic
1740
1961
  :transform => DefaultSource.method(:convert_to_list),
1741
1962
  :description => <<~DESCRIPTION
1742
1963
  An array of strings to specify which keys and/or values inside a Stripe event's `user_data` hash should
1743
- not be reported to New Relic. Each string in this array will be turned into a regular expression via
1744
- `Regexp.new` to permit advanced matching. For each hash pair, if either the key or value is matched the
1745
- pair will not be reported. By default, no `user_data` is reported, so this option should only be used if
1746
- the `stripe.user_data.include` option is being used.
1964
+ \tnot be reported to New Relic. Each string in this array will be turned into a regular expression via
1965
+ \t`Regexp.new` to permit advanced matching. For each hash pair, if either the key or value is matched the pair
1966
+ \tisn't reported. By default, no `user_data` is reported. Use this option only if the
1967
+ \t`stripe.user_data.include` option is also used.
1747
1968
  DESCRIPTION
1748
1969
  },
1749
1970
  :'instrumentation.thread' => {
1750
1971
  :default => 'auto',
1972
+ :documentation_default => 'auto',
1751
1973
  :public => true,
1752
1974
  :type => String,
1753
1975
  :dynamic_name => true,
@@ -1770,6 +1992,7 @@ module NewRelic
1770
1992
  },
1771
1993
  :'instrumentation.tilt' => {
1772
1994
  :default => 'auto',
1995
+ :documentation_default => 'auto',
1773
1996
  :public => true,
1774
1997
  :type => String,
1775
1998
  :dynamic_name => true,
@@ -1808,6 +2031,21 @@ module NewRelic
1808
2031
  :allowed_from_server => true,
1809
2032
  :description => 'If `true`, the agent obfuscates Mongo queries in transaction traces.'
1810
2033
  },
2034
+ # OpenSearch
2035
+ :'opensearch.capture_queries' => {
2036
+ :default => true,
2037
+ :public => true,
2038
+ :type => Boolean,
2039
+ :allowed_from_server => true,
2040
+ :description => 'If `true`, the agent captures OpenSearch queries in transaction traces.'
2041
+ },
2042
+ :'opensearch.obfuscate_queries' => {
2043
+ :default => true,
2044
+ :public => true,
2045
+ :type => Boolean,
2046
+ :allowed_from_server => true,
2047
+ :description => 'If `true`, the agent obfuscates OpenSearch queries in transaction traces.'
2048
+ },
1811
2049
  # Process host
1812
2050
  :'process_host.display_name' => {
1813
2051
  :default => proc { NewRelic::Agent::Hostname.get },
@@ -1827,7 +2065,7 @@ module NewRelic
1827
2065
  If `true`, when the agent is in an application using Ruby on Rails, it will start after `config/initializers` run.
1828
2066
 
1829
2067
  <Callout variant="caution">
1830
- This option may only be set by environment variable.
2068
+ \tThis option may only be set by environment variable.
1831
2069
  </Callout>
1832
2070
  DESCRIPTION
1833
2071
  },
@@ -1869,7 +2107,7 @@ module NewRelic
1869
2107
  :transform => proc { |bool| NewRelic::Agent::ServerlessHandler.env_var_set? || bool },
1870
2108
  :description => 'If `true`, the agent will operate in a streamlined mode suitable for use with short-lived ' \
1871
2109
  'serverless functions. NOTE: Only AWS Lambda functions are supported currently and this ' \
1872
- "option is not intended for use without [New Relic's Ruby Lambda layer](https://docs.newrelic.com/docs/serverless-function-monitoring/aws-lambda-monitoring/get-started/monitoring-aws-lambda-serverless-monitoring/) offering."
2110
+ "option isn't intended for use without [New Relic's Ruby Lambda layer](https://docs.newrelic.com/docs/serverless-function-monitoring/aws-lambda-monitoring/get-started/monitoring-aws-lambda-serverless-monitoring/) offering."
1873
2111
  },
1874
2112
  # Sidekiq
1875
2113
  :'sidekiq.args.include' => {
@@ -1963,7 +2201,12 @@ module NewRelic
1963
2201
  :public => true,
1964
2202
  :type => Integer,
1965
2203
  :allowed_from_server => true,
1966
- :description => 'Defines the maximum number of span events reported from a single harvest. Any Integer between `1` and `10000` is valid.'
2204
+ # Keep the extra two-space indent before the second bullet to appease translation tool
2205
+ :description => <<~DESC
2206
+ - Defines the maximum number of span events reported from a single harvest. Any Integer between `1` and `10000` is valid.'
2207
+ - When configuring the agent for [AI monitoring](/docs/ai-monitoring/intro-to-ai-monitoring), set to max value `10000`.\
2208
+ This ensures the agent captures the maximum amount of distributed traces.
2209
+ DESC
1967
2210
  },
1968
2211
  # Strip exception messages
1969
2212
  :'strip_exception_messages.enabled' => {
@@ -1972,7 +2215,7 @@ module NewRelic
1972
2215
  :public => true,
1973
2216
  :type => Boolean,
1974
2217
  :allowed_from_server => false,
1975
- :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).'
2218
+ :description => 'If true, the agent strips messages from all exceptions except those in the [allowed classes list](#strip_exception_messages-allowed_classes). Enabled automatically in [high security mode](/docs/accounts-partnerships/accounts/security/high-security).'
1976
2219
  },
1977
2220
  :'strip_exception_messages.allowed_classes' => {
1978
2221
  :default => '',
@@ -1982,6 +2225,28 @@ module NewRelic
1982
2225
  :transform => DefaultSource.method(:convert_to_constant_list),
1983
2226
  :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"`.'
1984
2227
  },
2228
+ # Agent Control
2229
+ :'agent_control.enabled' => {
2230
+ :default => false,
2231
+ :public => false,
2232
+ :type => Boolean,
2233
+ :allowed_from_server => false,
2234
+ :description => 'Boolean value that denotes whether Agent Control functionality should be enabled. At the moment, this functionality is limited to whether agent health should be reported. This configuration will be set using an environment variable by Agent Control, or one of its components, prior to agent startup.'
2235
+ },
2236
+ :'agent_control.health.delivery_location' => {
2237
+ :default => '/newrelic/apm/health',
2238
+ :public => false,
2239
+ :type => String,
2240
+ :allowed_from_server => false,
2241
+ :description => 'A `file:` URI that specifies the fully qualified directory path for health file(s) to be written to. This defaults to: `file:///newrelic/apm/health`. This configuration will be set using an environment variable by Agent Control, or one of its components, prior to agent startup.'
2242
+ },
2243
+ :'agent_control.health.frequency' => {
2244
+ :default => 5,
2245
+ :public => false,
2246
+ :type => Integer,
2247
+ :allowed_from_server => false,
2248
+ :description => 'The interval, in seconds, of how often the health file(s) will be written to. This configuration will be set using an environment variable by Agent Control, or one of its components, prior to agent startup.'
2249
+ },
1985
2250
  # Thread profiler
1986
2251
  :'thread_profiler.enabled' => {
1987
2252
  :default => DefaultSource.thread_profiler_enabled,
@@ -2111,7 +2376,7 @@ module NewRelic
2111
2376
  :description => 'Enable or disable debugging version of JavaScript agent loader for browser monitoring instrumentation.'
2112
2377
  },
2113
2378
  :'browser_monitoring.ssl_for_http' => {
2114
- :default => nil,
2379
+ :default => false,
2115
2380
  :allow_nil => true,
2116
2381
  :public => false,
2117
2382
  :type => Boolean,
@@ -2244,6 +2509,14 @@ module NewRelic
2244
2509
  :allowed_from_server => true,
2245
2510
  :description => 'Number of seconds betwixt connections to the New Relic span event collection services.'
2246
2511
  },
2512
+ # TODO: Sync with the other agents to see what the config should be named, how it should be enabled, how it should be described
2513
+ :'opentelemetry_bridge.enabled' => {
2514
+ :default => false,
2515
+ :public => false,
2516
+ :type => Boolean,
2517
+ :allowed_from_server => false,
2518
+ :description => 'Enables the creation of Transaction Trace segments and timeslice metrics from OpenTelemetry Spans. This will help drive New Relic UI experience for opentelemetry spans. **WARNING**: This is not feature complete and is not intended to be enabled yet.'
2519
+ },
2247
2520
  :force_reconnect => {
2248
2521
  :default => false,
2249
2522
  :public => false,
@@ -2282,11 +2555,9 @@ module NewRelic
2282
2555
  :allowlist => %i[none low medium high],
2283
2556
  :external => :infinite_tracing,
2284
2557
  :description => <<~DESC
2285
- Configure the compression level for data sent to the trace observer.
2286
-
2287
- May be one of: `:none`, `:low`, `:medium`, `:high`.
2288
-
2289
- Set the level to `:none` to disable compression.
2558
+ Configure the compression level for data sent to the trace observer. \
2559
+ May be one of: `:none`, `:low`, `:medium`, `:high`. \
2560
+ Set the level to `:none` to disable compression.
2290
2561
  DESC
2291
2562
  },
2292
2563
  :js_agent_file => {
@@ -2476,6 +2747,233 @@ module NewRelic
2476
2747
  :type => Integer,
2477
2748
  :allowed_from_server => false,
2478
2749
  :description => 'This value represents the total amount of memory available to the host (not the process), in mebibytes (1024 squared or 1,048,576 bytes).'
2750
+ },
2751
+ # security agent
2752
+ :'security.agent.enabled' => {
2753
+ :default => false,
2754
+ :external => true,
2755
+ :public => true,
2756
+ :type => Boolean,
2757
+ :allowed_from_server => false,
2758
+ :description => "If `true`, the security agent is loaded (a Ruby 'require' is performed)"
2759
+ },
2760
+ :'security.enabled' => {
2761
+ :default => false,
2762
+ :external => true,
2763
+ :public => true,
2764
+ :type => Boolean,
2765
+ :allowed_from_server => false,
2766
+ :description => 'If `true`, the security agent is started (the agent runs in its event loop)'
2767
+ },
2768
+ :'security.mode' => {
2769
+ :default => 'IAST',
2770
+ :external => true,
2771
+ :public => true,
2772
+ :type => String,
2773
+ :allowed_from_server => true,
2774
+ :allowlist => %w[IAST RASP],
2775
+ :description => 'Defines the mode for the security agent to operate in. Currently only `IAST` is supported',
2776
+ :dynamic_name => true
2777
+ },
2778
+ :'security.validator_service_url' => {
2779
+ :default => 'wss://csec.nr-data.net',
2780
+ :external => true,
2781
+ :public => true,
2782
+ :type => String,
2783
+ :allowed_from_server => true,
2784
+ :description => 'Defines the endpoint URL for posting security-related data',
2785
+ :dynamic_name => true
2786
+ },
2787
+ :'security.application_info.port' => {
2788
+ :default => nil,
2789
+ :allow_nil => true,
2790
+ :public => true,
2791
+ :type => Integer,
2792
+ :external => true,
2793
+ :allowed_from_server => false,
2794
+ :description => 'The port the application is listening on. This setting is mandatory for Passenger servers. The agent detects other servers by default.'
2795
+ },
2796
+ :'security.exclude_from_iast_scan.api' => {
2797
+ :default => [],
2798
+ :public => true,
2799
+ :type => Array,
2800
+ :external => true,
2801
+ :allowed_from_server => true,
2802
+ :transform => DefaultSource.method(:convert_to_list),
2803
+ :description => 'Defines API paths the security agent should ignore in IAST scans. Accepts an array of regex patterns matching the URI to ignore. The regex pattern should find a complete match for the URL without the endpoint. For example, `[".*account.*"], [".*/\api\/v1\/.*?\/login"]`'
2804
+ },
2805
+ :'security.exclude_from_iast_scan.http_request_parameters.header' => {
2806
+ :default => [],
2807
+ :public => true,
2808
+ :type => Array,
2809
+ :external => true,
2810
+ :allowed_from_server => true,
2811
+ :transform => DefaultSource.method(:convert_to_list),
2812
+ :description => 'An array of HTTP request headers the security agent should ignore in IAST scans. The array should specify a list of patterns matching the headers to ignore.'
2813
+ },
2814
+ :'security.exclude_from_iast_scan.http_request_parameters.query' => {
2815
+ :default => [],
2816
+ :public => true,
2817
+ :type => Array,
2818
+ :external => true,
2819
+ :allowed_from_server => true,
2820
+ :transform => DefaultSource.method(:convert_to_list),
2821
+ :description => 'An array of HTTP request query parameters the security agent should ignore in IAST scans. The array should specify a list of patterns matching the HTTP request query parameters to ignore.'
2822
+ },
2823
+ :'security.exclude_from_iast_scan.http_request_parameters.body' => {
2824
+ :default => [],
2825
+ :public => true,
2826
+ :type => Array,
2827
+ :external => true,
2828
+ :allowed_from_server => true,
2829
+ :transform => DefaultSource.method(:convert_to_list),
2830
+ :description => 'An array of HTTP request body keys the security agent should ignore in IAST scans.'
2831
+ },
2832
+ :'security.exclude_from_iast_scan.iast_detection_category.insecure_settings' => {
2833
+ :default => false,
2834
+ :external => true,
2835
+ :public => true,
2836
+ :type => Boolean,
2837
+ :allowed_from_server => false,
2838
+ :description => 'If `true`, disables the detection of low-severity insecure settings. For example, hash, crypto, cookie, random generators, trust boundary).'
2839
+ },
2840
+ :'security.exclude_from_iast_scan.iast_detection_category.invalid_file_access' => {
2841
+ :default => false,
2842
+ :external => true,
2843
+ :public => true,
2844
+ :type => Boolean,
2845
+ :allowed_from_server => false,
2846
+ :description => 'If `true`, disables file operation-related IAST detections (File Access & Application integrity violation)'
2847
+ },
2848
+ :'security.exclude_from_iast_scan.iast_detection_category.sql_injection' => {
2849
+ :default => false,
2850
+ :external => true,
2851
+ :public => true,
2852
+ :type => Boolean,
2853
+ :allowed_from_server => false,
2854
+ :description => 'If `true`, disables SQL injection detection in IAST scans.'
2855
+ },
2856
+ :'security.exclude_from_iast_scan.iast_detection_category.nosql_injection' => {
2857
+ :default => false,
2858
+ :external => true,
2859
+ :public => true,
2860
+ :type => Boolean,
2861
+ :allowed_from_server => false,
2862
+ :description => 'If `true`, disables NOSQL injection detection in IAST scans.'
2863
+ },
2864
+ :'security.exclude_from_iast_scan.iast_detection_category.ldap_injection' => {
2865
+ :default => false,
2866
+ :external => true,
2867
+ :public => true,
2868
+ :type => Boolean,
2869
+ :allowed_from_server => false,
2870
+ :description => 'If `true`, disables LDAP injection detection in IAST scans.'
2871
+ },
2872
+ :'security.exclude_from_iast_scan.iast_detection_category.javascript_injection' => {
2873
+ :default => false,
2874
+ :external => true,
2875
+ :public => true,
2876
+ :type => Boolean,
2877
+ :allowed_from_server => false,
2878
+ :description => 'If `true`, disables Javascript injection detection in IAST scans.'
2879
+ },
2880
+ :'security.exclude_from_iast_scan.iast_detection_category.command_injection' => {
2881
+ :default => false,
2882
+ :external => true,
2883
+ :public => true,
2884
+ :type => Boolean,
2885
+ :allowed_from_server => false,
2886
+ :description => 'If `true`, disables system command injection detection in IAST scans.'
2887
+ },
2888
+ :'security.exclude_from_iast_scan.iast_detection_category.xpath_injection' => {
2889
+ :default => false,
2890
+ :external => true,
2891
+ :public => true,
2892
+ :type => Boolean,
2893
+ :allowed_from_server => false,
2894
+ :description => 'If `true`, disables XPATH injection detection in IAST scans.'
2895
+ },
2896
+ :'security.exclude_from_iast_scan.iast_detection_category.ssrf' => {
2897
+ :default => false,
2898
+ :external => true,
2899
+ :public => true,
2900
+ :type => Boolean,
2901
+ :allowed_from_server => false,
2902
+ :description => 'If `true`, disables Sever-Side Request Forgery (SSRF) detection in IAST scans.'
2903
+ },
2904
+ :'security.exclude_from_iast_scan.iast_detection_category.rxss' => {
2905
+ :default => false,
2906
+ :external => true,
2907
+ :public => true,
2908
+ :type => Boolean,
2909
+ :allowed_from_server => false,
2910
+ :description => 'If `true`, disables Reflected Cross-Site Scripting (RXSS) detection in IAST scans.'
2911
+ },
2912
+ :'security.scan_schedule.delay' => {
2913
+ :default => 0,
2914
+ :public => true,
2915
+ :type => Integer,
2916
+ :external => true,
2917
+ :allowed_from_server => true,
2918
+ :description => 'Specifies the delay time (in minutes) before the IAST scan begins after the application starts.'
2919
+ },
2920
+ :'security.scan_schedule.duration' => {
2921
+ :default => 0,
2922
+ :public => true,
2923
+ :type => Integer,
2924
+ :external => true,
2925
+ :allowed_from_server => true,
2926
+ :description => 'Indicates the duration (in minutes) for which the IAST scan will be performed.'
2927
+ },
2928
+ :'security.scan_schedule.schedule' => {
2929
+ :default => '',
2930
+ :public => true,
2931
+ :type => String,
2932
+ :external => true,
2933
+ :allowed_from_server => true,
2934
+ :description => 'Specifies a cron expression that sets when the IAST scan should run.',
2935
+ :dynamic_name => true
2936
+ },
2937
+ :'security.scan_schedule.always_sample_traces' => {
2938
+ :default => false,
2939
+ :external => true,
2940
+ :public => true,
2941
+ :type => Boolean,
2942
+ :allowed_from_server => false,
2943
+ :description => 'If `true`, allows IAST to continuously gather trace data in the background. The security agent uses collected data to perform an IAST scan at the scheduled time.'
2944
+ },
2945
+ :'security.scan_controllers.iast_scan_request_rate_limit' => {
2946
+ :default => 3600,
2947
+ :public => true,
2948
+ :type => Integer,
2949
+ :external => true,
2950
+ :allowed_from_server => true,
2951
+ :description => 'Sets the maximum number of HTTP requests allowed for the IAST scan per minute. Any Integer between 12 and 3600 is valid. The default value is 3600.'
2952
+ },
2953
+ :'security.scan_controllers.scan_instance_count' => {
2954
+ :default => 0,
2955
+ :public => true,
2956
+ :type => Integer,
2957
+ :external => true,
2958
+ :allowed_from_server => true,
2959
+ :description => 'The number of application instances for a specific entity to perform IAST analysis on.'
2960
+ },
2961
+ :'security.scan_controllers.report_http_response_body' => {
2962
+ :default => true,
2963
+ :public => true,
2964
+ :type => Boolean,
2965
+ :external => true,
2966
+ :allowed_from_server => true,
2967
+ :description => 'If `true`, enables the sending of HTTP responses bodies. Disabling this also disables Reflected Cross-Site Scripting (RXSS) vulnerability detection.'
2968
+ },
2969
+ :'security.iast_test_identifier' => {
2970
+ :default => nil,
2971
+ :allow_nil => true,
2972
+ :public => true,
2973
+ :type => String,
2974
+ :external => true,
2975
+ :allowed_from_server => true,
2976
+ :description => 'A unique test identifier when runnning IAST in a CI/CD environment to differentiate between different test runs. For example, a build number.'
2479
2977
  }
2480
2978
  }.freeze
2481
2979
  # rubocop:enable Metrics/CollectionLiteralLength