newrelic_rpm 9.1.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 (360) hide show
  1. checksums.yaml +4 -4
  2. data/.build_ignore +27 -0
  3. data/CHANGELOG.md +841 -7
  4. data/CONTRIBUTING.md +2 -9
  5. data/README.md +25 -22
  6. data/Rakefile +2 -2
  7. data/bin/newrelic +3 -9
  8. data/bin/newrelic_rpm +15 -0
  9. data/init.rb +2 -2
  10. data/lib/boot/strap.rb +102 -0
  11. data/lib/new_relic/agent/agent.rb +11 -2
  12. data/lib/new_relic/agent/agent_helpers/connect.rb +13 -8
  13. data/lib/new_relic/agent/agent_helpers/harvest.rb +3 -0
  14. data/lib/new_relic/agent/agent_helpers/shutdown.rb +4 -1
  15. data/lib/new_relic/agent/agent_helpers/special_startup.rb +1 -1
  16. data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +4 -3
  17. data/lib/new_relic/agent/agent_helpers/startup.rb +11 -3
  18. data/lib/new_relic/agent/agent_logger.rb +3 -1
  19. data/lib/new_relic/agent/attribute_filter.rb +3 -3
  20. data/lib/new_relic/agent/attribute_pre_filtering.rb +109 -0
  21. data/lib/new_relic/agent/aws.rb +68 -0
  22. data/lib/new_relic/agent/configuration/default_source.rb +918 -166
  23. data/lib/new_relic/agent/configuration/environment_source.rb +15 -3
  24. data/lib/new_relic/agent/configuration/high_security_source.rb +1 -0
  25. data/lib/new_relic/agent/configuration/manager.rb +72 -11
  26. data/lib/new_relic/agent/configuration/security_policy_source.rb +11 -0
  27. data/lib/new_relic/agent/configuration/yaml_source.rb +22 -2
  28. data/lib/new_relic/agent/connect/request_builder.rb +1 -1
  29. data/lib/new_relic/agent/custom_event_aggregator.rb +27 -1
  30. data/lib/new_relic/agent/database/obfuscation_helpers.rb +11 -11
  31. data/lib/new_relic/agent/database/obfuscator.rb +1 -0
  32. data/lib/new_relic/agent/database.rb +41 -1
  33. data/lib/new_relic/agent/database_adapter.rb +1 -1
  34. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -1
  35. data/lib/new_relic/agent/datastores/redis.rb +1 -1
  36. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +1 -1
  37. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +4 -8
  38. data/lib/new_relic/agent/distributed_tracing.rb +5 -3
  39. data/lib/new_relic/agent/error_collector.rb +40 -11
  40. data/lib/new_relic/agent/event_loop.rb +1 -1
  41. data/lib/new_relic/agent/external.rb +2 -0
  42. data/lib/new_relic/agent/harvester.rb +1 -1
  43. data/lib/new_relic/agent/health_check.rb +136 -0
  44. data/lib/new_relic/agent/http_clients/abstract.rb +4 -0
  45. data/lib/new_relic/agent/http_clients/async_http_wrappers.rb +80 -0
  46. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +1 -3
  47. data/lib/new_relic/agent/http_clients/ethon_wrappers.rb +109 -0
  48. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +0 -3
  49. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +1 -3
  50. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +0 -3
  51. data/lib/new_relic/agent/http_clients/httpx_wrappers.rb +91 -0
  52. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +1 -4
  53. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +0 -3
  54. data/lib/new_relic/agent/http_clients/uri_util.rb +1 -1
  55. data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +1 -1
  56. data/lib/new_relic/agent/instrumentation/action_dispatch.rb +1 -1
  57. data/lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb +1 -1
  58. data/lib/new_relic/agent/instrumentation/action_mailbox.rb +1 -1
  59. data/lib/new_relic/agent/instrumentation/action_mailer.rb +1 -1
  60. data/lib/new_relic/agent/instrumentation/active_job.rb +1 -1
  61. data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +6 -2
  62. data/lib/new_relic/agent/instrumentation/active_merchant.rb +3 -16
  63. data/lib/new_relic/agent/instrumentation/active_record.rb +8 -13
  64. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +8 -5
  65. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +13 -10
  66. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +2 -2
  67. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +9 -16
  68. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/chain.rb +69 -0
  69. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/instrumentation.rb +17 -0
  70. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/prepend.rb +37 -0
  71. data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger.rb +21 -0
  72. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +4 -0
  73. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +3 -3
  74. data/lib/new_relic/agent/instrumentation/async_http/chain.rb +23 -0
  75. data/lib/new_relic/agent/instrumentation/async_http/instrumentation.rb +37 -0
  76. data/lib/new_relic/agent/instrumentation/async_http/prepend.rb +15 -0
  77. data/lib/new_relic/agent/instrumentation/async_http.rb +27 -0
  78. data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/chain.rb +21 -0
  79. data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/instrumentation.rb +66 -0
  80. data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/prepend.rb +15 -0
  81. data/lib/new_relic/agent/instrumentation/aws_sdk_firehose.rb +22 -0
  82. data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/chain.rb +21 -0
  83. data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/instrumentation.rb +91 -0
  84. data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/prepend.rb +15 -0
  85. data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis.rb +22 -0
  86. data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/chain.rb +33 -0
  87. data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/instrumentation.rb +93 -0
  88. data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/prepend.rb +23 -0
  89. data/lib/new_relic/agent/instrumentation/aws_sdk_lambda.rb +23 -0
  90. data/lib/new_relic/agent/instrumentation/aws_sqs/chain.rb +37 -0
  91. data/lib/new_relic/agent/instrumentation/aws_sqs/instrumentation.rb +67 -0
  92. data/lib/new_relic/agent/instrumentation/aws_sqs/prepend.rb +21 -0
  93. data/lib/new_relic/agent/instrumentation/aws_sqs.rb +23 -0
  94. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +1 -1
  95. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +23 -0
  96. data/lib/new_relic/agent/instrumentation/bunny.rb +4 -5
  97. data/lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb +1 -1
  98. data/lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb +3 -4
  99. data/lib/new_relic/agent/instrumentation/concurrent_ruby/prepend.rb +1 -1
  100. data/lib/new_relic/agent/instrumentation/concurrent_ruby.rb +2 -3
  101. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +5 -2
  102. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +4 -0
  103. data/lib/new_relic/agent/instrumentation/curb.rb +4 -5
  104. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +1 -0
  105. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +3 -0
  106. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +0 -23
  107. data/lib/new_relic/agent/instrumentation/dynamodb/chain.rb +27 -0
  108. data/lib/new_relic/agent/instrumentation/dynamodb/instrumentation.rb +64 -0
  109. data/lib/new_relic/agent/instrumentation/dynamodb/prepend.rb +19 -0
  110. data/lib/new_relic/agent/instrumentation/dynamodb.rb +23 -0
  111. data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +2 -3
  112. data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +65 -10
  113. data/lib/new_relic/agent/instrumentation/elasticsearch.rb +2 -4
  114. data/lib/new_relic/agent/instrumentation/ethon/chain.rb +39 -0
  115. data/lib/new_relic/agent/instrumentation/ethon/instrumentation.rb +105 -0
  116. data/lib/new_relic/agent/instrumentation/ethon/prepend.rb +35 -0
  117. data/lib/new_relic/agent/instrumentation/ethon.rb +35 -0
  118. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +3 -0
  119. data/lib/new_relic/agent/instrumentation/excon.rb +1 -17
  120. data/lib/new_relic/agent/instrumentation/fiber/chain.rb +11 -4
  121. data/lib/new_relic/agent/instrumentation/fiber/instrumentation.rb +2 -6
  122. data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +10 -3
  123. data/lib/new_relic/agent/instrumentation/fiber.rb +1 -3
  124. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +4 -3
  125. data/lib/new_relic/agent/instrumentation/grape.rb +1 -1
  126. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +1 -1
  127. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +5 -2
  128. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +1 -1
  129. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +1 -1
  130. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +5 -1
  131. data/lib/new_relic/agent/instrumentation/grpc_client.rb +2 -2
  132. data/lib/new_relic/agent/instrumentation/grpc_server.rb +2 -2
  133. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +4 -0
  134. data/lib/new_relic/agent/instrumentation/httpclient.rb +1 -5
  135. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +4 -0
  136. data/lib/new_relic/agent/instrumentation/httprb.rb +0 -1
  137. data/lib/new_relic/agent/instrumentation/httpx/chain.rb +20 -0
  138. data/lib/new_relic/agent/instrumentation/httpx/instrumentation.rb +51 -0
  139. data/lib/new_relic/agent/instrumentation/httpx/prepend.rb +15 -0
  140. data/lib/new_relic/agent/instrumentation/httpx.rb +23 -0
  141. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +3 -0
  142. data/lib/new_relic/agent/instrumentation/logger.rb +1 -3
  143. data/lib/new_relic/agent/instrumentation/logstasher/chain.rb +21 -0
  144. data/lib/new_relic/agent/instrumentation/logstasher/instrumentation.rb +24 -0
  145. data/lib/new_relic/agent/instrumentation/logstasher/prepend.rb +13 -0
  146. data/lib/new_relic/agent/instrumentation/logstasher.rb +25 -0
  147. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +4 -2
  148. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +2 -2
  149. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +13 -4
  150. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +4 -2
  151. data/lib/new_relic/agent/instrumentation/memcache.rb +4 -5
  152. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +3 -5
  153. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +13 -3
  154. data/lib/new_relic/agent/instrumentation/net_http.rb +2 -1
  155. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +4 -2
  156. data/lib/new_relic/agent/instrumentation/opensearch/chain.rb +21 -0
  157. data/lib/new_relic/agent/instrumentation/opensearch/instrumentation.rb +66 -0
  158. data/lib/new_relic/agent/instrumentation/opensearch/prepend.rb +13 -0
  159. data/lib/new_relic/agent/instrumentation/opensearch.rb +23 -0
  160. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +4 -0
  161. data/lib/new_relic/agent/instrumentation/padrino.rb +3 -3
  162. data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -1
  163. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +9 -0
  164. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +4 -0
  165. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +1 -1
  166. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +10 -5
  167. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +4 -0
  168. data/lib/new_relic/agent/instrumentation/rake.rb +1 -2
  169. data/lib/new_relic/agent/instrumentation/rdkafka/chain.rb +72 -0
  170. data/lib/new_relic/agent/instrumentation/rdkafka/instrumentation.rb +70 -0
  171. data/lib/new_relic/agent/instrumentation/rdkafka/prepend.rb +67 -0
  172. data/lib/new_relic/agent/instrumentation/rdkafka.rb +25 -0
  173. data/lib/new_relic/agent/instrumentation/redis/cluster_middleware.rb +26 -0
  174. data/lib/new_relic/agent/instrumentation/redis/constants.rb +2 -2
  175. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +18 -11
  176. data/lib/new_relic/agent/instrumentation/redis/middleware.rb +3 -0
  177. data/lib/new_relic/agent/instrumentation/redis.rb +11 -5
  178. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +4 -0
  179. data/lib/new_relic/agent/instrumentation/resque.rb +8 -6
  180. data/lib/new_relic/agent/instrumentation/roda/chain.rb +43 -0
  181. data/lib/new_relic/agent/instrumentation/roda/ignorer.rb +45 -0
  182. data/lib/new_relic/agent/instrumentation/roda/instrumentation.rb +68 -0
  183. data/lib/new_relic/agent/instrumentation/roda/prepend.rb +24 -0
  184. data/lib/new_relic/agent/instrumentation/roda/roda_transaction_namer.rb +29 -0
  185. data/lib/new_relic/agent/instrumentation/roda.rb +36 -0
  186. data/lib/new_relic/agent/instrumentation/ruby_kafka/chain.rb +55 -0
  187. data/lib/new_relic/agent/instrumentation/ruby_kafka/instrumentation.rb +67 -0
  188. data/lib/new_relic/agent/instrumentation/ruby_kafka/prepend.rb +60 -0
  189. data/lib/new_relic/agent/instrumentation/ruby_kafka.rb +25 -0
  190. data/lib/new_relic/agent/instrumentation/ruby_openai/chain.rb +36 -0
  191. data/lib/new_relic/agent/instrumentation/ruby_openai/instrumentation.rb +196 -0
  192. data/lib/new_relic/agent/instrumentation/ruby_openai/prepend.rb +20 -0
  193. data/lib/new_relic/agent/instrumentation/ruby_openai.rb +35 -0
  194. data/lib/new_relic/agent/instrumentation/sequel.rb +1 -1
  195. data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +4 -0
  196. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delay_extensions.rb +24 -0
  197. data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +2 -2
  198. data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +26 -3
  199. data/lib/new_relic/agent/instrumentation/sidekiq.rb +13 -16
  200. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +1 -1
  201. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +4 -0
  202. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +1 -3
  203. data/lib/new_relic/agent/instrumentation/sinatra.rb +3 -19
  204. data/lib/new_relic/agent/instrumentation/stripe.rb +28 -0
  205. data/lib/new_relic/agent/instrumentation/stripe_subscriber.rb +98 -0
  206. data/lib/new_relic/agent/instrumentation/thread/chain.rb +1 -1
  207. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +1 -5
  208. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +1 -1
  209. data/lib/new_relic/agent/instrumentation/thread.rb +0 -2
  210. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +4 -0
  211. data/lib/new_relic/agent/instrumentation/tilt.rb +0 -4
  212. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +7 -3
  213. data/lib/new_relic/agent/instrumentation/typhoeus.rb +0 -1
  214. data/lib/new_relic/agent/instrumentation/view_component/chain.rb +21 -0
  215. data/lib/new_relic/agent/instrumentation/view_component/instrumentation.rb +45 -0
  216. data/lib/{tasks/instrumentation_generator/templates/instrumentation.tt → new_relic/agent/instrumentation/view_component/prepend.rb} +4 -4
  217. data/lib/new_relic/agent/instrumentation/view_component.rb +24 -0
  218. data/lib/new_relic/agent/javascript_instrumentor.rb +2 -4
  219. data/lib/new_relic/agent/llm/chat_completion_message.rb +25 -0
  220. data/lib/new_relic/agent/llm/chat_completion_summary.rb +66 -0
  221. data/lib/new_relic/agent/llm/embedding.rb +60 -0
  222. data/lib/new_relic/agent/llm/llm_event.rb +95 -0
  223. data/lib/new_relic/agent/llm/response_headers.rb +80 -0
  224. data/lib/new_relic/agent/llm.rb +49 -0
  225. data/lib/new_relic/agent/local_log_decorator.rb +20 -3
  226. data/lib/new_relic/agent/log_event_aggregator.rb +149 -26
  227. data/lib/new_relic/agent/log_event_attributes.rb +115 -0
  228. data/lib/new_relic/agent/logging.rb +5 -5
  229. data/lib/new_relic/agent/messaging.rb +18 -7
  230. data/lib/new_relic/agent/method_tracer.rb +4 -1
  231. data/lib/new_relic/agent/method_tracer_helpers.rb +26 -5
  232. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +1 -1
  233. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +12 -1
  234. data/lib/new_relic/agent/new_relic_service/encoders.rb +2 -2
  235. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +2 -2
  236. data/lib/new_relic/agent/new_relic_service.rb +61 -28
  237. data/lib/new_relic/agent/obfuscator.rb +0 -2
  238. data/lib/new_relic/agent/opentelemetry/context/propagation/trace_propagator.rb +66 -0
  239. data/lib/new_relic/agent/opentelemetry/context/propagation.rb +15 -0
  240. data/lib/{tasks/instrumentation_generator/templates/Envfile.tt → new_relic/agent/opentelemetry/context.rb} +9 -5
  241. data/lib/new_relic/agent/opentelemetry/trace/span.rb +31 -0
  242. data/lib/new_relic/agent/opentelemetry/trace/tracer.rb +129 -0
  243. data/lib/new_relic/agent/opentelemetry/trace/tracer_provider.rb +18 -0
  244. data/lib/new_relic/agent/opentelemetry/trace.rb +15 -0
  245. data/lib/new_relic/agent/opentelemetry/transaction_patch.rb +69 -0
  246. data/lib/new_relic/agent/opentelemetry_bridge.rb +32 -0
  247. data/lib/new_relic/agent/parameter_filtering.rb +1 -1
  248. data/lib/new_relic/agent/pipe_channel_manager.rb +2 -2
  249. data/lib/new_relic/agent/pipe_service.rb +1 -1
  250. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -2
  251. data/lib/new_relic/agent/rules_engine.rb +1 -1
  252. data/lib/new_relic/agent/sampler.rb +1 -0
  253. data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -1
  254. data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
  255. data/lib/new_relic/agent/serverless_handler.rb +406 -0
  256. data/lib/new_relic/agent/serverless_handler_event_sources.json +155 -0
  257. data/lib/new_relic/agent/serverless_handler_event_sources.rb +49 -0
  258. data/lib/new_relic/agent/span_event_primitive.rb +32 -15
  259. data/lib/new_relic/agent/sql_sampler.rb +0 -1
  260. data/lib/new_relic/agent/system_info.rb +40 -0
  261. data/lib/new_relic/agent/threading/agent_thread.rb +1 -2
  262. data/lib/new_relic/agent/threading/backtrace_node.rb +10 -1
  263. data/lib/new_relic/agent/tracer.rb +16 -16
  264. data/lib/new_relic/agent/transaction/abstract_segment.rb +103 -41
  265. data/lib/new_relic/agent/transaction/datastore_segment.rb +1 -1
  266. data/lib/new_relic/agent/transaction/distributed_tracer.rb +3 -3
  267. data/lib/new_relic/agent/transaction/distributed_tracing.rb +7 -8
  268. data/lib/new_relic/agent/transaction/external_request_segment.rb +5 -12
  269. data/lib/new_relic/agent/transaction/message_broker_segment.rb +5 -3
  270. data/lib/new_relic/agent/transaction/request_attributes.rb +54 -11
  271. data/lib/new_relic/agent/transaction/trace_context.rb +34 -5
  272. data/lib/new_relic/agent/transaction/tracing.rb +20 -4
  273. data/lib/new_relic/agent/transaction.rb +38 -13
  274. data/lib/new_relic/agent/transaction_error_primitive.rb +39 -19
  275. data/lib/new_relic/agent/transaction_event_primitive.rb +19 -0
  276. data/lib/new_relic/agent/transaction_time_aggregator.rb +1 -1
  277. data/lib/new_relic/agent/utilization/ecs.rb +22 -0
  278. data/lib/new_relic/agent/utilization/ecs_v4.rb +22 -0
  279. data/lib/new_relic/agent/utilization/gcp.rb +1 -3
  280. data/lib/new_relic/agent/utilization/vendor.rb +5 -7
  281. data/lib/new_relic/agent/utilization_data.rb +40 -5
  282. data/lib/new_relic/agent/vm/{mri_vm.rb → c_ruby_vm.rb} +10 -18
  283. data/lib/new_relic/agent/vm.rb +2 -2
  284. data/lib/new_relic/agent/worker_loop.rb +1 -1
  285. data/lib/new_relic/agent.rb +286 -17
  286. data/lib/new_relic/base64.rb +25 -0
  287. data/lib/new_relic/cli/command.rb +6 -3
  288. data/lib/new_relic/constants.rb +8 -0
  289. data/lib/new_relic/control/class_methods.rb +1 -7
  290. data/lib/new_relic/control/frameworks/grape.rb +14 -0
  291. data/lib/new_relic/control/frameworks/padrino.rb +14 -0
  292. data/lib/new_relic/control/frameworks/rails.rb +17 -5
  293. data/lib/new_relic/control/frameworks/rails4.rb +1 -3
  294. data/lib/new_relic/control/frameworks/roda.rb +20 -0
  295. data/lib/new_relic/control/instance_methods.rb +13 -0
  296. data/lib/new_relic/control/instrumentation.rb +2 -16
  297. data/lib/new_relic/control/private_instance_methods.rb +4 -0
  298. data/lib/new_relic/control/security_interface.rb +57 -0
  299. data/lib/new_relic/control.rb +1 -1
  300. data/lib/new_relic/dependency_detection.rb +25 -13
  301. data/lib/new_relic/environment_report.rb +2 -2
  302. data/lib/new_relic/helper.rb +22 -0
  303. data/lib/new_relic/language_support.rb +12 -1
  304. data/lib/new_relic/latest_changes.rb +1 -1
  305. data/lib/new_relic/local_environment.rb +31 -18
  306. data/lib/new_relic/noticed_error.rb +5 -2
  307. data/lib/new_relic/rack/agent_hooks.rb +1 -1
  308. data/lib/new_relic/rack/agent_middleware.rb +0 -16
  309. data/lib/new_relic/rack/browser_monitoring.rb +29 -13
  310. data/lib/new_relic/supportability_helper.rb +5 -1
  311. data/lib/new_relic/thread_local_storage.rb +31 -0
  312. data/lib/new_relic/traced_thread.rb +2 -3
  313. data/lib/new_relic/version.rb +1 -1
  314. data/lib/sequel/extensions/new_relic_instrumentation.rb +4 -3
  315. data/lib/tasks/bump_version.rake +21 -0
  316. data/lib/tasks/config.rake +11 -5
  317. data/lib/tasks/coverage_report.rake +1 -1
  318. data/lib/tasks/gha.rake +31 -0
  319. data/lib/tasks/helpers/config.html.erb +94 -0
  320. data/lib/tasks/helpers/format.rb +11 -7
  321. data/lib/tasks/helpers/newrelicyml.rb +211 -0
  322. data/lib/tasks/helpers/version_bump.rb +62 -0
  323. data/lib/tasks/newrelic.rb +1 -0
  324. data/lib/tasks/newrelicyml.rake +13 -0
  325. data/lib/tasks/tests.rake +71 -0
  326. data/newrelic.yml +657 -251
  327. data/newrelic_rpm.gemspec +17 -10
  328. data/test/agent_helper.rb +38 -4
  329. metadata +230 -44
  330. data/.gitignore +0 -43
  331. data/.project +0 -23
  332. data/.rubocop.yml +0 -1909
  333. data/.rubocop_todo.yml +0 -61
  334. data/.simplecov +0 -15
  335. data/.snyk +0 -11
  336. data/.yardopts +0 -27
  337. data/Brewfile +0 -12
  338. data/DOCKER.md +0 -167
  339. data/Dockerfile +0 -10
  340. data/Guardfile +0 -26
  341. data/bin/newrelic_cmd +0 -6
  342. data/config/database.yml +0 -5
  343. data/config.dot +0 -278
  344. data/docker-compose.yml +0 -107
  345. data/lefthook.yml +0 -9
  346. data/lib/new_relic/agent/range_extensions.rb +0 -27
  347. data/lib/tasks/helpers/removers.rb +0 -33
  348. data/lib/tasks/instrumentation_generator/README.md +0 -63
  349. data/lib/tasks/instrumentation_generator/TODO.md +0 -33
  350. data/lib/tasks/instrumentation_generator/instrumentation.thor +0 -121
  351. data/lib/tasks/instrumentation_generator/templates/chain.tt +0 -22
  352. data/lib/tasks/instrumentation_generator/templates/chain_method.tt +0 -8
  353. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +0 -29
  354. data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +0 -3
  355. data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +0 -19
  356. data/lib/tasks/instrumentation_generator/templates/prepend.tt +0 -13
  357. data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +0 -3
  358. data/lib/tasks/instrumentation_generator/templates/test.tt +0 -15
  359. data/lib/tasks/multiverse.rake +0 -6
  360. data/lib/tasks/multiverse.rb +0 -83
data/newrelic.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  #
2
- # This file configures the New Relic Agent. New Relic monitors Ruby, Java,
2
+ # This file configures the New Relic agent. New Relic monitors Ruby, Java,
3
3
  # .NET, PHP, Python, Node, and Go applications with deep visibility and low
4
4
  # overhead. For more information, visit www.newrelic.com.
5
5
 
@@ -26,49 +26,94 @@ common: &default_settings
26
26
  # All of the following configuration options are optional. Review them, and
27
27
  # uncomment or edit them if they appear relevant to your application needs.
28
28
 
29
- # An array of ActiveSupport custom events names to subscribe to and provide
30
- # instrumentation for. For example,
31
- # - my.custom.event
32
- # - another.event
33
- # - a.third.event
34
- # active_support_custom_events_names: ""
35
-
36
- # If `true`, all logging-related features for the agent can be enabled or disabled
37
- # independently. If `false`, all logging-related features are disabled.
29
+ # An array of ActiveSupport custom event names to subscribe to and instrument.
30
+ # For example,
31
+ # - one.custom.event
32
+ # - another.event
33
+ # - a.third.event
34
+ # active_support_custom_events_names: []
35
+
36
+ # If false, all LLM instrumentation (OpenAI only for now) will be disabled and
37
+ # no metrics, events, or spans will be sent. AI Monitoring is automatically
38
+ # disabled if high_security mode is enabled.
39
+ # ai_monitoring.enabled: false
40
+
41
+ # If false, LLM instrumentation (OpenAI only for now) will not capture input and
42
+ # output content on specific LLM events.
43
+ #
44
+ # The excluded attributes include:
45
+ # - content from LlmChatCompletionMessage events
46
+ # - input from LlmEmbedding events
47
+ #
48
+ # This is an optional security setting to prevent recording sensitive data sent
49
+ # to and received from your LLMs.
50
+ # ai_monitoring.record_content.enabled: true
51
+
52
+ # If true, enables capture of all HTTP request headers for all destinations.
53
+ # allow_all_headers: false
54
+
55
+ # Your New Relic userKey. Required when using the New Relic REST API v2 to
56
+ # record deployments using the newrelic deployments command.
57
+ # api_key: ""
58
+
59
+ # If true, enables log decoration and the collection of log events and metrics.
38
60
  # application_logging.enabled: true
39
61
 
40
- # If `true`, the agent captures log records emitted by this application.
62
+ # A hash with key/value pairs to add as custom attributes to all log events
63
+ # forwarded to New Relic. If sending using an environment variable, the value
64
+ # must be formatted like: "key1=value1,key2=value2"
65
+ # application_logging.forwarding.custom_attributes: {}
66
+
67
+ # If true, the agent captures log records emitted by your application.
41
68
  # application_logging.forwarding.enabled: true
42
69
 
70
+ # If true, the agent attaches labels to log records.
71
+ # application_logging.forwarding.labels.enabled: false
72
+
73
+ # A case-insensitive array or comma-delimited string containing the labels to
74
+ # exclude from log records.
75
+ # application_logging.forwarding.labels.exclude: []
76
+
77
+ # Sets the minimum level a log event must have to be forwarded to New Relic.
78
+ #
79
+ # This is based on the integer values of Ruby's Logger::Severity constants.
80
+ #
81
+ # The intention is to forward logs with the level given to the configuration, as
82
+ # well as any logs with a higher level of severity.
83
+ #
84
+ # For example, setting this value to "debug" will forward all log events to New
85
+ # Relic. Setting this value to "error" will only forward log events with the
86
+ # levels "error", "fatal", and "unknown".
87
+ #
88
+ # Valid values (ordered lowest to highest):
89
+ # - "debug"
90
+ # - "info"
91
+ # - "warn"
92
+ # - "error"
93
+ # - "fatal"
94
+ # - "unknown"
95
+ # application_logging.forwarding.log_level: debug
96
+
43
97
  # Defines the maximum number of log records to buffer in memory at a time.
44
98
  # application_logging.forwarding.max_samples_stored: 10000
45
99
 
46
- # If `true`, the agent captures metrics related to logging for this application.
47
- # application_logging.metrics.enabled: true
48
-
49
- # If `true`, the agent decorates logs with metadata to link to entities, hosts, traces, and spans.
100
+ # If true, the agent decorates logs with metadata to link to entities, hosts,
101
+ # traces, and spans.
50
102
  # application_logging.local_decorating.enabled: false
51
103
 
52
- # If `true`, the agent will report source code level metrics for traced methods
53
- # see: https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration/
54
- # code_level_metrics.enabled: true
55
-
56
- # If true, enables transaction event sampling.
57
- # transaction_events.enabled: true
104
+ # If true, the agent captures metrics related to logging for your application.
105
+ # application_logging.metrics.enabled: true
58
106
 
59
- # Defines the maximum number of request events reported from a single harvest.
60
- # transaction_events.max_samples_stored: 1200
107
+ # If true, enables capture of attributes for all destinations.
108
+ # attributes.enabled: true
61
109
 
62
110
  # Prefix of attributes to exclude from all destinations. Allows * as wildcard at
63
111
  # end.
64
- # attributes_exclude: []
112
+ # attributes.exclude: []
65
113
 
66
114
  # Prefix of attributes to include in all destinations. Allows * as wildcard at
67
115
  # end.
68
- # attributes_include: []
69
-
70
- # If true, enables capture of attributes for all destinations.
71
- # attributes.enabled: true
116
+ # attributes.include: []
72
117
 
73
118
  # If true, enables an audit log which logs communications with the New Relic
74
119
  # collector.
@@ -78,24 +123,76 @@ common: &default_settings
78
123
  # audit_log.endpoints: [".*"]
79
124
 
80
125
  # Specifies a path to the audit log file (including the filename).
81
- # audit_log.path: "/audit_log"
126
+ # audit_log.path: log/newrelic_audit.log
127
+
128
+ # An array of CLASS#METHOD (for instance methods) and/or CLASS.METHOD (for class
129
+ # methods) strings representing Ruby methods that the agent can automatically
130
+ # add custom instrumentation to. This doesn't require any modifications of the
131
+ # source code that defines the methods.
132
+ #
133
+ # Use fully qualified class names (using the :: delimiter) that include any
134
+ # module or class namespacing.
135
+ #
136
+ # Here is some Ruby source code that defines a render_png instance method for an
137
+ # Image class and a notify class method for a User class, both within a
138
+ # MyCompany module namespace:
139
+ #
140
+ # module MyCompany
141
+ # class Image
142
+ # def render_png
143
+ # # code to render a PNG
144
+ # end
145
+ # end
146
+ #
147
+ # class User
148
+ # def self.notify
149
+ # # code to notify users
150
+ # end
151
+ # end
152
+ # end
153
+ #
154
+ #
155
+ # Given that source code, the newrelic.yml config file might request
156
+ # instrumentation for both of these methods like so:
157
+ #
158
+ # automatic_custom_instrumentation_method_list:
159
+ # - MyCompany::Image#render_png
160
+ # - MyCompany::User.notify
161
+ #
162
+ #
163
+ # That configuration example uses YAML array syntax to specify both methods.
164
+ # Alternatively, you can use a comma-delimited string:
165
+ #
166
+ # automatic_custom_instrumentation_method_list: 'MyCompany::Image#render_png,
167
+ # MyCompany::User.notify'
168
+ #
169
+ #
170
+ # Whitespace around the comma(s) in the list is optional. When configuring the
171
+ # agent with a list of methods via the
172
+ # NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LIST environment variable,
173
+ # use this comma-delimited string format:
174
+ #
175
+ # export
176
+ # NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LIST='MyCompany::Image#render_png,
177
+ # MyCompany::User.notify'
178
+ # automatic_custom_instrumentation_method_list: []
82
179
 
83
180
  # Specify a list of constants that should prevent the agent from starting
84
- # automatically. Separate individual constants with a comma ,.
85
- # For example, Rails::Console,UninstrumentedBackgroundJob.
86
- # autostart.denylisted_constants: "rails::console"
181
+ # automatically. Separate individual constants with a comma ,. For example,
182
+ # "Rails::Console,UninstrumentedBackgroundJob".
183
+ # autostart.denylisted_constants: Rails::Command::ConsoleCommand,Rails::Command::CredentialsCommand,Rails::Command::Db::System::ChangeCommand,Rails::Command::DbConsoleCommand,Rails::Command::DestroyCommand,Rails::Command::DevCommand,Rails::Command::EncryptedCommand,Rails::Command::GenerateCommand,Rails::Command::InitializersCommand,Rails::Command::NotesCommand,Rails::Command::RoutesCommand,Rails::Command::RunnerCommand,Rails::Command::SecretsCommand,Rails::Console,Rails::DBConsole
87
184
 
88
185
  # Defines a comma-delimited list of executables that the agent should not
89
- # instrument. For example, rake,my_ruby_script.rb.
90
- # autostart.denylisted_executables: "irb,rspec"
186
+ # instrument. For example, "rake,my_ruby_script.rb".
187
+ # autostart.denylisted_executables: irb,rspec
91
188
 
92
189
  # Defines a comma-delimited list of Rake tasks that the agent should not
93
- # instrument. For example, assets:precompile,db:migrate.
94
- # autostart.denylisted_rake_tasks: "about,assets:clean,assets:clobber,assets:environment,assets:precompile,assets:precompile:all,db:create,db:drop,db:fixtures:load,db:migrate,db:migrate:status,db:rollback,db:schema:cache:clear,db:schema:cache:dump,db:schema:dump,db:schema:load,db:seed,db:setup,db:structure:dump,db:version,doc:app,log:clear,middleware,notes,notes:custom,rails:template,rails:update,routes,secret,spec,spec:features,spec:requests,spec:controllers,spec:helpers,spec:models,spec:views,spec:routing,spec:rcov,stats,test,test:all,test:all:db,test:recent,test:single,test:uncommitted,time:zones:all,tmp:clear,tmp:create,webpacker:compile"
190
+ # instrument. For example, "assets:precompile,db:migrate".
191
+ # autostart.denylisted_rake_tasks: about,assets:clean,assets:clobber,assets:environment,assets:precompile,assets:precompile:all,db:create,db:drop,db:fixtures:load,db:migrate,db:migrate:status,db:rollback,db:schema:cache:clear,db:schema:cache:dump,db:schema:dump,db:schema:load,db:seed,db:setup,db:structure:dump,db:version,doc:app,log:clear,middleware,notes,notes:custom,rails:template,rails:update,routes,secret,spec,spec:features,spec:requests,spec:controllers,spec:helpers,spec:models,spec:views,spec:routing,spec:rcov,stats,test,test:all,test:all:db,test:recent,test:single,test:uncommitted,time:zones:all,tmp:clear,tmp:create,webpacker:compile
95
192
 
96
- # Backports the faster Active Record connection lookup introduced in Rails 6,
97
- # which improves agent performance when instrumenting Active Record. Note that
98
- # this setting may not be compatible with other gems that patch Active Record.
193
+ # Backports the faster ActiveRecord connection lookup introduced in Rails 6,
194
+ # which improves agent performance when instrumenting ActiveRecord. Note that
195
+ # this setting may not be compatible with other gems that patch ActiveRecord.
99
196
  # backport_fast_active_record_connection_lookup: false
100
197
 
101
198
  # If true, the agent captures attributes from browser monitoring.
@@ -109,68 +206,83 @@ common: &default_settings
109
206
  # end.
110
207
  # browser_monitoring.attributes.include: []
111
208
 
112
- # This is true by default, this enables auto-injection of the JavaScript header
113
- # for page load timing (sometimes referred to as real user monitoring or RUM).
209
+ # If true, enables auto-injection of the JavaScript header for page load timing
210
+ # (sometimes referred to as real user monitoring or RUM).
114
211
  # browser_monitoring.auto_instrument: true
115
212
 
116
- # Manual override for the path to your local CA bundle. This CA bundle will be
117
- # used to validate the SSL certificate presented by New Relic's data collection
118
- # service.
213
+ # If true, enables auto-injection of Content Security Policy Nonce in browser
214
+ # monitoring scripts. For now, auto-injection only works with Rails 5.2+.
215
+ # browser_monitoring.content_security_policy_nonce: true
216
+
217
+ # Manual override for the path to your local CA bundle. This CA bundle validates
218
+ # the SSL certificate presented by New Relic's data collection service.
119
219
  # ca_bundle_path: nil
120
220
 
121
221
  # Enable or disable the capture of memcache keys from transaction traces.
122
222
  # capture_memcache_keys: false
123
223
 
124
224
  # When true, the agent captures HTTP request parameters and attaches them to
125
- # transaction traces, traced errors, and TransactionError events. When using the
126
- # capture_params setting, the Ruby agent will not attempt to filter secret
127
- # information. Recommendation: To filter secret information from request
128
- # parameters,use the attributes.include setting instead. For more information,
129
- # see the Ruby attribute examples.
225
+ # transaction traces, traced errors, and TransactionError events.
226
+ #
227
+ # When using the capture_params setting, the Ruby agent will not attempt to
228
+ # filter secret information. Recommendation: To filter secret information from
229
+ # request parameters, use the attributes.include setting instead. For more
230
+ # information, see the Ruby attribute examples.
130
231
  # capture_params: false
131
232
 
132
233
  # If true, the agent will clear Tracer::State in Agent.drop_buffered_data.
133
234
  # clear_transaction_state_after_fork: false
134
235
 
236
+ # The AWS account ID for the AWS account associated with this app
237
+ # cloud.aws.account_id: nil
238
+
239
+ # If true, the agent will report source code level metrics for traced methods.
240
+ # See:
241
+ # https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration/
242
+ # code_level_metrics.enabled: true
243
+
135
244
  # Path to newrelic.yml. If undefined, the agent checks the following directories
136
- # (in order): config/newrelic.yml, newrelic.yml, $HOME/.newrelic/newrelic.yml
137
- # and $HOME/newrelic.yml.
245
+ # (in order):
246
+ # - config/newrelic.yml
247
+ # - newrelic.yml
248
+ # - $HOME/.newrelic/newrelic.yml
249
+ # - $HOME/newrelic.yml
138
250
  # config_path: newrelic.yml
139
251
 
140
- # If true, enables cross application tracing. Cross application tracing is now
141
- # deprecated, and disabled by default. Distributed tracing is replacing cross
142
- # application tracing as the default means of tracing between services.
143
- # To continue using it, set `cross_application_tracer.enabled: true` and
144
- # `distributed_tracing.enabled: false`
145
- # cross_application_tracer.enabled: false
146
-
147
- # If false, custom attributes will not be sent on New Relic Insights events.
252
+ # If false, custom attributes will not be sent on events.
148
253
  # custom_attributes.enabled: true
149
254
 
150
- # If true, the agent captures New Relic Insights custom events.
255
+ # If true, the agent captures custom events.
151
256
  # custom_insights_events.enabled: true
152
257
 
153
- # Specify a maximum number of custom Insights events to buffer in memory at a
154
- # time.
258
+ # - Specify a maximum number of custom events to buffer in memory at a time.
259
+ # - When configuring the agent for AI monitoring, set to max value 100000.
260
+ # This ensures the agent captures the maximum amount of LLM events.
155
261
  # custom_insights_events.max_samples_stored: 3000
156
262
 
157
- # If false, the agent will not add database_name parameter to transaction or #
263
+ # If false, the agent will not add database_name parameter to transaction or
158
264
  # slow sql traces.
159
265
  # datastore_tracer.database_name_reporting.enabled: true
160
266
 
161
267
  # If false, the agent will not report datastore instance metrics, nor add host
162
- # or port_path_or_id parameters to transaction or slow SQL traces.
268
+ # or port_path_or_id parameters to transaction or slow SQL traces.
163
269
  # datastore_tracer.instance_reporting.enabled: true
164
270
 
165
271
  # If true, disables Action Cable instrumentation.
166
272
  # disable_action_cable_instrumentation: false
167
273
 
274
+ # If true, disables Action Controller instrumentation.
275
+ # disable_action_controller: false
276
+
168
277
  # If true, disables Action Mailbox instrumentation.
169
278
  # disable_action_mailbox: false
170
279
 
171
280
  # If true, disables Action Mailer instrumentation.
172
281
  # disable_action_mailer: false
173
282
 
283
+ # If true, disables Active Record instrumentation.
284
+ # disable_active_record_instrumentation: false
285
+
174
286
  # If true, disables instrumentation for Active Record 4+
175
287
  # disable_active_record_notifications: false
176
288
 
@@ -183,15 +295,9 @@ common: &default_settings
183
295
  # If true, disables Active Job instrumentation.
184
296
  # disable_activejob: false
185
297
 
186
- # If true, disables Active Record instrumentation.
187
- # disable_active_record_instrumentation: false
188
-
189
298
  # If true, the agent won't sample the CPU usage of the host process.
190
299
  # disable_cpu_sampler: false
191
300
 
192
- # If true, disables ActiveSupport custom events instrumentation.
193
- # disable_custom_events_instrumentation: false
194
-
195
301
  # If true, the agent won't measure the depth of Delayed Job queues.
196
302
  # disable_delayed_job_sampler: false
197
303
 
@@ -204,8 +310,16 @@ common: &default_settings
204
310
 
205
311
  # If true, the agent won't wrap third-party middlewares in instrumentation
206
312
  # (regardless of whether they are installed via Rack::Builder or Rails).
313
+ #
314
+ # When middleware instrumentation is disabled, if an application is using
315
+ # middleware that could alter the response code, the HTTP status code reported
316
+ # on the transaction may not reflect the altered value.
207
317
  # disable_middleware_instrumentation: false
208
318
 
319
+ # If true, disables agent middleware for Roda. This middleware is responsible
320
+ # for advanced feature support such as page load timing and error collection.
321
+ # disable_roda_auto_middleware: false
322
+
209
323
  # If true, disables the collection of sampler metrics. Sampler metrics are
210
324
  # metrics that are not event-based (such as CPU time or memory usage).
211
325
  # disable_samplers: false
@@ -217,8 +331,20 @@ common: &default_settings
217
331
  # disable_sidekiq: false
218
332
 
219
333
  # If true, disables agent middleware for Sinatra. This middleware is responsible
220
- # for advanced feature support such as distributed tracing, page load
334
+ # for advanced feature support such as cross application tracing, page load
221
335
  # timing, and error collection.
336
+ #
337
+ # Cross application tracing is deprecated in favor of distributed tracing.
338
+ # Distributed tracing is on by default for Ruby agent versions 8.0.0 and above.
339
+ # Middlewares are not required to support distributed tracing.
340
+ #
341
+ # To continue using cross application tracing, update the following options in
342
+ # your newrelic.yml configuration file:
343
+ #
344
+ # cross_application_tracer:
345
+ # enabled: true
346
+ # distributed_tracing:
347
+ # enabled: false
222
348
  # disable_sinatra_auto_middleware: false
223
349
 
224
350
  # If true, disables view instrumentation.
@@ -227,19 +353,41 @@ common: &default_settings
227
353
  # If true, the agent won't sample performance measurements from the Ruby VM.
228
354
  # disable_vm_sampler: false
229
355
 
230
- # Distributed tracing tracks and observes service requests as they flow through distributed systems.
231
- # With distributed tracing data, you can quickly pinpoint failures or performance issues and fix them.
356
+ # Distributed tracing lets you see the path that a request takes through your
357
+ # distributed system. Enabling distributed tracing changes the behavior of some
358
+ # New Relic features, so carefully consult the transition guide before you
359
+ # enable this feature.
232
360
  # distributed_tracing.enabled: true
233
361
 
362
+ # This setting controls the behavior of transaction sampling when a remote
363
+ # parent is not sampled and the trace flag is not set in the traceparent.
364
+ # Available values are default, always_on, and always_off.
365
+ # distributed_tracing.sampler.remote_parent_not_sampled: default
366
+
367
+ # This setting controls the behavior of transaction sampling when a remote
368
+ # parent is sampled and the trace flag is set in the traceparent. Available
369
+ # values are default, always_on, and always_off.
370
+ # distributed_tracing.sampler.remote_parent_sampled: default
371
+
372
+ # If true, the agent captures the Elasticsearch cluster name in transaction
373
+ # traces.
374
+ # elasticsearch.capture_cluster_name: true
375
+
376
+ # If true, the agent captures Elasticsearch queries in transaction traces.
377
+ # elasticsearch.capture_queries: true
378
+
379
+ # If true, the agent obfuscates Elasticsearch queries in transaction traces.
380
+ # elasticsearch.obfuscate_queries: true
381
+
234
382
  # If true, the agent captures attributes from error collection.
235
- # error_collector.attributes.enabled: false
383
+ # error_collector.attributes.enabled: true
236
384
 
237
- # Prefix of attributes to exclude from error collection.
238
- # Allows * as wildcard at end.
385
+ # Prefix of attributes to exclude from error collection. Allows * as wildcard at
386
+ # end.
239
387
  # error_collector.attributes.exclude: []
240
388
 
241
- # Prefix of attributes to include in error collection.
242
- # Allows * as wildcard at end.
389
+ # Prefix of attributes to include in error collection. Allows * as wildcard at
390
+ # end.
243
391
  # error_collector.attributes.include: []
244
392
 
245
393
  # If true, the agent collects TransactionError events.
@@ -249,11 +397,13 @@ common: &default_settings
249
397
  # error_collector.enabled: true
250
398
 
251
399
  # A list of error classes that the agent should treat as expected.
400
+ # This option can't be set via environment variable.
252
401
  # error_collector.expected_classes: []
253
402
 
254
403
  # A map of error classes to a list of messages. When an error of one of the
255
404
  # classes specified here occurs, if its error message contains one of the
256
405
  # strings corresponding to it here, that error will be treated as expected.
406
+ # This option can't be set via environment variable.
257
407
  # error_collector.expected_messages: {}
258
408
 
259
409
  # A comma separated list of status codes, possibly including ranges. Errors
@@ -262,38 +412,41 @@ common: &default_settings
262
412
  # error_collector.expected_status_codes: ""
263
413
 
264
414
  # A list of error classes that the agent should ignore.
265
- # error_collector.ignore_classes: []
415
+ # This option can't be set via environment variable.
416
+ # error_collector.ignore_classes: ["ActionController::RoutingError", "Sinatra::NotFound"]
266
417
 
267
418
  # A map of error classes to a list of messages. When an error of one of the
268
419
  # classes specified here occurs, if its error message contains one of the
269
420
  # strings corresponding to it here, that error will be ignored.
270
- # error_collector.ignore_messages: ""
421
+ # This option can't be set via environment variable.
422
+ # error_collector.ignore_messages: {ThreadError: ["queue empty"]}
271
423
 
272
424
  # A comma separated list of status codes, possibly including ranges. Errors
273
425
  # associated with these status codes, where applicable, will be ignored.
274
426
  # error_collector.ignore_status_codes: ""
275
427
 
276
428
  # Defines the maximum number of frames in an error backtrace. Backtraces over
277
- # this amount are truncated at the beginning and end.
429
+ # this amount are truncated in the middle, preserving the beginning and the end
430
+ # of the stack trace.
278
431
  # error_collector.max_backtrace_frames: 50
279
432
 
280
- # Defines the maximum number of TransactionError events sent to Insights per
281
- # harvest cycle.
433
+ # Defines the maximum number of TransactionError events reported per harvest
434
+ # cycle.
282
435
  # error_collector.max_event_samples_stored: 100
283
436
 
284
437
  # Allows newrelic distributed tracing headers to be suppressed on outbound
285
438
  # requests.
286
439
  # exclude_newrelic_header: false
287
440
 
288
- # Forces the exit handler that sends all cached data to collector before
289
- # shutting down to be installed regardless of detecting scenarios where it
290
- # generally should not be. Known use-case for this option is where Sinatra is
291
- # running as an embedded service within another framework and the agent is
292
- # detecting the Sinatra app and skipping the at_exit handler as a result.
293
- # Sinatra classically runs the entire application in an at_exit block and would
294
- # otherwise misbehave if the Agent's at_exit handler was also installed in
295
- # those circumstances. Note: send_data_on_exit should also be set to true in
296
- # tandem with this setting.
441
+ # The exit handler that sends all cached data to the collector before shutting
442
+ # down is forcibly installed. This is true even when it detects scenarios where
443
+ # it generally should not be. The known use case for this option is when Sinatra
444
+ # runs as an embedded service within another framework. The agent detects the
445
+ # Sinatra app and skips the at_exit handler as a result. Sinatra classically
446
+ # runs the entire application in an at_exit block and would otherwise misbehave
447
+ # if the agent's at_exit handler was also installed in those circumstances.
448
+ # Note: send_data_on_exit should also be set to true in tandem with this
449
+ # setting.
297
450
  # force_install_exit_handler: false
298
451
 
299
452
  # Ordinarily the agent reports dyno names with a trailing dot and process ID
@@ -304,174 +457,244 @@ common: &default_settings
304
457
  # If true, the agent uses Heroku dyno names as the hostname.
305
458
  # heroku.use_dyno_names: true
306
459
 
307
- # If true, enables high security mode. Ensure that you understand the
308
- # implication of enabling high security mode before enabling this setting.
309
- # https://docs.newrelic.com/docs/agents/manage-apm-agents/configuration/high-security-mode/
460
+ # If true, enables high security mode. Ensure you understand the implications of
461
+ # high security mode before enabling this setting.
310
462
  # high_security: false
311
463
 
312
- # Configures the hostname for the Trace Observer Host. When configured, enables
313
- # tail-based sampling by sending all recorded spans to a Trace Observer for
464
+ # If true (the default), data sent to the trace observer is batched instead of
465
+ # sending each span individually.
466
+ # infinite_tracing.batching: true
467
+
468
+ # Configure the compression level for data sent to the trace observer. May be
469
+ # one of: :none, :low, :medium, :high. Set the level to :none to disable
470
+ # compression.
471
+ # infinite_tracing.compression_level: high
472
+
473
+ # Configures the hostname for the trace observer Host. When configured, enables
474
+ # tail-based sampling by sending all recorded spans to a trace observer for
314
475
  # further sampling decisions, irrespective of any usual agent sampling decision.
315
476
  # infinite_tracing.trace_observer.host: ""
316
477
 
317
- # Configures the TCP/IP port for the Trace Observer Host
478
+ # Configures the TCP/IP port for the trace observer Host
318
479
  # infinite_tracing.trace_observer.port: 443
319
480
 
320
- # Configure the compression level for data sent to the Trace Observer
321
- # May be one of [none|low|medium|high]
322
- # 'high' is the default. Set the level to 'none' to disable compression
323
- # infinite_tracing.compression_level: high
481
+ # Controls auto-instrumentation of ActiveSupport::BroadcastLogger at start up.
482
+ # May be one of: auto, prepend, chain, disabled. Used in Rails versions >= 7.1.
483
+ # instrumentation.active_support_broadcast_logger: auto
324
484
 
325
- # If true (the default), data sent to the Trace Observer will be batched
326
- # instead of each span being sent individually
327
- # infinite_tracing.batching: true
485
+ # Controls auto-instrumentation of ActiveSupport::Logger at start up. May be one
486
+ # of: auto, prepend, chain, disabled. Used in Rails versions below 7.1.
487
+ # instrumentation.active_support_logger: auto
328
488
 
329
- # Controls auto-instrumentation of bunny at start up.
330
- # May be one of [auto|prepend|chain|disabled].
331
- # instrumentation.bunny: auto
489
+ # Controls auto-instrumentation of Async::HTTP at start up. May be one of: auto,
490
+ # prepend, chain, disabled.
491
+ # instrumentation.async_http: auto
332
492
 
333
- # Controls auto-instrumentation of Fiber at start up.
334
- # May be one of [auto|prepend|chain|disabled]
335
- # instrumentation.fiber: auto
493
+ # Controls auto-instrumentation of the aws-sdk-firehose library at start-up. May
494
+ # be one of auto, prepend, chain, disabled.
495
+ # instrumentation.aws_sdk_firehose: auto
496
+
497
+ # Controls auto-instrumentation of the aws-sdk-kinesis library at start-up. May
498
+ # be one of auto, prepend, chain, disabled.
499
+ # instrumentation.aws_sdk_kinesis: auto
500
+
501
+ # Controls auto-instrumentation of the aws_sdk_lambda library at start-up. May
502
+ # be one of auto, prepend, chain, disabled.
503
+ # instrumentation.aws_sdk_lambda: auto
336
504
 
337
- # Controls auto-instrumentation of concurrent_ruby at start up.
338
- # May be one of [auto|prepend|chain|disabled]
505
+ # Controls auto-instrumentation of the aws-sdk-sqs library at start-up. May be
506
+ # one of: auto, prepend, chain, disabled.
507
+ # instrumentation.aws_sqs: auto
508
+
509
+ # Controls auto-instrumentation of bunny at start-up. May be one of: auto,
510
+ # prepend, chain, disabled.
511
+ # instrumentation.bunny: auto
512
+
513
+ # Controls auto-instrumentation of the concurrent-ruby library at start-up. May
514
+ # be one of: auto, prepend, chain, disabled.
339
515
  # instrumentation.concurrent_ruby: auto
340
516
 
341
- # Controls auto-instrumentation of Curb at start up.
342
- # May be one of [auto|prepend|chain|disabled].
517
+ # Controls auto-instrumentation of Curb at start-up. May be one of: auto,
518
+ # prepend, chain, disabled.
343
519
  # instrumentation.curb: auto
344
520
 
345
- # Controls auto-instrumentation of Delayed Job at start up.
346
- # May be one of [auto|prepend|chain|disabled].
521
+ # Controls auto-instrumentation of Delayed Job at start-up. May be one of: auto,
522
+ # prepend, chain, disabled.
347
523
  # instrumentation.delayed_job: auto
348
524
 
349
- # Controls auto-instrumentation of the elasticsearch library at start up.
350
- # May be one of [auto|prepend|chain|disabled].
525
+ # Controls auto-instrumentation of the aws-sdk-dynamodb library at start-up. May
526
+ # be one of auto, prepend, chain, disabled.
527
+ # instrumentation.dynamodb: auto
528
+
529
+ # Controls auto-instrumentation of the elasticsearch library at start-up. May be
530
+ # one of: auto, prepend, chain, disabled.
351
531
  # instrumentation.elasticsearch: auto
352
532
 
353
- # Controls auto-instrumentation of Excon at start up.
354
- # May be one of [enabled|disabled].
355
- # instrumentation.excon: auto
533
+ # Controls auto-instrumentation of ethon at start up. May be one of auto,
534
+ # prepend, chain, disabled
535
+ # instrumentation.ethon: auto
536
+
537
+ # Controls auto-instrumentation of Excon at start-up. May be one of: enabled,
538
+ # disabled.
539
+ # instrumentation.excon: enabled
540
+
541
+ # Controls auto-instrumentation of the Fiber class at start-up. May be one of:
542
+ # auto, prepend, chain, disabled.
543
+ # instrumentation.fiber: auto
356
544
 
357
- # Controls auto-instrumentation of Grape at start up.
358
- # May be one of [auto|prepend|chain|disabled].
545
+ # Controls auto-instrumentation of Grape at start-up. May be one of: auto,
546
+ # prepend, chain, disabled.
359
547
  # instrumentation.grape: auto
360
548
 
361
- # Controls auto-instrumentation of HTTPClient at start up.
362
- # May be one of [auto|prepend|chain|disabled].
549
+ # Specifies a list of hostname patterns separated by commas that will match gRPC
550
+ # hostnames that traffic is to be ignored by New Relic for. New Relic's gRPC
551
+ # client instrumentation will ignore traffic streamed to a host matching any of
552
+ # these patterns, and New Relic's gRPC server instrumentation will ignore
553
+ # traffic for a server running on a host whose hostname matches any of these
554
+ # patterns. By default, no traffic is ignored when gRPC instrumentation is
555
+ # itself enabled. For example, "private.com$,exception.*"
556
+ # instrumentation.grpc.host_denylist: []
557
+
558
+ # Controls auto-instrumentation of gRPC clients at start-up. May be one of:
559
+ # auto, prepend, chain, disabled.
560
+ # instrumentation.grpc_client: auto
561
+
562
+ # Controls auto-instrumentation of gRPC servers at start-up. May be one of:
563
+ # auto, prepend, chain, disabled.
564
+ # instrumentation.grpc_server: auto
565
+
566
+ # Controls auto-instrumentation of HTTPClient at start-up. May be one of: auto,
567
+ # prepend, chain, disabled.
363
568
  # instrumentation.httpclient: auto
364
569
 
365
- # Controls auto-instrumentation of http.rb gem at start up.
366
- # May be one of [auto|prepend|chain|disabled].
570
+ # Controls auto-instrumentation of http.rb gem at start-up. May be one of: auto,
571
+ # prepend, chain, disabled.
367
572
  # instrumentation.httprb: auto
368
573
 
369
- # Controls auto-instrumentation of the Ruby standard library Logger.rb.
370
- # May be one of [auto|prepend|chain|disabled].
371
- # instrumentation.logger: auto
574
+ # Controls auto-instrumentation of httpx at start up. May be one of auto,
575
+ # prepend, chain, disabled
576
+ # instrumentation.httpx: auto
372
577
 
373
- # Controls auto-instrumentation of ActiveSupport::Logger at start up.
374
- # May be one of [auto|prepend|chain|disabled].
375
- # instrumentation.active_support.logger: auto
578
+ # Controls auto-instrumentation of Ruby standard library Logger at start-up. May
579
+ # be one of: auto, prepend, chain, disabled.
580
+ # instrumentation.logger: auto
376
581
 
377
- # Controls auto-instrumentation of memcache-client gem for Memcache at start up.
378
- # May be one of [auto|prepend|chain|disabled].
379
- # instrumentation.memcache_client: auto
582
+ # Controls auto-instrumentation of the LogStasher library at start-up. May be
583
+ # one of: auto, prepend, chain, disabled.
584
+ # instrumentation.logstasher: auto
380
585
 
381
- # Controls auto-instrumentation of dalli gem for Memcache at start up.
382
- # May be one of [auto|prepend|chain|disabled].
586
+ # Controls auto-instrumentation of dalli gem for Memcache at start-up. May be
587
+ # one of: auto, prepend, chain, disabled.
383
588
  # instrumentation.memcache: auto
384
589
 
385
- # Controls auto-instrumentation of memcached gem for Memcache at start up.
386
- # May be one of [auto|prepend|chain|disabled].
590
+ # Controls auto-instrumentation of memcache-client gem for Memcache at start-up.
591
+ # May be one of: auto, prepend, chain, disabled.
592
+ # instrumentation.memcache_client: auto
593
+
594
+ # Controls auto-instrumentation of memcached gem for Memcache at start-up. May
595
+ # be one of: auto, prepend, chain, disabled.
387
596
  # instrumentation.memcached: auto
388
597
 
389
- # Controls auto-instrumentation of Mongo at start up.
390
- # May be one of [enabled|disabled].
391
- # instrumentation.mongo: auto
598
+ # Controls auto-instrumentation of Mongo at start-up. May be one of: enabled,
599
+ # disabled.
600
+ # instrumentation.mongo: enabled
392
601
 
393
- # Controls auto-instrumentation of Net::HTTP at start up.
394
- # May be one of [auto|prepend|chain|disabled].
602
+ # Controls auto-instrumentation of Net::HTTP at start-up. May be one of: auto,
603
+ # prepend, chain, disabled.
395
604
  # instrumentation.net_http: auto
396
605
 
397
- # Controls auto-instrumentation of Puma::Rack::URLMap at start up.
398
- # May be one of [auto|prepend|chain|disabled].
399
- # instrumentation.puma_rack_urlmap: auto
606
+ # Controls auto-instrumentation of the opensearch-ruby library at start-up. May
607
+ # be one of auto, prepend, chain, disabled.
608
+ # instrumentation.opensearch: auto
400
609
 
401
610
  # Controls auto-instrumentation of Puma::Rack. When enabled, the agent hooks
402
611
  # into the to_app method in Puma::Rack::Builder to find gems to instrument
403
- # during application startup. May be one of [auto|prepend|chain|disabled].
612
+ # during application startup. May be one of: auto, prepend, chain, disabled.
404
613
  # instrumentation.puma_rack: auto
405
614
 
406
- # Controls auto-instrumentation of Rack::URLMap at start up.
407
- # May be one of [auto|prepend|chain|disabled].
408
- # instrumentation.rack_urlmap: auto
615
+ # Controls auto-instrumentation of Puma::Rack::URLMap at start-up. May be one
616
+ # of: auto, prepend, chain, disabled.
617
+ # instrumentation.puma_rack_urlmap: auto
409
618
 
410
619
  # Controls auto-instrumentation of Rack. When enabled, the agent hooks into the
411
620
  # to_app method in Rack::Builder to find gems to instrument during application
412
- # startup. May be one of [auto|prepend|chain|disabled].
621
+ # startup. May be one of: auto, prepend, chain, disabled.
413
622
  # instrumentation.rack: auto
414
623
 
415
- # Controls auto-instrumentation of rake at start up.
416
- # May be one of [auto|prepend|chain|disabled].
624
+ # Controls auto-instrumentation of Rack::URLMap at start-up. May be one of:
625
+ # auto, prepend, chain, disabled.
626
+ # instrumentation.rack_urlmap: auto
627
+
628
+ # Controls auto-instrumentation of rake at start-up. May be one of: auto,
629
+ # prepend, chain, disabled.
417
630
  # instrumentation.rake: auto
418
631
 
419
- # Controls auto-instrumentation of Redis at start up.
420
- # May be one of [auto|prepend|chain|disabled].
632
+ # Controls auto-instrumentation of the rdkafka library at start-up. May be one
633
+ # of auto, prepend, chain, disabled.
634
+ # instrumentation.rdkafka: auto
635
+
636
+ # Controls auto-instrumentation of Redis at start-up. May be one of: auto,
637
+ # prepend, chain, disabled.
421
638
  # instrumentation.redis: auto
422
639
 
423
- # Controls auto-instrumentation of resque at start up.
424
- # May be one of [auto|prepend|chain|disabled].
640
+ # Controls auto-instrumentation of resque at start-up. May be one of: auto,
641
+ # prepend, chain, disabled.
425
642
  # instrumentation.resque: auto
426
643
 
427
- # Controls auto-instrumentation of Sinatra at start up.
428
- # May be one of [auto|prepend|chain|disabled].
429
- # instrumentation.sinatra: auto
644
+ # Controls auto-instrumentation of Roda at start-up. May be one of: auto,
645
+ # prepend, chain, disabled.
646
+ # instrumentation.roda: auto
430
647
 
431
- # Controls auto-instrumentation of Tilt at start up.
432
- # May be one of [auto|prepend|chain|disabled].
433
- # instrumentation.tilt: auto
648
+ # Controls auto-instrumentation of the ruby-kafka library at start-up. May be
649
+ # one of auto, prepend, chain, disabled.
650
+ # instrumentation.ruby_kafka: auto
434
651
 
435
- # Controls auto-instrumentation of Typhoeus at start up.
436
- # May be one of [auto|prepend|chain|disabled].
437
- # instrumentation.typhoeus: auto
652
+ # Controls auto-instrumentation of the ruby-openai gem at start-up. May be one
653
+ # of: auto, prepend, chain, disabled. Defaults to disabled in high security
654
+ # mode.
655
+ # instrumentation.ruby_openai: auto
438
656
 
439
- # Controls auto-instrumentation of the Thread class at start up to allow the agent to correctly nest spans inside of an asynchronous transaction.
440
- # May be one of [auto|prepend|chain|disabled].
657
+ # Controls auto-instrumentation of Sinatra at start-up. May be one of: auto,
658
+ # prepend, chain, disabled.
659
+ # instrumentation.sinatra: auto
660
+
661
+ # Controls auto-instrumentation of Stripe at startup. May be one of: enabled,
662
+ # disabled.
663
+ # instrumentation.stripe: enabled
664
+
665
+ # Controls auto-instrumentation of the Thread class at start-up to allow the
666
+ # agent to correctly nest spans inside of an asynchronous transaction. This does
667
+ # not enable the agent to automatically trace all threads created (see
668
+ # instrumentation.thread.tracing). May be one of: auto, prepend, chain,
669
+ # disabled.
441
670
  # instrumentation.thread: auto
442
671
 
443
- # Controls auto-instrumentation of the Thread class at start up to automatically add tracing to all Threads created in the application.
672
+ # Controls auto-instrumentation of the Thread class at start-up to automatically
673
+ # add tracing to all Threads created in the application.
444
674
  # instrumentation.thread.tracing: true
445
675
 
446
- # Controls auto-instrumentation of gRPC clients at start up.
447
- # May be one of [auto|prepend|chain|disabled].
448
- # instrumentation.grpc_client: auto
676
+ # Controls auto-instrumentation of the Tilt template rendering library at
677
+ # start-up. May be one of: auto, prepend, chain, disabled.
678
+ # instrumentation.tilt: auto
449
679
 
450
- # Controls auto-instrumentation of gRPC servers at start up.
451
- # May be one of [auto|prepend|chain|disabled].
452
- # instrumentation.grpc_server: auto
680
+ # Controls auto-instrumentation of Typhoeus at start-up. May be one of: auto,
681
+ # prepend, chain, disabled.
682
+ # instrumentation.typhoeus: auto
453
683
 
454
- # Specifies a list of hostname patterns separated by commas that will match
455
- # gRPC hostnames that traffic is to be ignored by New Relic for.
456
- # New Relic's gRPC client instrumentation will ignore traffic streamed to a
457
- # host matching any of these patterns, and New Relic's gRPC server
458
- # instrumentation will ignore traffic for a server running on a host whose
459
- # hostname matches any of these patterns. By default, no traffic is ignored
460
- # when gRPC instrumentation is itself enabled.
461
- # For example, "private.com$,exception.*"
462
- # instrumentation.grpc.host_denylist: ""
684
+ # Controls auto-instrumentation of ViewComponent at startup. May be one of:
685
+ # auto, prepend, chain, disabled.
686
+ # instrumentation.view_component: auto
463
687
 
464
688
  # A dictionary of label names and values that will be applied to the data sent
465
689
  # from this agent. May also be expressed as a semicolon-delimited ; string of
466
- # colon-separated : pairs.
467
- # For example,<var>Server</var>:<var>One</var>;<var>Data Center</var>:<var>Primary</var>.
690
+ # colon-separated : pairs. For example, Server:One;Data Center:Primary.
468
691
  # labels: ""
469
692
 
470
693
  # Defines a name for the log file.
471
- # log_file_name: "newrelic_agent.log"
694
+ # log_file_name: newrelic_agent.log
472
695
 
473
696
  # Defines a path to the agent log file, excluding the filename.
474
- # log_file_path: "log/"
697
+ # log_file_path: log/
475
698
 
476
699
  # Specifies a marshaller for transmitting data to the New Relic collector.
477
700
  # Currently json is the only valid value for this setting.
@@ -487,22 +710,21 @@ common: &default_settings
487
710
  # If true, the agent obfuscates Mongo queries in transaction traces.
488
711
  # mongo.obfuscate_queries: true
489
712
 
490
- # If true, the agent captures Elasticsearch queries in transaction traces.
491
- # elasticsearch.capture_queries: true
492
-
493
- # If true, the agent obfuscates Elasticsearch queries in transaction traces.
494
- # elasticsearch.obfuscate_queries: true
495
-
496
713
  # When true, the agent transmits data about your app to the New Relic collector.
497
714
  # monitor_mode: true
498
715
 
499
- # If true, uses Module#prepend rather than alias_method for Active Record
716
+ # If true, the agent captures OpenSearch queries in transaction traces.
717
+ # opensearch.capture_queries: true
718
+
719
+ # If true, the agent obfuscates OpenSearch queries in transaction traces.
720
+ # opensearch.obfuscate_queries: true
721
+
722
+ # If true, uses Module#prepend rather than alias_method for ActiveRecord
500
723
  # instrumentation.
501
724
  # prepend_active_record_instrumentation: false
502
725
 
503
- # Specify a custom host name for display in the New Relic UI
504
- # Be be aware that you cannot rename a hostname, so please rename
505
- # process_host.display_name: "default hostname"
726
+ # Specify a custom host name for display in the New Relic UI.
727
+ # process_host.display_name: default hostname
506
728
 
507
729
  # Defines a host for communicating with the New Relic collector via a proxy
508
730
  # server.
@@ -514,7 +736,7 @@ common: &default_settings
514
736
 
515
737
  # Defines a port for communicating with the New Relic collector via a proxy
516
738
  # server.
517
- # proxy_port: nil
739
+ # proxy_port: 8080
518
740
 
519
741
  # Defines a user for communicating with the New Relic collector via a proxy
520
742
  # server.
@@ -523,15 +745,16 @@ common: &default_settings
523
745
  # Timeout for waiting on connect to complete before a rake task
524
746
  # rake.connect_timeout: 10
525
747
 
526
- # Specify an array of Rake tasks to automatically instrument.
527
- # This configuration option converts the Array to a RegEx list.
528
- # If you'd like to allow all tasks by default, use `rake.tasks: [.+]`.
529
- # Rake tasks will not be instrumented unless they're added to this list.
530
- # For more information, visit the (New Relic Rake Instrumentation docs)[/docs/apm/agents/ruby-agent/background-jobs/rake-instrumentation].
748
+ # Specify an Array of Rake tasks to automatically instrument. This configuration
749
+ # option converts the Array to a RegEx list. If you'd like to allow all tasks by
750
+ # default, use rake.tasks: [.+]. No rake tasks will be instrumented unless
751
+ # they're added to this list. For more information, visit the New Relic Rake
752
+ # Instrumentation docs.
531
753
  # rake.tasks: []
532
754
 
533
755
  # Define transactions you want the agent to ignore, by specifying a list of
534
- # patterns matching the URI you want to ignore.
756
+ # patterns matching the URI you want to ignore. For more detail, see the docs on
757
+ # ignoring specific transactions.
535
758
  # rules.ignore_url_regexes: []
536
759
 
537
760
  # Applies Language Agent Security Policy settings.
@@ -541,33 +764,54 @@ common: &default_settings
541
764
  # before shutting down.
542
765
  # send_data_on_exit: true
543
766
 
767
+ # If true, the agent will operate in a streamlined mode suitable for use with
768
+ # short-lived serverless functions. NOTE: Only AWS Lambda functions are
769
+ # supported currently and this option isn't intended for use without New Relic's
770
+ # Ruby Lambda layer offering.
771
+ # serverless_mode.enabled: false
772
+
773
+ # An array of strings that will collectively serve as a denylist for filtering
774
+ # which Sidekiq job arguments get reported to New Relic. To capture any Sidekiq
775
+ # arguments, 'job.sidekiq.args.*' must be added to the separate
776
+ # :'attributes.include' configuration option. Each string in this array will be
777
+ # turned into a regular expression via Regexp.new to permit advanced matching.
778
+ # For job argument hashes, if either a key or value matches the pair will be
779
+ # excluded. All matching job argument array elements and job argument scalars
780
+ # will be excluded.
781
+ # sidekiq.args.exclude: []
782
+
783
+ # An array of strings that will collectively serve as an allowlist for filtering
784
+ # which Sidekiq job arguments get reported to New Relic. To capture any Sidekiq
785
+ # arguments, 'job.sidekiq.args.*' must be added to the separate
786
+ # :'attributes.include' configuration option. Each string in this array will be
787
+ # turned into a regular expression via Regexp.new to permit advanced matching.
788
+ # For job argument hashes, if either a key or value matches the pair will be
789
+ # included. All matching job argument array elements and job argument scalars
790
+ # will be included.
791
+ # sidekiq.args.include: []
792
+
544
793
  # If true, the agent collects slow SQL queries.
545
- # slow_sql.enabled: false
794
+ # slow_sql.enabled: true
546
795
 
547
796
  # If true, the agent collects explain plans in slow SQL queries. If this setting
548
- # is omitted, the transaction_tracer.explain.enabled setting will be applied as
797
+ # is omitted, the transaction_tracer.explain_enabled setting will be applied as
549
798
  # the default setting for explain plans in slow SQL as well.
550
- # slow_sql.explain_enabled: false
799
+ # slow_sql.explain_enabled: true
551
800
 
552
801
  # Specify a threshold in seconds. The agent collects slow SQL queries and
553
802
  # explain plans that exceed this threshold.
554
- # slow_sql.explain_threshold: 1.0
803
+ # slow_sql.explain_threshold: 0.5
555
804
 
556
- # Defines an obfuscation level for slow SQL queries.
557
- # Valid options are obfuscated, raw, or none.
558
- # slow_sql.record_sql: none
805
+ # Defines an obfuscation level for slow SQL queries. Valid options are
806
+ # obfuscated, raw, or none.
807
+ # slow_sql.record_sql: obfuscated
559
808
 
560
809
  # Generate a longer sql_id for slow SQL traces. sql_id is used for aggregation
561
810
  # of similar queries.
562
811
  # slow_sql.use_longer_sql_id: false
563
812
 
564
813
  # If true, the agent captures attributes on span events.
565
- # span_events_attributes.enabled: true
566
-
567
- # Defines the maximum number of span events reported from a single harvest.
568
- # This can be any integer between 1 and 10000. Increasing this value may impact
569
- # memory usage.
570
- # span_events.max_samples_stored: 2000
814
+ # span_events.attributes.enabled: true
571
815
 
572
816
  # Prefix of attributes to exclude from span events. Allows * as wildcard at end.
573
817
  # span_events.attributes.exclude: []
@@ -578,6 +822,12 @@ common: &default_settings
578
822
  # If true, enables span event sampling.
579
823
  # span_events.enabled: true
580
824
 
825
+ # - Defines the maximum number of span events reported from a single harvest.
826
+ # Any Integer between 1 and 10000 is valid.'
827
+ # - When configuring the agent for AI monitoring, set to max value 10000.This
828
+ # ensures the agent captures the maximum amount of distributed traces.
829
+ # span_events.max_samples_stored: 2000
830
+
581
831
  # Sets the maximum number of span events to buffer when streaming to the trace
582
832
  # observer.
583
833
  # span_events.queue_size: 10000
@@ -588,13 +838,36 @@ common: &default_settings
588
838
  # strip_exception_messages.allowed_classes: ""
589
839
 
590
840
  # If true, the agent strips messages from all exceptions except those in the
591
- # allowlist. Enabled automatically in high security mode.
592
- # strip_exception_messages.enabled: true
841
+ # allowed classes list. Enabled automatically in high security mode.
842
+ # strip_exception_messages.enabled: false
843
+
844
+ # An array of strings to specify which keys and/or values inside a Stripe
845
+ # event's user_data hash should
846
+ # not be reported to New Relic. Each string in this array will be turned into a
847
+ # regular expression via
848
+ # Regexp.new to permit advanced matching. For each hash pair, if either the key
849
+ # or value is matched the pair
850
+ # isn't reported. By default, no user_data is reported. Use this option only if
851
+ # the
852
+ # stripe.user_data.include option is also used.
853
+ # stripe.user_data.exclude: []
854
+
855
+ # An array of strings to specify which keys inside a Stripe event's user_data
856
+ # hash should be reported
857
+ # to New Relic. Each string in this array will be turned into a regular
858
+ # expression via Regexp.new to
859
+ # enable advanced matching. Setting the value to ["."] will report all
860
+ # user_data.
861
+ # stripe.user_data.include: []
593
862
 
594
863
  # When set to true, forces a synchronous connection to the New Relic collector
595
- # during application startup. For very short-lived processes, this helps ensure # the New Relic agent has time to report.
864
+ # during application startup. For very short-lived processes, this helps ensure
865
+ # the New Relic agent has time to report.
596
866
  # sync_startup: false
597
867
 
868
+ # If true, tracer state storage is thread-local, otherwise, fiber-local
869
+ # thread_local_tracer_state: false
870
+
598
871
  # If true, enables use of the thread profiler.
599
872
  # thread_profiler.enabled: false
600
873
 
@@ -603,50 +876,57 @@ common: &default_settings
603
876
  # timeout: 120
604
877
 
605
878
  # If true, the agent captures attributes from transaction events.
606
- # transaction_events_attributes.enabled: false
879
+ # transaction_events.attributes.enabled: true
607
880
 
608
- # Prefix of attributes to exclude from transaction events.
609
- # Allows * as wildcard at end.
881
+ # Prefix of attributes to exclude from transaction events. Allows * as wildcard
882
+ # at end.
610
883
  # transaction_events.attributes.exclude: []
611
884
 
612
- # Prefix of attributes to include in transaction events.
613
- # Allows * as wildcard at end.
885
+ # Prefix of attributes to include in transaction events. Allows * as wildcard at
886
+ # end.
614
887
  # transaction_events.attributes.include: []
615
888
 
889
+ # If true, enables transaction event sampling.
890
+ # transaction_events.enabled: true
891
+
892
+ # Defines the maximum number of transaction events reported from a single
893
+ # harvest.
894
+ # transaction_events.max_samples_stored: 1200
895
+
616
896
  # If true, the agent captures attributes on transaction segments.
617
- # transaction_segments_attributes.enabled: true
897
+ # transaction_segments.attributes.enabled: true
618
898
 
619
- # Prefix of attributes to exclude from transaction segments.
620
- # Allows * as wildcard at end.
899
+ # Prefix of attributes to exclude from transaction segments. Allows * as
900
+ # wildcard at end.
621
901
  # transaction_segments.attributes.exclude: []
622
902
 
623
- # Prefix of attributes to include on transaction segments.
624
- # Allows * as wildcard at end.
903
+ # Prefix of attributes to include on transaction segments. Allows * as wildcard
904
+ # at end.
625
905
  # transaction_segments.attributes.include: []
626
906
 
627
907
  # If true, the agent captures attributes from transaction traces.
628
- # transaction_tracer.attributes.enabled: false
908
+ # transaction_tracer.attributes.enabled: true
629
909
 
630
- # Prefix of attributes to exclude from transaction traces.
631
- # Allows * as wildcard at end.
910
+ # Prefix of attributes to exclude from transaction traces. Allows * as wildcard
911
+ # at end.
632
912
  # transaction_tracer.attributes.exclude: []
633
913
 
634
- # Prefix of attributes to include in transaction traces.
635
- # Allows * as wildcard at end.
914
+ # Prefix of attributes to include in transaction traces. Allows * as wildcard at
915
+ # end.
636
916
  # transaction_tracer.attributes.include: []
637
917
 
638
918
  # If true, enables collection of transaction traces.
639
919
  # transaction_tracer.enabled: true
640
920
 
921
+ # If true, enables the collection of explain plans in transaction traces. This
922
+ # setting will also apply to explain plans in slow SQL traces if
923
+ # slow_sql.explain_enabled isn't set separately.
924
+ # transaction_tracer.explain_enabled: true
925
+
641
926
  # Threshold (in seconds) above which the agent will collect explain plans.
642
- # Relevant only when explain.enabled is true.
927
+ # Relevant only when explain_enabled is true.
643
928
  # transaction_tracer.explain_threshold: 0.5
644
929
 
645
- # If true, enables the collection of explain plans in transaction traces.
646
- # This setting will also apply to explain plans in slow SQL traces if
647
- # slow_sql.explain enabled is not set separately.
648
- # transaction_tracer.explain.enabled: true
649
-
650
930
  # Maximum number of transaction trace nodes to record in a single transaction
651
931
  # trace.
652
932
  # transaction_tracer.limit_segments: 4000
@@ -656,11 +936,12 @@ common: &default_settings
656
936
 
657
937
  # Obfuscation level for SQL queries reported in transaction trace nodes.
658
938
  # By default, this is set to obfuscated, which strips out the numeric and string
659
- # literals. If you do not want the agent to capture query information, set this
660
- # to 'none'. If you want the agent to capture all query information in its
661
- # original form, set this to 'raw'. When you enable high security mode this is
662
- # automatically set to 'obfuscated'
663
- # transaction_tracer.record_sql: 'obfuscated'
939
+ # literals.
940
+ # - If you do not want the agent to capture query information, set this to none.
941
+ # - If you want the agent to capture all query information in its original form,
942
+ # set this to raw.
943
+ # - When you enable high security mode, this is automatically set to obfuscated.
944
+ # transaction_tracer.record_sql: obfuscated
664
945
 
665
946
  # Specify a threshold in seconds. The agent includes stack traces in transaction
666
947
  # trace nodes when the stack trace duration exceeds this threshold.
@@ -689,9 +970,134 @@ common: &default_settings
689
970
  # If true, the agent automatically detects that it is running in Kubernetes.
690
971
  # utilization.detect_kubernetes: true
691
972
 
692
- # If true, the agent automatically detects that it is running in a Pivotal Cloud Foundry environment.
973
+ # If true, the agent automatically detects that it is running in a Pivotal Cloud
974
+ # Foundry environment.
693
975
  # utilization.detect_pcf: true
694
976
 
977
+ # BEGIN security agent
978
+ #
979
+ # NOTE: At this time, the security agent is intended for use only within
980
+ # a dedicated security testing environment with data that can tolerate
981
+ # modification or deletion. The security agent is available as a
982
+ # separate Ruby gem, newrelic_security. It is recommended that this
983
+ # separate gem only be introduced to a security testing environment
984
+ # by leveraging Bundler grouping like so:
985
+ #
986
+ # # Gemfile
987
+ # gem 'newrelic_rpm' # New Relic APM observability agent
988
+ # gem 'newrelic-infinite_tracing' # New Relic Infinite Tracing
989
+ #
990
+ # group :security do
991
+ # gem 'newrelic_security', require: false # New Relic security agent
992
+ # end
993
+ #
994
+ # NOTE: All "security.*" configuration parameters are related only to the
995
+ # security agent, and all other configuration parameters that may
996
+ # have "security" in the name somewhere are related to the APM agent.
997
+
998
+ # If true, the security agent is loaded (a Ruby 'require' is performed)
999
+ # security.agent.enabled: false
1000
+
1001
+ # The port the application is listening on. This setting is mandatory for
1002
+ # Passenger servers. The agent detects other servers by default.
1003
+ # security.application_info.port: nil
1004
+
1005
+ # If true, the security agent is started (the agent runs in its event loop)
1006
+ # security.enabled: false
1007
+
1008
+ # Defines API paths the security agent should ignore in IAST scans. Accepts an
1009
+ # array of regex patterns matching the URI to ignore. The regex pattern should
1010
+ # find a complete match for the URL without the endpoint. For example,
1011
+ # [".*account.*"], [".*/\api\/v1\/.*?\/login"]
1012
+ # security.exclude_from_iast_scan.api: []
1013
+
1014
+ # An array of HTTP request body keys the security agent should ignore in IAST
1015
+ # scans.
1016
+ # security.exclude_from_iast_scan.http_request_parameters.body: []
1017
+
1018
+ # An array of HTTP request headers the security agent should ignore in IAST
1019
+ # scans. The array should specify a list of patterns matching the headers to
1020
+ # ignore.
1021
+ # security.exclude_from_iast_scan.http_request_parameters.header: []
1022
+
1023
+ # An array of HTTP request query parameters the security agent should ignore in
1024
+ # IAST scans. The array should specify a list of patterns matching the HTTP
1025
+ # request query parameters to ignore.
1026
+ # security.exclude_from_iast_scan.http_request_parameters.query: []
1027
+
1028
+ # If true, disables system command injection detection in IAST scans.
1029
+ # security.exclude_from_iast_scan.iast_detection_category.command_injection: false
1030
+
1031
+ # If true, disables the detection of low-severity insecure settings. For
1032
+ # example, hash, crypto, cookie, random generators, trust boundary).
1033
+ # security.exclude_from_iast_scan.iast_detection_category.insecure_settings: false
1034
+
1035
+ # If true, disables file operation-related IAST detections (File Access &
1036
+ # Application integrity violation)
1037
+ # security.exclude_from_iast_scan.iast_detection_category.invalid_file_access: false
1038
+
1039
+ # If true, disables Javascript injection detection in IAST scans.
1040
+ # security.exclude_from_iast_scan.iast_detection_category.javascript_injection: false
1041
+
1042
+ # If true, disables LDAP injection detection in IAST scans.
1043
+ # security.exclude_from_iast_scan.iast_detection_category.ldap_injection: false
1044
+
1045
+ # If true, disables NOSQL injection detection in IAST scans.
1046
+ # security.exclude_from_iast_scan.iast_detection_category.nosql_injection: false
1047
+
1048
+ # If true, disables Reflected Cross-Site Scripting (RXSS) detection in IAST
1049
+ # scans.
1050
+ # security.exclude_from_iast_scan.iast_detection_category.rxss: false
1051
+
1052
+ # If true, disables SQL injection detection in IAST scans.
1053
+ # security.exclude_from_iast_scan.iast_detection_category.sql_injection: false
1054
+
1055
+ # If true, disables Sever-Side Request Forgery (SSRF) detection in IAST scans.
1056
+ # security.exclude_from_iast_scan.iast_detection_category.ssrf: false
1057
+
1058
+ # If true, disables XPATH injection detection in IAST scans.
1059
+ # security.exclude_from_iast_scan.iast_detection_category.xpath_injection: false
1060
+
1061
+ # A unique test identifier when runnning IAST in a CI/CD environment to
1062
+ # differentiate between different test runs. For example, a build number.
1063
+ # security.iast_test_identifier: nil
1064
+
1065
+ # Defines the mode for the security agent to operate in. Currently only IAST is
1066
+ # supported
1067
+ # security.mode: IAST
1068
+
1069
+ # Sets the maximum number of HTTP requests allowed for the IAST scan per minute.
1070
+ # Any Integer between 12 and 3600 is valid. The default value is 3600.
1071
+ # security.scan_controllers.iast_scan_request_rate_limit: 3600
1072
+
1073
+ # If true, enables the sending of HTTP responses bodies. Disabling this also
1074
+ # disables Reflected Cross-Site Scripting (RXSS) vulnerability detection.
1075
+ # security.scan_controllers.report_http_response_body: true
1076
+
1077
+ # The number of application instances for a specific entity to perform IAST
1078
+ # analysis on.
1079
+ # security.scan_controllers.scan_instance_count: 0
1080
+
1081
+ # If true, allows IAST to continuously gather trace data in the background. The
1082
+ # security agent uses collected data to perform an IAST scan at the scheduled
1083
+ # time.
1084
+ # security.scan_schedule.always_sample_traces: false
1085
+
1086
+ # Specifies the delay time (in minutes) before the IAST scan begins after the
1087
+ # application starts.
1088
+ # security.scan_schedule.delay: 0
1089
+
1090
+ # Indicates the duration (in minutes) for which the IAST scan will be performed.
1091
+ # security.scan_schedule.duration: 0
1092
+
1093
+ # Specifies a cron expression that sets when the IAST scan should run.
1094
+ # security.scan_schedule.schedule: ""
1095
+
1096
+ # Defines the endpoint URL for posting security-related data
1097
+ # security.validator_service_url: wss://csec.nr-data.net
1098
+
1099
+ # END security agent
1100
+
695
1101
  # Environment-specific settings are in this section.
696
1102
  # RAILS_ENV or RACK_ENV (as appropriate) is used to determine the environment.
697
1103
  # If your application has other named environments, configure them here.