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.
- checksums.yaml +4 -4
- data/.build_ignore +27 -0
- data/CHANGELOG.md +841 -7
- data/CONTRIBUTING.md +2 -9
- data/README.md +25 -22
- data/Rakefile +2 -2
- data/bin/newrelic +3 -9
- data/bin/newrelic_rpm +15 -0
- data/init.rb +2 -2
- data/lib/boot/strap.rb +102 -0
- data/lib/new_relic/agent/agent.rb +11 -2
- data/lib/new_relic/agent/agent_helpers/connect.rb +13 -8
- data/lib/new_relic/agent/agent_helpers/harvest.rb +3 -0
- data/lib/new_relic/agent/agent_helpers/shutdown.rb +4 -1
- data/lib/new_relic/agent/agent_helpers/special_startup.rb +1 -1
- data/lib/new_relic/agent/agent_helpers/start_worker_thread.rb +4 -3
- data/lib/new_relic/agent/agent_helpers/startup.rb +11 -3
- data/lib/new_relic/agent/agent_logger.rb +3 -1
- data/lib/new_relic/agent/attribute_filter.rb +3 -3
- data/lib/new_relic/agent/attribute_pre_filtering.rb +109 -0
- data/lib/new_relic/agent/aws.rb +68 -0
- data/lib/new_relic/agent/configuration/default_source.rb +918 -166
- data/lib/new_relic/agent/configuration/environment_source.rb +15 -3
- data/lib/new_relic/agent/configuration/high_security_source.rb +1 -0
- data/lib/new_relic/agent/configuration/manager.rb +72 -11
- data/lib/new_relic/agent/configuration/security_policy_source.rb +11 -0
- data/lib/new_relic/agent/configuration/yaml_source.rb +22 -2
- data/lib/new_relic/agent/connect/request_builder.rb +1 -1
- data/lib/new_relic/agent/custom_event_aggregator.rb +27 -1
- data/lib/new_relic/agent/database/obfuscation_helpers.rb +11 -11
- data/lib/new_relic/agent/database/obfuscator.rb +1 -0
- data/lib/new_relic/agent/database.rb +41 -1
- data/lib/new_relic/agent/database_adapter.rb +1 -1
- data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -1
- data/lib/new_relic/agent/datastores/redis.rb +1 -1
- data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +1 -1
- data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +4 -8
- data/lib/new_relic/agent/distributed_tracing.rb +5 -3
- data/lib/new_relic/agent/error_collector.rb +40 -11
- data/lib/new_relic/agent/event_loop.rb +1 -1
- data/lib/new_relic/agent/external.rb +2 -0
- data/lib/new_relic/agent/harvester.rb +1 -1
- data/lib/new_relic/agent/health_check.rb +136 -0
- data/lib/new_relic/agent/http_clients/abstract.rb +4 -0
- data/lib/new_relic/agent/http_clients/async_http_wrappers.rb +80 -0
- data/lib/new_relic/agent/http_clients/curb_wrappers.rb +1 -3
- data/lib/new_relic/agent/http_clients/ethon_wrappers.rb +109 -0
- data/lib/new_relic/agent/http_clients/excon_wrappers.rb +0 -3
- data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +1 -3
- data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +0 -3
- data/lib/new_relic/agent/http_clients/httpx_wrappers.rb +91 -0
- data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +1 -4
- data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +0 -3
- data/lib/new_relic/agent/http_clients/uri_util.rb +1 -1
- data/lib/new_relic/agent/instrumentation/action_controller_other_subscriber.rb +1 -1
- data/lib/new_relic/agent/instrumentation/action_dispatch.rb +1 -1
- data/lib/new_relic/agent/instrumentation/action_dispatch_subscriber.rb +1 -1
- data/lib/new_relic/agent/instrumentation/action_mailbox.rb +1 -1
- data/lib/new_relic/agent/instrumentation/action_mailer.rb +1 -1
- data/lib/new_relic/agent/instrumentation/active_job.rb +1 -1
- data/lib/new_relic/agent/instrumentation/active_job_subscriber.rb +6 -2
- data/lib/new_relic/agent/instrumentation/active_merchant.rb +3 -16
- data/lib/new_relic/agent/instrumentation/active_record.rb +8 -13
- data/lib/new_relic/agent/instrumentation/active_record_helper.rb +8 -5
- data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +13 -10
- data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +2 -2
- data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +9 -16
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/chain.rb +69 -0
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/instrumentation.rb +17 -0
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger/prepend.rb +37 -0
- data/lib/new_relic/agent/instrumentation/active_support_broadcast_logger.rb +21 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/active_support_logger.rb +3 -3
- data/lib/new_relic/agent/instrumentation/async_http/chain.rb +23 -0
- data/lib/new_relic/agent/instrumentation/async_http/instrumentation.rb +37 -0
- data/lib/new_relic/agent/instrumentation/async_http/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/async_http.rb +27 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/instrumentation.rb +66 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_firehose/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_firehose.rb +22 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/instrumentation.rb +91 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_kinesis.rb +22 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/chain.rb +33 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/instrumentation.rb +93 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_lambda/prepend.rb +23 -0
- data/lib/new_relic/agent/instrumentation/aws_sdk_lambda.rb +23 -0
- data/lib/new_relic/agent/instrumentation/aws_sqs/chain.rb +37 -0
- data/lib/new_relic/agent/instrumentation/aws_sqs/instrumentation.rb +67 -0
- data/lib/new_relic/agent/instrumentation/aws_sqs/prepend.rb +21 -0
- data/lib/new_relic/agent/instrumentation/aws_sqs.rb +23 -0
- data/lib/new_relic/agent/instrumentation/bunny/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +23 -0
- data/lib/new_relic/agent/instrumentation/bunny.rb +4 -5
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/instrumentation.rb +3 -4
- data/lib/new_relic/agent/instrumentation/concurrent_ruby/prepend.rb +1 -1
- data/lib/new_relic/agent/instrumentation/concurrent_ruby.rb +2 -3
- data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +5 -2
- data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/curb.rb +4 -5
- data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +1 -0
- data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +3 -0
- data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +0 -23
- data/lib/new_relic/agent/instrumentation/dynamodb/chain.rb +27 -0
- data/lib/new_relic/agent/instrumentation/dynamodb/instrumentation.rb +64 -0
- data/lib/new_relic/agent/instrumentation/dynamodb/prepend.rb +19 -0
- data/lib/new_relic/agent/instrumentation/dynamodb.rb +23 -0
- data/lib/new_relic/agent/instrumentation/elasticsearch/chain.rb +2 -3
- data/lib/new_relic/agent/instrumentation/elasticsearch/instrumentation.rb +65 -10
- data/lib/new_relic/agent/instrumentation/elasticsearch.rb +2 -4
- data/lib/new_relic/agent/instrumentation/ethon/chain.rb +39 -0
- data/lib/new_relic/agent/instrumentation/ethon/instrumentation.rb +105 -0
- data/lib/new_relic/agent/instrumentation/ethon/prepend.rb +35 -0
- data/lib/new_relic/agent/instrumentation/ethon.rb +35 -0
- data/lib/new_relic/agent/instrumentation/excon/middleware.rb +3 -0
- data/lib/new_relic/agent/instrumentation/excon.rb +1 -17
- data/lib/new_relic/agent/instrumentation/fiber/chain.rb +11 -4
- data/lib/new_relic/agent/instrumentation/fiber/instrumentation.rb +2 -6
- data/lib/new_relic/agent/instrumentation/fiber/prepend.rb +10 -3
- data/lib/new_relic/agent/instrumentation/fiber.rb +1 -3
- data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +4 -3
- data/lib/new_relic/agent/instrumentation/grape.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +5 -2
- data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +1 -1
- data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +5 -1
- data/lib/new_relic/agent/instrumentation/grpc_client.rb +2 -2
- data/lib/new_relic/agent/instrumentation/grpc_server.rb +2 -2
- data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/httpclient.rb +1 -5
- data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/httprb.rb +0 -1
- data/lib/new_relic/agent/instrumentation/httpx/chain.rb +20 -0
- data/lib/new_relic/agent/instrumentation/httpx/instrumentation.rb +51 -0
- data/lib/new_relic/agent/instrumentation/httpx/prepend.rb +15 -0
- data/lib/new_relic/agent/instrumentation/httpx.rb +23 -0
- data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +3 -0
- data/lib/new_relic/agent/instrumentation/logger.rb +1 -3
- data/lib/new_relic/agent/instrumentation/logstasher/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/logstasher/instrumentation.rb +24 -0
- data/lib/new_relic/agent/instrumentation/logstasher/prepend.rb +13 -0
- data/lib/new_relic/agent/instrumentation/logstasher.rb +25 -0
- data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +4 -2
- data/lib/new_relic/agent/instrumentation/memcache/helper.rb +2 -2
- data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +13 -4
- data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +4 -2
- data/lib/new_relic/agent/instrumentation/memcache.rb +4 -5
- data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +3 -5
- data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +13 -3
- data/lib/new_relic/agent/instrumentation/net_http.rb +2 -1
- data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +4 -2
- data/lib/new_relic/agent/instrumentation/opensearch/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/opensearch/instrumentation.rb +66 -0
- data/lib/new_relic/agent/instrumentation/opensearch/prepend.rb +13 -0
- data/lib/new_relic/agent/instrumentation/opensearch.rb +23 -0
- data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/padrino.rb +3 -3
- data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -1
- data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +9 -0
- data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +4 -0
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +1 -1
- data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +10 -5
- data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/rake.rb +1 -2
- data/lib/new_relic/agent/instrumentation/rdkafka/chain.rb +72 -0
- data/lib/new_relic/agent/instrumentation/rdkafka/instrumentation.rb +70 -0
- data/lib/new_relic/agent/instrumentation/rdkafka/prepend.rb +67 -0
- data/lib/new_relic/agent/instrumentation/rdkafka.rb +25 -0
- data/lib/new_relic/agent/instrumentation/redis/cluster_middleware.rb +26 -0
- data/lib/new_relic/agent/instrumentation/redis/constants.rb +2 -2
- data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +18 -11
- data/lib/new_relic/agent/instrumentation/redis/middleware.rb +3 -0
- data/lib/new_relic/agent/instrumentation/redis.rb +11 -5
- data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/resque.rb +8 -6
- data/lib/new_relic/agent/instrumentation/roda/chain.rb +43 -0
- data/lib/new_relic/agent/instrumentation/roda/ignorer.rb +45 -0
- data/lib/new_relic/agent/instrumentation/roda/instrumentation.rb +68 -0
- data/lib/new_relic/agent/instrumentation/roda/prepend.rb +24 -0
- data/lib/new_relic/agent/instrumentation/roda/roda_transaction_namer.rb +29 -0
- data/lib/new_relic/agent/instrumentation/roda.rb +36 -0
- data/lib/new_relic/agent/instrumentation/ruby_kafka/chain.rb +55 -0
- data/lib/new_relic/agent/instrumentation/ruby_kafka/instrumentation.rb +67 -0
- data/lib/new_relic/agent/instrumentation/ruby_kafka/prepend.rb +60 -0
- data/lib/new_relic/agent/instrumentation/ruby_kafka.rb +25 -0
- data/lib/new_relic/agent/instrumentation/ruby_openai/chain.rb +36 -0
- data/lib/new_relic/agent/instrumentation/ruby_openai/instrumentation.rb +196 -0
- data/lib/new_relic/agent/instrumentation/ruby_openai/prepend.rb +20 -0
- data/lib/new_relic/agent/instrumentation/ruby_openai.rb +35 -0
- data/lib/new_relic/agent/instrumentation/sequel.rb +1 -1
- data/lib/new_relic/agent/instrumentation/sidekiq/client.rb +4 -0
- data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delay_extensions.rb +24 -0
- data/lib/new_relic/agent/instrumentation/sidekiq/extensions/delayed_class.rb +2 -2
- data/lib/new_relic/agent/instrumentation/sidekiq/server.rb +26 -3
- data/lib/new_relic/agent/instrumentation/sidekiq.rb +13 -16
- data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +1 -1
- data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +1 -3
- data/lib/new_relic/agent/instrumentation/sinatra.rb +3 -19
- data/lib/new_relic/agent/instrumentation/stripe.rb +28 -0
- data/lib/new_relic/agent/instrumentation/stripe_subscriber.rb +98 -0
- data/lib/new_relic/agent/instrumentation/thread/chain.rb +1 -1
- data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +1 -5
- data/lib/new_relic/agent/instrumentation/thread/prepend.rb +1 -1
- data/lib/new_relic/agent/instrumentation/thread.rb +0 -2
- data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +4 -0
- data/lib/new_relic/agent/instrumentation/tilt.rb +0 -4
- data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +7 -3
- data/lib/new_relic/agent/instrumentation/typhoeus.rb +0 -1
- data/lib/new_relic/agent/instrumentation/view_component/chain.rb +21 -0
- data/lib/new_relic/agent/instrumentation/view_component/instrumentation.rb +45 -0
- data/lib/{tasks/instrumentation_generator/templates/instrumentation.tt → new_relic/agent/instrumentation/view_component/prepend.rb} +4 -4
- data/lib/new_relic/agent/instrumentation/view_component.rb +24 -0
- data/lib/new_relic/agent/javascript_instrumentor.rb +2 -4
- data/lib/new_relic/agent/llm/chat_completion_message.rb +25 -0
- data/lib/new_relic/agent/llm/chat_completion_summary.rb +66 -0
- data/lib/new_relic/agent/llm/embedding.rb +60 -0
- data/lib/new_relic/agent/llm/llm_event.rb +95 -0
- data/lib/new_relic/agent/llm/response_headers.rb +80 -0
- data/lib/new_relic/agent/llm.rb +49 -0
- data/lib/new_relic/agent/local_log_decorator.rb +20 -3
- data/lib/new_relic/agent/log_event_aggregator.rb +149 -26
- data/lib/new_relic/agent/log_event_attributes.rb +115 -0
- data/lib/new_relic/agent/logging.rb +5 -5
- data/lib/new_relic/agent/messaging.rb +18 -7
- data/lib/new_relic/agent/method_tracer.rb +4 -1
- data/lib/new_relic/agent/method_tracer_helpers.rb +26 -5
- data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +1 -1
- data/lib/new_relic/agent/monitors/synthetics_monitor.rb +12 -1
- data/lib/new_relic/agent/new_relic_service/encoders.rb +2 -2
- data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +2 -2
- data/lib/new_relic/agent/new_relic_service.rb +61 -28
- data/lib/new_relic/agent/obfuscator.rb +0 -2
- data/lib/new_relic/agent/opentelemetry/context/propagation/trace_propagator.rb +66 -0
- data/lib/new_relic/agent/opentelemetry/context/propagation.rb +15 -0
- data/lib/{tasks/instrumentation_generator/templates/Envfile.tt → new_relic/agent/opentelemetry/context.rb} +9 -5
- data/lib/new_relic/agent/opentelemetry/trace/span.rb +31 -0
- data/lib/new_relic/agent/opentelemetry/trace/tracer.rb +129 -0
- data/lib/new_relic/agent/opentelemetry/trace/tracer_provider.rb +18 -0
- data/lib/new_relic/agent/opentelemetry/trace.rb +15 -0
- data/lib/new_relic/agent/opentelemetry/transaction_patch.rb +69 -0
- data/lib/new_relic/agent/opentelemetry_bridge.rb +32 -0
- data/lib/new_relic/agent/parameter_filtering.rb +1 -1
- data/lib/new_relic/agent/pipe_channel_manager.rb +2 -2
- data/lib/new_relic/agent/pipe_service.rb +1 -1
- data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -2
- data/lib/new_relic/agent/rules_engine.rb +1 -1
- data/lib/new_relic/agent/sampler.rb +1 -0
- data/lib/new_relic/agent/samplers/cpu_sampler.rb +1 -1
- data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
- data/lib/new_relic/agent/serverless_handler.rb +406 -0
- data/lib/new_relic/agent/serverless_handler_event_sources.json +155 -0
- data/lib/new_relic/agent/serverless_handler_event_sources.rb +49 -0
- data/lib/new_relic/agent/span_event_primitive.rb +32 -15
- data/lib/new_relic/agent/sql_sampler.rb +0 -1
- data/lib/new_relic/agent/system_info.rb +40 -0
- data/lib/new_relic/agent/threading/agent_thread.rb +1 -2
- data/lib/new_relic/agent/threading/backtrace_node.rb +10 -1
- data/lib/new_relic/agent/tracer.rb +16 -16
- data/lib/new_relic/agent/transaction/abstract_segment.rb +103 -41
- data/lib/new_relic/agent/transaction/datastore_segment.rb +1 -1
- data/lib/new_relic/agent/transaction/distributed_tracer.rb +3 -3
- data/lib/new_relic/agent/transaction/distributed_tracing.rb +7 -8
- data/lib/new_relic/agent/transaction/external_request_segment.rb +5 -12
- data/lib/new_relic/agent/transaction/message_broker_segment.rb +5 -3
- data/lib/new_relic/agent/transaction/request_attributes.rb +54 -11
- data/lib/new_relic/agent/transaction/trace_context.rb +34 -5
- data/lib/new_relic/agent/transaction/tracing.rb +20 -4
- data/lib/new_relic/agent/transaction.rb +38 -13
- data/lib/new_relic/agent/transaction_error_primitive.rb +39 -19
- data/lib/new_relic/agent/transaction_event_primitive.rb +19 -0
- data/lib/new_relic/agent/transaction_time_aggregator.rb +1 -1
- data/lib/new_relic/agent/utilization/ecs.rb +22 -0
- data/lib/new_relic/agent/utilization/ecs_v4.rb +22 -0
- data/lib/new_relic/agent/utilization/gcp.rb +1 -3
- data/lib/new_relic/agent/utilization/vendor.rb +5 -7
- data/lib/new_relic/agent/utilization_data.rb +40 -5
- data/lib/new_relic/agent/vm/{mri_vm.rb → c_ruby_vm.rb} +10 -18
- data/lib/new_relic/agent/vm.rb +2 -2
- data/lib/new_relic/agent/worker_loop.rb +1 -1
- data/lib/new_relic/agent.rb +286 -17
- data/lib/new_relic/base64.rb +25 -0
- data/lib/new_relic/cli/command.rb +6 -3
- data/lib/new_relic/constants.rb +8 -0
- data/lib/new_relic/control/class_methods.rb +1 -7
- data/lib/new_relic/control/frameworks/grape.rb +14 -0
- data/lib/new_relic/control/frameworks/padrino.rb +14 -0
- data/lib/new_relic/control/frameworks/rails.rb +17 -5
- data/lib/new_relic/control/frameworks/rails4.rb +1 -3
- data/lib/new_relic/control/frameworks/roda.rb +20 -0
- data/lib/new_relic/control/instance_methods.rb +13 -0
- data/lib/new_relic/control/instrumentation.rb +2 -16
- data/lib/new_relic/control/private_instance_methods.rb +4 -0
- data/lib/new_relic/control/security_interface.rb +57 -0
- data/lib/new_relic/control.rb +1 -1
- data/lib/new_relic/dependency_detection.rb +25 -13
- data/lib/new_relic/environment_report.rb +2 -2
- data/lib/new_relic/helper.rb +22 -0
- data/lib/new_relic/language_support.rb +12 -1
- data/lib/new_relic/latest_changes.rb +1 -1
- data/lib/new_relic/local_environment.rb +31 -18
- data/lib/new_relic/noticed_error.rb +5 -2
- data/lib/new_relic/rack/agent_hooks.rb +1 -1
- data/lib/new_relic/rack/agent_middleware.rb +0 -16
- data/lib/new_relic/rack/browser_monitoring.rb +29 -13
- data/lib/new_relic/supportability_helper.rb +5 -1
- data/lib/new_relic/thread_local_storage.rb +31 -0
- data/lib/new_relic/traced_thread.rb +2 -3
- data/lib/new_relic/version.rb +1 -1
- data/lib/sequel/extensions/new_relic_instrumentation.rb +4 -3
- data/lib/tasks/bump_version.rake +21 -0
- data/lib/tasks/config.rake +11 -5
- data/lib/tasks/coverage_report.rake +1 -1
- data/lib/tasks/gha.rake +31 -0
- data/lib/tasks/helpers/config.html.erb +94 -0
- data/lib/tasks/helpers/format.rb +11 -7
- data/lib/tasks/helpers/newrelicyml.rb +211 -0
- data/lib/tasks/helpers/version_bump.rb +62 -0
- data/lib/tasks/newrelic.rb +1 -0
- data/lib/tasks/newrelicyml.rake +13 -0
- data/lib/tasks/tests.rake +71 -0
- data/newrelic.yml +657 -251
- data/newrelic_rpm.gemspec +17 -10
- data/test/agent_helper.rb +38 -4
- metadata +230 -44
- data/.gitignore +0 -43
- data/.project +0 -23
- data/.rubocop.yml +0 -1909
- data/.rubocop_todo.yml +0 -61
- data/.simplecov +0 -15
- data/.snyk +0 -11
- data/.yardopts +0 -27
- data/Brewfile +0 -12
- data/DOCKER.md +0 -167
- data/Dockerfile +0 -10
- data/Guardfile +0 -26
- data/bin/newrelic_cmd +0 -6
- data/config/database.yml +0 -5
- data/config.dot +0 -278
- data/docker-compose.yml +0 -107
- data/lefthook.yml +0 -9
- data/lib/new_relic/agent/range_extensions.rb +0 -27
- data/lib/tasks/helpers/removers.rb +0 -33
- data/lib/tasks/instrumentation_generator/README.md +0 -63
- data/lib/tasks/instrumentation_generator/TODO.md +0 -33
- data/lib/tasks/instrumentation_generator/instrumentation.thor +0 -121
- data/lib/tasks/instrumentation_generator/templates/chain.tt +0 -22
- data/lib/tasks/instrumentation_generator/templates/chain_method.tt +0 -8
- data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +0 -29
- data/lib/tasks/instrumentation_generator/templates/instrumentation_method.tt +0 -3
- data/lib/tasks/instrumentation_generator/templates/newrelic.yml.tt +0 -19
- data/lib/tasks/instrumentation_generator/templates/prepend.tt +0 -13
- data/lib/tasks/instrumentation_generator/templates/prepend_method.tt +0 -3
- data/lib/tasks/instrumentation_generator/templates/test.tt +0 -15
- data/lib/tasks/multiverse.rake +0 -6
- data/lib/tasks/multiverse.rb +0 -83
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
# frozen_string_literal: true
|
|
4
4
|
|
|
5
5
|
require 'forwardable'
|
|
6
|
+
require_relative '../../constants'
|
|
6
7
|
|
|
7
8
|
module NewRelic
|
|
8
9
|
module Agent
|
|
@@ -14,30 +15,6 @@ module NewRelic
|
|
|
14
15
|
end
|
|
15
16
|
end
|
|
16
17
|
|
|
17
|
-
# Combines potentially two properties into one.
|
|
18
|
-
# Given the example:
|
|
19
|
-
# :disable_net_http and :prepend_net_instrumentation
|
|
20
|
-
# if :disable_net_http is true, then returned value is "disabled"
|
|
21
|
-
# if :prepend_net_instrumentation is false, then returned value is "chain"
|
|
22
|
-
# otherwise, "auto" is returned.
|
|
23
|
-
#
|
|
24
|
-
# Intent is:
|
|
25
|
-
# - if user sets disable_xxx property, then don't instrument
|
|
26
|
-
# - if user set prepend to `false` then we use method_alias chaining
|
|
27
|
-
# - auto, when returned means, try to use prepend unless conflicting gems discovered
|
|
28
|
-
#
|
|
29
|
-
def self.instrumentation_value_of(disable_key, prepend_key = nil)
|
|
30
|
-
proc do
|
|
31
|
-
if NewRelic::Agent.config[disable_key]
|
|
32
|
-
'disabled'
|
|
33
|
-
elsif prepend_key && !NewRelic::Agent.config[prepend_key]
|
|
34
|
-
'chain'
|
|
35
|
-
else
|
|
36
|
-
'auto'
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
18
|
def self.instrumentation_value_from_boolean(key)
|
|
42
19
|
proc do
|
|
43
20
|
NewRelic::Agent.config[key] ? 'auto' : 'disabled'
|
|
@@ -48,7 +25,7 @@ module NewRelic
|
|
|
48
25
|
# Does not appear in logs.
|
|
49
26
|
def self.deprecated_description(new_setting, description)
|
|
50
27
|
link_ref = new_setting.to_s.tr('.', '-')
|
|
51
|
-
%{Please see: [#{new_setting}](
|
|
28
|
+
%{Please see: [#{new_setting}](##{link_ref}). \n\n#{description}}
|
|
52
29
|
end
|
|
53
30
|
|
|
54
31
|
class Boolean
|
|
@@ -58,6 +35,15 @@ module NewRelic
|
|
|
58
35
|
end
|
|
59
36
|
|
|
60
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
|
+
|
|
61
47
|
attr_reader :defaults
|
|
62
48
|
|
|
63
49
|
extend Forwardable
|
|
@@ -75,12 +61,33 @@ module NewRelic
|
|
|
75
61
|
result
|
|
76
62
|
end
|
|
77
63
|
|
|
64
|
+
def self.default_settings(key)
|
|
65
|
+
::NewRelic::Agent::Configuration::DEFAULTS[key]
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def self.value_from_defaults(key, subkey)
|
|
69
|
+
default_settings(key)&.send(:[], subkey)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def self.allowlist_for(key)
|
|
73
|
+
value_from_defaults(key, :allowlist)
|
|
74
|
+
end
|
|
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
|
+
|
|
82
|
+
def self.default_for(key)
|
|
83
|
+
value_from_defaults(key, :default)
|
|
84
|
+
end
|
|
85
|
+
|
|
78
86
|
def self.transform_for(key)
|
|
79
|
-
|
|
80
|
-
default_settings[:transform] if default_settings
|
|
87
|
+
value_from_defaults(key, :transform)
|
|
81
88
|
end
|
|
82
89
|
|
|
83
|
-
def self.config_search_paths
|
|
90
|
+
def self.config_search_paths
|
|
84
91
|
proc {
|
|
85
92
|
yaml = 'newrelic.yml'
|
|
86
93
|
config_yaml = File.join('config', yaml)
|
|
@@ -132,13 +139,16 @@ module NewRelic
|
|
|
132
139
|
case Rails::VERSION::MAJOR
|
|
133
140
|
when 3
|
|
134
141
|
:rails3
|
|
135
|
-
when 4..
|
|
142
|
+
when 4..8
|
|
136
143
|
:rails_notifications
|
|
137
144
|
else
|
|
138
145
|
::NewRelic::Agent.logger.warn("Detected untested Rails version #{Rails::VERSION::STRING}")
|
|
139
146
|
:rails_notifications
|
|
140
147
|
end
|
|
148
|
+
when defined?(::Padrino) && defined?(::Padrino::PathRouter::Router) then :padrino
|
|
141
149
|
when defined?(::Sinatra) && defined?(::Sinatra::Base) then :sinatra
|
|
150
|
+
when defined?(::Roda) then :roda
|
|
151
|
+
when defined?(::Grape) then :grape
|
|
142
152
|
when defined?(::NewRelic::IA) then :external
|
|
143
153
|
else :ruby
|
|
144
154
|
end
|
|
@@ -235,6 +245,22 @@ module NewRelic
|
|
|
235
245
|
end
|
|
236
246
|
end
|
|
237
247
|
|
|
248
|
+
def self.convert_to_hash(value)
|
|
249
|
+
return value if value.is_a?(Hash)
|
|
250
|
+
|
|
251
|
+
if value.is_a?(String)
|
|
252
|
+
return value.split(',').each_with_object({}) do |item, hash|
|
|
253
|
+
key, value = item.split('=')
|
|
254
|
+
hash[key] = value
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
raise ArgumentError.new(
|
|
259
|
+
"Config value '#{value}' of " \
|
|
260
|
+
"class #{value.class} couldn't be turned into a Hash."
|
|
261
|
+
)
|
|
262
|
+
end
|
|
263
|
+
|
|
238
264
|
SEMICOLON = ';'.freeze
|
|
239
265
|
def self.convert_to_list_on_semicolon(value)
|
|
240
266
|
case value
|
|
@@ -319,6 +345,7 @@ module NewRelic
|
|
|
319
345
|
'webpacker:compile'
|
|
320
346
|
].join(',').freeze
|
|
321
347
|
|
|
348
|
+
# rubocop:disable Metrics/CollectionLiteralLength
|
|
322
349
|
DEFAULTS = {
|
|
323
350
|
# Critical
|
|
324
351
|
:agent_enabled => {
|
|
@@ -342,7 +369,8 @@ module NewRelic
|
|
|
342
369
|
:public => true,
|
|
343
370
|
:type => String,
|
|
344
371
|
:allowed_from_server => false,
|
|
345
|
-
:
|
|
372
|
+
:exclude_from_reported_settings => true,
|
|
373
|
+
:description => 'Your New Relic <InlinePopover type="licenseKey" />.'
|
|
346
374
|
},
|
|
347
375
|
:log_level => {
|
|
348
376
|
:default => 'info',
|
|
@@ -359,9 +387,31 @@ module NewRelic
|
|
|
359
387
|
:allowed_from_server => false,
|
|
360
388
|
:description => <<~DESCRIPTION
|
|
361
389
|
An array of ActiveSupport custom event names to subscribe to and instrument. For example,
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
390
|
+
\t\t- one.custom.event
|
|
391
|
+
\t\t- another.event
|
|
392
|
+
\t\t- a.third.event
|
|
393
|
+
DESCRIPTION
|
|
394
|
+
},
|
|
395
|
+
:'ai_monitoring.enabled' => {
|
|
396
|
+
:default => false,
|
|
397
|
+
:public => true,
|
|
398
|
+
:type => Boolean,
|
|
399
|
+
:allowed_from_server => false,
|
|
400
|
+
:description => 'If `false`, all LLM instrumentation (OpenAI only for now) will be disabled and no metrics, events, or spans will be sent. AI Monitoring is automatically disabled if `high_security` mode is enabled.'
|
|
401
|
+
},
|
|
402
|
+
:'ai_monitoring.record_content.enabled' => {
|
|
403
|
+
:default => true,
|
|
404
|
+
:public => true,
|
|
405
|
+
:type => Boolean,
|
|
406
|
+
:allowed_from_server => false,
|
|
407
|
+
:description => <<~DESCRIPTION
|
|
408
|
+
If `false`, LLM instrumentation (OpenAI only for now) will not capture input and output content on specific LLM events.
|
|
409
|
+
|
|
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.
|
|
365
415
|
DESCRIPTION
|
|
366
416
|
},
|
|
367
417
|
# this is only set via server side config
|
|
@@ -377,7 +427,8 @@ module NewRelic
|
|
|
377
427
|
:public => true,
|
|
378
428
|
:type => String,
|
|
379
429
|
:allowed_from_server => false,
|
|
380
|
-
:
|
|
430
|
+
:exclude_from_reported_settings => true,
|
|
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.'
|
|
381
432
|
},
|
|
382
433
|
:backport_fast_active_record_connection_lookup => {
|
|
383
434
|
:default => false,
|
|
@@ -392,7 +443,7 @@ module NewRelic
|
|
|
392
443
|
:public => true,
|
|
393
444
|
:type => String,
|
|
394
445
|
:allowed_from_server => false,
|
|
395
|
-
:description => "Manual override for the path to your local CA bundle. This CA bundle
|
|
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."
|
|
396
447
|
},
|
|
397
448
|
:capture_memcache_keys => {
|
|
398
449
|
:default => false,
|
|
@@ -409,9 +460,9 @@ module NewRelic
|
|
|
409
460
|
:description => <<~DESCRIPTION
|
|
410
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).
|
|
411
462
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
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>
|
|
415
466
|
DESCRIPTION
|
|
416
467
|
},
|
|
417
468
|
:'clear_transaction_state_after_fork' => {
|
|
@@ -421,12 +472,26 @@ module NewRelic
|
|
|
421
472
|
:allowed_from_server => false,
|
|
422
473
|
:description => 'If `true`, the agent will clear `Tracer::State` in `Agent.drop_buffered_data`.'
|
|
423
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
|
+
},
|
|
424
483
|
:config_path => {
|
|
425
484
|
:default => DefaultSource.config_path,
|
|
426
485
|
:public => true,
|
|
427
486
|
:type => String,
|
|
428
487
|
:allowed_from_server => false,
|
|
429
|
-
:description =>
|
|
488
|
+
:description => <<~DESC
|
|
489
|
+
Path to `newrelic.yml`. If undefined, the agent checks the following directories (in order):
|
|
490
|
+
\t- `config/newrelic.yml`
|
|
491
|
+
\t- `newrelic.yml`
|
|
492
|
+
\t- `$HOME/.newrelic/newrelic.yml`
|
|
493
|
+
\t- `$HOME/newrelic.yml`
|
|
494
|
+
DESC
|
|
430
495
|
},
|
|
431
496
|
:'exclude_newrelic_header' => {
|
|
432
497
|
:default => false,
|
|
@@ -440,12 +505,14 @@ module NewRelic
|
|
|
440
505
|
:public => true,
|
|
441
506
|
:type => Boolean,
|
|
442
507
|
:allowed_from_server => false,
|
|
443
|
-
:description =>
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
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
|
|
449
516
|
},
|
|
450
517
|
:high_security => {
|
|
451
518
|
:default => false,
|
|
@@ -552,6 +619,13 @@ module NewRelic
|
|
|
552
619
|
:allowed_from_server => false,
|
|
553
620
|
:description => 'When set to `true`, forces a synchronous connection to the New Relic [collector](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) during application startup. For very short-lived processes, this helps ensure the New Relic agent has time to report.'
|
|
554
621
|
},
|
|
622
|
+
:thread_local_tracer_state => {
|
|
623
|
+
:default => false,
|
|
624
|
+
:public => true,
|
|
625
|
+
:type => Boolean,
|
|
626
|
+
:allowed_from_server => false,
|
|
627
|
+
:description => 'If `true`, tracer state storage is thread-local, otherwise, fiber-local'
|
|
628
|
+
},
|
|
555
629
|
:timeout => {
|
|
556
630
|
:default => 2 * 60, # 2 minutes
|
|
557
631
|
:public => true,
|
|
@@ -572,7 +646,7 @@ module NewRelic
|
|
|
572
646
|
:public => true,
|
|
573
647
|
:type => Boolean,
|
|
574
648
|
:allowed_from_server => true,
|
|
575
|
-
:description =>
|
|
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."
|
|
576
650
|
},
|
|
577
651
|
:'transaction_tracer.explain_threshold' => {
|
|
578
652
|
:default => 0.5,
|
|
@@ -600,14 +674,13 @@ module NewRelic
|
|
|
600
674
|
:public => true,
|
|
601
675
|
:type => String,
|
|
602
676
|
:allowed_from_server => true,
|
|
603
|
-
:description =>
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
'
|
|
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
|
|
611
684
|
},
|
|
612
685
|
|
|
613
686
|
:'transaction_tracer.stack_trace_threshold' => {
|
|
@@ -625,20 +698,6 @@ module NewRelic
|
|
|
625
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`.'
|
|
626
699
|
},
|
|
627
700
|
# Error collector
|
|
628
|
-
:'error_collector.ignore_classes' => {
|
|
629
|
-
:default => ['ActionController::RoutingError', 'Sinatra::NotFound'],
|
|
630
|
-
:public => true,
|
|
631
|
-
:type => Array,
|
|
632
|
-
:allowed_from_server => true,
|
|
633
|
-
:dynamic_name => true,
|
|
634
|
-
:description => <<~DESCRIPTION
|
|
635
|
-
A list of error classes that the agent should ignore.
|
|
636
|
-
|
|
637
|
-
<Callout variant="caution">
|
|
638
|
-
This option can't be set via environment variable.
|
|
639
|
-
</Callout>
|
|
640
|
-
DESCRIPTION
|
|
641
|
-
},
|
|
642
701
|
:'error_collector.capture_events' => {
|
|
643
702
|
:default => value_of(:'error_collector.enabled'),
|
|
644
703
|
:documentation_default => true,
|
|
@@ -646,7 +705,7 @@ module NewRelic
|
|
|
646
705
|
:type => Boolean,
|
|
647
706
|
:allowed_from_server => true,
|
|
648
707
|
:dynamic_name => true,
|
|
649
|
-
:description => 'If `true`, the agent collects [TransactionError events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights).'
|
|
708
|
+
:description => 'If `true`, the agent collects [`TransactionError` events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights).'
|
|
650
709
|
},
|
|
651
710
|
:'error_collector.enabled' => {
|
|
652
711
|
:default => true,
|
|
@@ -663,10 +722,9 @@ module NewRelic
|
|
|
663
722
|
:dynamic_name => true,
|
|
664
723
|
:description => <<~DESCRIPTION
|
|
665
724
|
A list of error classes that the agent should treat as expected.
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
</Callout>
|
|
725
|
+
\t<Callout variant="caution">
|
|
726
|
+
\t\tThis option can't be set via environment variable.
|
|
727
|
+
\t</Callout>
|
|
670
728
|
DESCRIPTION
|
|
671
729
|
},
|
|
672
730
|
:'error_collector.expected_messages' => {
|
|
@@ -677,10 +735,9 @@ module NewRelic
|
|
|
677
735
|
:dynamic_name => true,
|
|
678
736
|
:description => <<~DESCRIPTION
|
|
679
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.
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
</Callout>
|
|
738
|
+
\t<Callout variant="caution">
|
|
739
|
+
\t\tThis option can't be set via environment variable.
|
|
740
|
+
\t</Callout>
|
|
684
741
|
DESCRIPTION
|
|
685
742
|
},
|
|
686
743
|
:'error_collector.expected_status_codes' => {
|
|
@@ -691,19 +748,35 @@ module NewRelic
|
|
|
691
748
|
:dynamic_name => true,
|
|
692
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.'
|
|
693
750
|
},
|
|
694
|
-
|
|
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
|
+
},
|
|
695
764
|
:'error_collector.ignore_messages' => {
|
|
696
|
-
|
|
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']},
|
|
697
771
|
:public => true,
|
|
698
772
|
:type => Hash,
|
|
699
773
|
:allowed_from_server => true,
|
|
700
774
|
:dynamic_name => true,
|
|
701
775
|
:description => <<~DESCRIPTION
|
|
702
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.
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
</Callout>
|
|
777
|
+
\t<Callout variant="caution">
|
|
778
|
+
\t\tThis option can't be set via environment variable.
|
|
779
|
+
\t</Callout>
|
|
707
780
|
DESCRIPTION
|
|
708
781
|
},
|
|
709
782
|
:'error_collector.ignore_status_codes' => {
|
|
@@ -719,14 +792,14 @@ module NewRelic
|
|
|
719
792
|
:public => true,
|
|
720
793
|
:type => Integer,
|
|
721
794
|
:allowed_from_server => false,
|
|
722
|
-
:description => 'Defines the maximum number of frames in an error backtrace. Backtraces over this amount are truncated
|
|
795
|
+
:description => 'Defines the maximum number of frames in an error backtrace. Backtraces over this amount are truncated in the middle, preserving the beginning and the end of the stack trace.'
|
|
723
796
|
},
|
|
724
797
|
:'error_collector.max_event_samples_stored' => {
|
|
725
798
|
:default => 100,
|
|
726
799
|
:public => true,
|
|
727
800
|
:type => Integer,
|
|
728
801
|
:allowed_from_server => true,
|
|
729
|
-
:description => 'Defines the maximum number of [TransactionError events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights) reported per harvest cycle.'
|
|
802
|
+
:description => 'Defines the maximum number of [`TransactionError` events](/docs/insights/new-relic-insights/decorating-events/error-event-default-attributes-insights) reported per harvest cycle.'
|
|
730
803
|
},
|
|
731
804
|
# Browser monitoring
|
|
732
805
|
:'browser_monitoring.auto_instrument' => {
|
|
@@ -737,6 +810,15 @@ module NewRelic
|
|
|
737
810
|
:allowed_from_server => true,
|
|
738
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).'
|
|
739
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
|
+
},
|
|
740
822
|
# Transaction events
|
|
741
823
|
:'transaction_events.enabled' => {
|
|
742
824
|
:default => true,
|
|
@@ -767,6 +849,53 @@ module NewRelic
|
|
|
767
849
|
:allowed_from_server => false,
|
|
768
850
|
:description => 'If `true`, the agent captures log records emitted by your application.'
|
|
769
851
|
},
|
|
852
|
+
:'application_logging.forwarding.log_level' => {
|
|
853
|
+
:default => 'debug',
|
|
854
|
+
:public => true,
|
|
855
|
+
:type => String,
|
|
856
|
+
:allowed_from_server => false,
|
|
857
|
+
:allowlist => %w[debug info warn error fatal unknown DEBUG INFO WARN ERROR FATAL UNKNOWN],
|
|
858
|
+
:description => <<~DESCRIPTION
|
|
859
|
+
Sets the minimum level a log event must have to be forwarded to New Relic.
|
|
860
|
+
|
|
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).
|
|
862
|
+
|
|
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.
|
|
864
|
+
|
|
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".
|
|
866
|
+
|
|
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"
|
|
874
|
+
DESCRIPTION
|
|
875
|
+
},
|
|
876
|
+
:'application_logging.forwarding.custom_attributes' => {
|
|
877
|
+
:default => {},
|
|
878
|
+
:public => true,
|
|
879
|
+
:type => Hash,
|
|
880
|
+
:transform => DefaultSource.method(:convert_to_hash),
|
|
881
|
+
:allowed_from_server => false,
|
|
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"'
|
|
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
|
+
},
|
|
770
899
|
:'application_logging.forwarding.max_samples_stored' => {
|
|
771
900
|
:default => 10000,
|
|
772
901
|
:public => true,
|
|
@@ -790,6 +919,13 @@ module NewRelic
|
|
|
790
919
|
:description => 'If `true`, the agent captures metrics related to logging for your application.'
|
|
791
920
|
},
|
|
792
921
|
# Attributes
|
|
922
|
+
:'allow_all_headers' => {
|
|
923
|
+
:default => false,
|
|
924
|
+
:public => true,
|
|
925
|
+
:type => Boolean,
|
|
926
|
+
:allowed_from_server => false,
|
|
927
|
+
:description => 'If `true`, enables capture of all HTTP request headers for all destinations.'
|
|
928
|
+
},
|
|
793
929
|
:'attributes.enabled' => {
|
|
794
930
|
:default => true,
|
|
795
931
|
:public => true,
|
|
@@ -965,11 +1101,11 @@ module NewRelic
|
|
|
965
1101
|
:type => Array,
|
|
966
1102
|
:allowed_from_server => false,
|
|
967
1103
|
:transform => DefaultSource.method(:convert_to_regexp_list),
|
|
968
|
-
:description => 'List of allowed endpoints to include in audit log'
|
|
1104
|
+
:description => 'List of allowed endpoints to include in audit log.'
|
|
969
1105
|
},
|
|
970
1106
|
:'audit_log.path' => {
|
|
971
1107
|
:default => DefaultSource.audit_log_path,
|
|
972
|
-
:documentation_default => '
|
|
1108
|
+
:documentation_default => 'log/newrelic_audit.log',
|
|
973
1109
|
:public => true,
|
|
974
1110
|
:type => String,
|
|
975
1111
|
:allowed_from_server => false,
|
|
@@ -977,25 +1113,39 @@ module NewRelic
|
|
|
977
1113
|
},
|
|
978
1114
|
# Autostart
|
|
979
1115
|
:'autostart.denylisted_constants' => {
|
|
980
|
-
:default =>
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
1116
|
+
:default => %w[Rails::Command::ConsoleCommand
|
|
1117
|
+
Rails::Command::CredentialsCommand
|
|
1118
|
+
Rails::Command::Db::System::ChangeCommand
|
|
1119
|
+
Rails::Command::DbConsoleCommand
|
|
1120
|
+
Rails::Command::DestroyCommand
|
|
1121
|
+
Rails::Command::DevCommand
|
|
1122
|
+
Rails::Command::EncryptedCommand
|
|
1123
|
+
Rails::Command::GenerateCommand
|
|
1124
|
+
Rails::Command::InitializersCommand
|
|
1125
|
+
Rails::Command::NotesCommand
|
|
1126
|
+
Rails::Command::RoutesCommand
|
|
1127
|
+
Rails::Command::RunnerCommand
|
|
1128
|
+
Rails::Command::SecretsCommand
|
|
1129
|
+
Rails::Console
|
|
1130
|
+
Rails::DBConsole].join(','),
|
|
1131
|
+
:public => true,
|
|
1132
|
+
:type => String,
|
|
1133
|
+
:allowed_from_server => false,
|
|
1134
|
+
:description => 'Specify a list of constants that should prevent the agent from starting automatically. Separate individual constants with a comma `,`. For example, `"Rails::Console,UninstrumentedBackgroundJob"`.'
|
|
985
1135
|
},
|
|
986
1136
|
:'autostart.denylisted_executables' => {
|
|
987
1137
|
:default => 'irb,rspec',
|
|
988
1138
|
:public => true,
|
|
989
1139
|
:type => String,
|
|
990
1140
|
:allowed_from_server => false,
|
|
991
|
-
:description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, `rake,my_ruby_script.rb`.'
|
|
1141
|
+
:description => 'Defines a comma-delimited list of executables that the agent should not instrument. For example, `"rake,my_ruby_script.rb"`.'
|
|
992
1142
|
},
|
|
993
1143
|
:'autostart.denylisted_rake_tasks' => {
|
|
994
1144
|
:default => AUTOSTART_DENYLISTED_RAKE_TASKS,
|
|
995
1145
|
:public => true,
|
|
996
1146
|
:type => String,
|
|
997
1147
|
:allowed_from_server => false,
|
|
998
|
-
:description => 'Defines a comma-delimited list of Rake tasks that the agent should not instrument. For example, `assets:precompile,db:migrate`.'
|
|
1148
|
+
:description => 'Defines a comma-delimited list of Rake tasks that the agent should not instrument. For example, `"assets:precompile,db:migrate"`.'
|
|
999
1149
|
},
|
|
1000
1150
|
# Code level metrics
|
|
1001
1151
|
:'code_level_metrics.enabled' => {
|
|
@@ -1003,7 +1153,7 @@ module NewRelic
|
|
|
1003
1153
|
:public => true,
|
|
1004
1154
|
:type => Boolean,
|
|
1005
1155
|
:allowed_from_server => true,
|
|
1006
|
-
:description => "If `true`, the agent will report source code level metrics for traced methods.\
|
|
1156
|
+
:description => "If `true`, the agent will report source code level metrics for traced methods.\n\tSee: " \
|
|
1007
1157
|
'https://docs.newrelic.com/docs/apm/agents/ruby-agent/features/ruby-codestream-integration/'
|
|
1008
1158
|
},
|
|
1009
1159
|
# Cross application tracer
|
|
@@ -1014,8 +1164,8 @@ module NewRelic
|
|
|
1014
1164
|
:allowed_from_server => true,
|
|
1015
1165
|
:deprecated => true,
|
|
1016
1166
|
:description => deprecated_description(
|
|
1017
|
-
:'distributed_tracing
|
|
1018
|
-
'If `true`, enables [cross-application tracing](/docs/agents/ruby-agent/features/cross-application-tracing-ruby/) when `distributed_tracing.enabled` is set to `false`.'
|
|
1167
|
+
:'distributed_tracing.enabled',
|
|
1168
|
+
' If `true`, enables [cross-application tracing](/docs/agents/ruby-agent/features/cross-application-tracing-ruby/) when `distributed_tracing.enabled` is set to `false`.'
|
|
1019
1169
|
)
|
|
1020
1170
|
},
|
|
1021
1171
|
# Custom attributes
|
|
@@ -1026,6 +1176,56 @@ module NewRelic
|
|
|
1026
1176
|
:allowed_from_server => false,
|
|
1027
1177
|
:description => 'If `false`, custom attributes will not be sent on events.'
|
|
1028
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
|
+
},
|
|
1029
1229
|
# Custom events
|
|
1030
1230
|
:'custom_insights_events.enabled' => {
|
|
1031
1231
|
:default => true,
|
|
@@ -1039,8 +1239,13 @@ module NewRelic
|
|
|
1039
1239
|
:public => true,
|
|
1040
1240
|
:type => Integer,
|
|
1041
1241
|
:allowed_from_server => true,
|
|
1042
|
-
:
|
|
1043
|
-
|
|
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
|
|
1044
1249
|
},
|
|
1045
1250
|
# Datastore tracer
|
|
1046
1251
|
:'datastore_tracer.database_name_reporting.enabled' => {
|
|
@@ -1105,6 +1310,7 @@ module NewRelic
|
|
|
1105
1310
|
:default => false,
|
|
1106
1311
|
:public => true,
|
|
1107
1312
|
:type => Boolean,
|
|
1313
|
+
:aliases => %i[disable_active_job],
|
|
1108
1314
|
:allowed_from_server => false,
|
|
1109
1315
|
:description => 'If `true`, disables Active Job instrumentation.'
|
|
1110
1316
|
},
|
|
@@ -1122,11 +1328,12 @@ module NewRelic
|
|
|
1122
1328
|
:allowed_from_server => false,
|
|
1123
1329
|
:description => 'If `true`, disables Active Support instrumentation.'
|
|
1124
1330
|
},
|
|
1125
|
-
:
|
|
1331
|
+
:disable_active_record_instrumentation => {
|
|
1126
1332
|
:default => value_of(:skip_ar_instrumentation),
|
|
1127
1333
|
:documentation_default => false,
|
|
1128
1334
|
:public => true,
|
|
1129
1335
|
:type => Boolean,
|
|
1336
|
+
:aliases => %i[disable_activerecord_instrumentation],
|
|
1130
1337
|
:allowed_from_server => false,
|
|
1131
1338
|
:description => 'If `true`, disables Active Record instrumentation.'
|
|
1132
1339
|
},
|
|
@@ -1135,6 +1342,7 @@ module NewRelic
|
|
|
1135
1342
|
:public => true,
|
|
1136
1343
|
:type => Boolean,
|
|
1137
1344
|
:dynamic_name => true,
|
|
1345
|
+
:aliases => %i[disable_activerecord_notifications],
|
|
1138
1346
|
:allowed_from_server => false,
|
|
1139
1347
|
:description => 'If `true`, disables instrumentation for Active Record 4+'
|
|
1140
1348
|
},
|
|
@@ -1159,7 +1367,7 @@ module NewRelic
|
|
|
1159
1367
|
:public => true,
|
|
1160
1368
|
:type => Boolean,
|
|
1161
1369
|
:allowed_from_server => false,
|
|
1162
|
-
:description => 'If `true`, disables the use of GC::Profiler to measure time spent in garbage collection'
|
|
1370
|
+
:description => 'If `true`, disables the use of `GC::Profiler` to measure time spent in garbage collection'
|
|
1163
1371
|
},
|
|
1164
1372
|
:disable_memory_sampler => {
|
|
1165
1373
|
:default => false,
|
|
@@ -1174,7 +1382,13 @@ module NewRelic
|
|
|
1174
1382
|
:public => true,
|
|
1175
1383
|
:type => Boolean,
|
|
1176
1384
|
:allowed_from_server => false,
|
|
1177
|
-
:description =>
|
|
1385
|
+
:description => <<~DESCRIPTION
|
|
1386
|
+
If `true`, the agent won't wrap third-party middlewares in instrumentation (regardless of whether they are installed via `Rack::Builder` or Rails).
|
|
1387
|
+
|
|
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>
|
|
1391
|
+
DESCRIPTION
|
|
1178
1392
|
},
|
|
1179
1393
|
:disable_samplers => {
|
|
1180
1394
|
:default => false,
|
|
@@ -1197,6 +1411,13 @@ module NewRelic
|
|
|
1197
1411
|
:allowed_from_server => false,
|
|
1198
1412
|
:description => 'If `true`, disables [Sidekiq instrumentation](/docs/agents/ruby-agent/background-jobs/sidekiq-instrumentation).'
|
|
1199
1413
|
},
|
|
1414
|
+
:disable_roda_auto_middleware => {
|
|
1415
|
+
:default => false,
|
|
1416
|
+
:public => true,
|
|
1417
|
+
:type => Boolean,
|
|
1418
|
+
:allowed_from_server => false,
|
|
1419
|
+
:description => 'If `true`, disables agent middleware for Roda. This middleware is responsible for advanced feature support such as [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).'
|
|
1420
|
+
},
|
|
1200
1421
|
:disable_sinatra_auto_middleware => {
|
|
1201
1422
|
:default => false,
|
|
1202
1423
|
:public => true,
|
|
@@ -1205,20 +1426,18 @@ module NewRelic
|
|
|
1205
1426
|
:description => <<~DESCRIPTION
|
|
1206
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).
|
|
1207
1428
|
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
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.
|
|
1212
1431
|
|
|
1213
|
-
|
|
1214
|
-
# newrelic.yml
|
|
1432
|
+
\t\tTo continue using cross application tracing, update the following options in your `newrelic.yml` configuration file:
|
|
1215
1433
|
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
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>
|
|
1222
1441
|
DESCRIPTION
|
|
1223
1442
|
},
|
|
1224
1443
|
:disable_view_instrumentation => {
|
|
@@ -1244,7 +1463,28 @@ module NewRelic
|
|
|
1244
1463
|
:allowed_from_server => true,
|
|
1245
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.'
|
|
1246
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
|
+
},
|
|
1247
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
|
+
},
|
|
1248
1488
|
:'elasticsearch.capture_queries' => {
|
|
1249
1489
|
:default => true,
|
|
1250
1490
|
:public => true,
|
|
@@ -1273,7 +1513,7 @@ module NewRelic
|
|
|
1273
1513
|
:type => Array,
|
|
1274
1514
|
:allowed_from_server => false,
|
|
1275
1515
|
:transform => DefaultSource.method(:convert_to_list),
|
|
1276
|
-
:description => 'Ordinarily the agent reports dyno names with a trailing dot and process ID (for example,
|
|
1516
|
+
:description => 'Ordinarily the agent reports dyno names with a trailing dot and process ID (for example, `worker.3`). You can remove this trailing data by specifying the prefixes you want to report without trailing data (for example, `worker`).'
|
|
1277
1517
|
},
|
|
1278
1518
|
# Infinite tracing
|
|
1279
1519
|
:'infinite_tracing.trace_observer.host' => {
|
|
@@ -1296,6 +1536,15 @@ module NewRelic
|
|
|
1296
1536
|
:description => 'Configures the TCP/IP port for the trace observer Host'
|
|
1297
1537
|
},
|
|
1298
1538
|
# Instrumentation
|
|
1539
|
+
:'instrumentation.active_support_broadcast_logger' => {
|
|
1540
|
+
:default => instrumentation_value_from_boolean(:'application_logging.enabled'),
|
|
1541
|
+
:documentation_default => 'auto',
|
|
1542
|
+
:dynamic_name => true,
|
|
1543
|
+
:public => true,
|
|
1544
|
+
:type => String,
|
|
1545
|
+
:allowed_from_server => false,
|
|
1546
|
+
:description => 'Controls auto-instrumentation of `ActiveSupport::BroadcastLogger` at start up. May be one of: `auto`, `prepend`, `chain`, `disabled`. Used in Rails versions >= 7.1.'
|
|
1547
|
+
},
|
|
1299
1548
|
:'instrumentation.active_support_logger' => {
|
|
1300
1549
|
:default => instrumentation_value_from_boolean(:'application_logging.enabled'),
|
|
1301
1550
|
:documentation_default => 'auto',
|
|
@@ -1303,31 +1552,112 @@ module NewRelic
|
|
|
1303
1552
|
:public => true,
|
|
1304
1553
|
:type => String,
|
|
1305
1554
|
:allowed_from_server => false,
|
|
1306
|
-
:description => 'Controls auto-instrumentation of ActiveSupport::Logger at start up.
|
|
1555
|
+
:description => 'Controls auto-instrumentation of `ActiveSupport::Logger` at start up. May be one of: `auto`, `prepend`, `chain`, `disabled`. Used in Rails versions below 7.1.'
|
|
1556
|
+
},
|
|
1557
|
+
:'instrumentation.async_http' => {
|
|
1558
|
+
:default => 'auto',
|
|
1559
|
+
:documentation_default => 'auto',
|
|
1560
|
+
:public => true,
|
|
1561
|
+
:type => String,
|
|
1562
|
+
:dynamic_name => true,
|
|
1563
|
+
:allowed_from_server => false,
|
|
1564
|
+
:description => 'Controls auto-instrumentation of Async::HTTP at start up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1307
1565
|
},
|
|
1308
1566
|
:'instrumentation.bunny' => {
|
|
1309
1567
|
:default => 'auto',
|
|
1568
|
+
:documentation_default => 'auto',
|
|
1569
|
+
:public => true,
|
|
1570
|
+
:type => String,
|
|
1571
|
+
:dynamic_name => true,
|
|
1572
|
+
:allowed_from_server => false,
|
|
1573
|
+
:description => 'Controls auto-instrumentation of bunny at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
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',
|
|
1310
1587
|
:public => true,
|
|
1311
1588
|
:type => String,
|
|
1312
1589
|
:dynamic_name => true,
|
|
1313
1590
|
:allowed_from_server => false,
|
|
1314
|
-
:description => 'Controls auto-instrumentation of
|
|
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`.'
|
|
1315
1643
|
},
|
|
1316
1644
|
:'instrumentation.fiber' => {
|
|
1317
1645
|
:default => 'auto',
|
|
1646
|
+
:documentation_default => 'auto',
|
|
1318
1647
|
:public => true,
|
|
1319
1648
|
:type => String,
|
|
1320
1649
|
:dynamic_name => true,
|
|
1321
1650
|
:allowed_from_server => false,
|
|
1322
|
-
:description => 'Controls auto-instrumentation of the Fiber class at start
|
|
1651
|
+
:description => 'Controls auto-instrumentation of the Fiber class at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1323
1652
|
},
|
|
1324
1653
|
:'instrumentation.concurrent_ruby' => {
|
|
1325
1654
|
:default => 'auto',
|
|
1655
|
+
:documentation_default => 'auto',
|
|
1326
1656
|
:public => true,
|
|
1327
1657
|
:type => String,
|
|
1328
1658
|
:dynamic_name => true,
|
|
1329
1659
|
:allowed_from_server => false,
|
|
1330
|
-
:description => 'Controls auto-instrumentation of the concurrent-ruby library at start
|
|
1660
|
+
:description => 'Controls auto-instrumentation of the concurrent-ruby library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1331
1661
|
},
|
|
1332
1662
|
:'instrumentation.curb' => {
|
|
1333
1663
|
:default => 'auto',
|
|
@@ -1336,7 +1666,7 @@ module NewRelic
|
|
|
1336
1666
|
:type => String,
|
|
1337
1667
|
:dynamic_name => true,
|
|
1338
1668
|
:allowed_from_server => false,
|
|
1339
|
-
:description => 'Controls auto-instrumentation of Curb at start
|
|
1669
|
+
:description => 'Controls auto-instrumentation of Curb at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1340
1670
|
},
|
|
1341
1671
|
:'instrumentation.delayed_job' => {
|
|
1342
1672
|
:default => 'auto',
|
|
@@ -1345,15 +1675,25 @@ module NewRelic
|
|
|
1345
1675
|
:type => String,
|
|
1346
1676
|
:dynamic_name => true,
|
|
1347
1677
|
:allowed_from_server => false,
|
|
1348
|
-
:description => 'Controls auto-instrumentation of Delayed Job at start
|
|
1678
|
+
:description => 'Controls auto-instrumentation of Delayed Job at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1349
1679
|
},
|
|
1350
1680
|
:'instrumentation.elasticsearch' => {
|
|
1351
1681
|
:default => 'auto',
|
|
1682
|
+
:documentation_default => 'auto',
|
|
1683
|
+
:public => true,
|
|
1684
|
+
:type => String,
|
|
1685
|
+
:dynamic_name => true,
|
|
1686
|
+
:allowed_from_server => false,
|
|
1687
|
+
:description => 'Controls auto-instrumentation of the elasticsearch library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1688
|
+
},
|
|
1689
|
+
:'instrumentation.ethon' => {
|
|
1690
|
+
:default => 'auto',
|
|
1691
|
+
:documentation_default => 'auto',
|
|
1352
1692
|
:public => true,
|
|
1353
1693
|
:type => String,
|
|
1354
1694
|
:dynamic_name => true,
|
|
1355
1695
|
:allowed_from_server => false,
|
|
1356
|
-
:description => 'Controls auto-instrumentation of
|
|
1696
|
+
:description => 'Controls auto-instrumentation of ethon at start up. May be one of `auto`, `prepend`, `chain`, `disabled`'
|
|
1357
1697
|
},
|
|
1358
1698
|
:'instrumentation.excon' => {
|
|
1359
1699
|
:default => 'enabled',
|
|
@@ -1362,24 +1702,25 @@ module NewRelic
|
|
|
1362
1702
|
:type => String,
|
|
1363
1703
|
:dynamic_name => true,
|
|
1364
1704
|
:allowed_from_server => false,
|
|
1365
|
-
:description => 'Controls auto-instrumentation of Excon at start
|
|
1705
|
+
:description => 'Controls auto-instrumentation of Excon at start-up. May be one of: `enabled`, `disabled`.'
|
|
1366
1706
|
},
|
|
1367
1707
|
:'instrumentation.grape' => {
|
|
1368
1708
|
:default => 'auto',
|
|
1709
|
+
:documentation_default => 'auto',
|
|
1369
1710
|
:public => true,
|
|
1370
1711
|
:type => String,
|
|
1371
1712
|
:dynamic_name => true,
|
|
1372
1713
|
:allowed_from_server => false,
|
|
1373
|
-
:description => 'Controls auto-instrumentation of Grape at start
|
|
1714
|
+
:description => 'Controls auto-instrumentation of Grape at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1374
1715
|
},
|
|
1375
1716
|
:'instrumentation.grpc_client' => {
|
|
1376
|
-
:default =>
|
|
1717
|
+
:default => 'auto',
|
|
1377
1718
|
:documentation_default => 'auto',
|
|
1378
1719
|
:public => true,
|
|
1379
1720
|
:type => String,
|
|
1380
1721
|
:dynamic_name => true,
|
|
1381
1722
|
:allowed_from_server => false,
|
|
1382
|
-
:description => 'Controls auto-instrumentation of gRPC clients at start
|
|
1723
|
+
:description => 'Controls auto-instrumentation of gRPC clients at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1383
1724
|
},
|
|
1384
1725
|
:'instrumentation.grpc.host_denylist' => {
|
|
1385
1726
|
:default => [],
|
|
@@ -1387,16 +1728,16 @@ module NewRelic
|
|
|
1387
1728
|
:type => Array,
|
|
1388
1729
|
:allowed_from_server => false,
|
|
1389
1730
|
:transform => DefaultSource.method(:convert_to_regexp_list),
|
|
1390
|
-
:description => %Q(Specifies a list of hostname patterns separated by commas that will match gRPC hostnames that traffic is to be ignored by New Relic for. New Relic's gRPC client instrumentation will ignore traffic streamed to a host matching any of these patterns, and New Relic's gRPC server instrumentation will ignore traffic for a server running on a host whose hostname matches any of these patterns. By default, no traffic is ignored when gRPC instrumentation is itself enabled. For example, "private.com$,exception.*")
|
|
1731
|
+
:description => %Q(Specifies a list of hostname patterns separated by commas that will match gRPC hostnames that traffic is to be ignored by New Relic for. New Relic's gRPC client instrumentation will ignore traffic streamed to a host matching any of these patterns, and New Relic's gRPC server instrumentation will ignore traffic for a server running on a host whose hostname matches any of these patterns. By default, no traffic is ignored when gRPC instrumentation is itself enabled. For example, `"private.com$,exception.*"`)
|
|
1391
1732
|
},
|
|
1392
1733
|
:'instrumentation.grpc_server' => {
|
|
1393
|
-
:default =>
|
|
1734
|
+
:default => 'auto',
|
|
1394
1735
|
:documentation_default => 'auto',
|
|
1395
1736
|
:public => true,
|
|
1396
1737
|
:type => String,
|
|
1397
1738
|
:dynamic_name => true,
|
|
1398
1739
|
:allowed_from_server => false,
|
|
1399
|
-
:description => 'Controls auto-instrumentation of gRPC servers at start
|
|
1740
|
+
:description => 'Controls auto-instrumentation of gRPC servers at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1400
1741
|
},
|
|
1401
1742
|
:'instrumentation.httpclient' => {
|
|
1402
1743
|
:default => 'auto',
|
|
@@ -1405,7 +1746,7 @@ module NewRelic
|
|
|
1405
1746
|
:type => String,
|
|
1406
1747
|
:dynamic_name => true,
|
|
1407
1748
|
:allowed_from_server => false,
|
|
1408
|
-
:description => 'Controls auto-instrumentation of HTTPClient at start
|
|
1749
|
+
:description => 'Controls auto-instrumentation of HTTPClient at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1409
1750
|
},
|
|
1410
1751
|
:'instrumentation.httprb' => {
|
|
1411
1752
|
:default => 'auto',
|
|
@@ -1414,7 +1755,16 @@ module NewRelic
|
|
|
1414
1755
|
:type => String,
|
|
1415
1756
|
:dynamic_name => true,
|
|
1416
1757
|
:allowed_from_server => false,
|
|
1417
|
-
:description => 'Controls auto-instrumentation of http.rb gem at start
|
|
1758
|
+
:description => 'Controls auto-instrumentation of http.rb gem at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1759
|
+
},
|
|
1760
|
+
:'instrumentation.httpx' => {
|
|
1761
|
+
:default => 'auto',
|
|
1762
|
+
:documentation_default => 'auto',
|
|
1763
|
+
:public => true,
|
|
1764
|
+
:type => String,
|
|
1765
|
+
:dynamic_name => true,
|
|
1766
|
+
:allowed_from_server => false,
|
|
1767
|
+
:description => 'Controls auto-instrumentation of httpx at start up. May be one of `auto`, `prepend`, `chain`, `disabled`'
|
|
1418
1768
|
},
|
|
1419
1769
|
:'instrumentation.logger' => {
|
|
1420
1770
|
:default => instrumentation_value_from_boolean(:'application_logging.enabled'),
|
|
@@ -1423,15 +1773,25 @@ module NewRelic
|
|
|
1423
1773
|
:type => String,
|
|
1424
1774
|
:dynamic_name => true,
|
|
1425
1775
|
:allowed_from_server => false,
|
|
1426
|
-
:description => 'Controls auto-instrumentation of Ruby standard library Logger at start
|
|
1776
|
+
:description => 'Controls auto-instrumentation of Ruby standard library Logger at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
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`.'
|
|
1427
1786
|
},
|
|
1428
1787
|
:'instrumentation.memcache' => {
|
|
1429
1788
|
:default => 'auto',
|
|
1789
|
+
:documentation_default => 'auto',
|
|
1430
1790
|
:public => true,
|
|
1431
1791
|
:type => String,
|
|
1432
1792
|
:dynamic_name => true,
|
|
1433
1793
|
:allowed_from_server => false,
|
|
1434
|
-
:description => 'Controls auto-instrumentation of dalli gem for Memcache at start
|
|
1794
|
+
:description => 'Controls auto-instrumentation of dalli gem for Memcache at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1435
1795
|
},
|
|
1436
1796
|
:'instrumentation.memcached' => {
|
|
1437
1797
|
:default => 'auto',
|
|
@@ -1440,16 +1800,16 @@ module NewRelic
|
|
|
1440
1800
|
:type => String,
|
|
1441
1801
|
:dynamic_name => true,
|
|
1442
1802
|
:allowed_from_server => false,
|
|
1443
|
-
:description => 'Controls auto-instrumentation of memcached gem for Memcache at start
|
|
1803
|
+
:description => 'Controls auto-instrumentation of memcached gem for Memcache at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1444
1804
|
},
|
|
1445
1805
|
:'instrumentation.memcache_client' => {
|
|
1446
|
-
:default =>
|
|
1806
|
+
:default => 'auto',
|
|
1447
1807
|
:documentation_default => 'auto',
|
|
1448
1808
|
:public => true,
|
|
1449
1809
|
:type => String,
|
|
1450
1810
|
:dynamic_name => true,
|
|
1451
1811
|
:allowed_from_server => false,
|
|
1452
|
-
:description => 'Controls auto-instrumentation of memcache-client gem for Memcache at start
|
|
1812
|
+
:description => 'Controls auto-instrumentation of memcache-client gem for Memcache at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1453
1813
|
},
|
|
1454
1814
|
:'instrumentation.mongo' => {
|
|
1455
1815
|
:default => 'enabled',
|
|
@@ -1458,7 +1818,7 @@ module NewRelic
|
|
|
1458
1818
|
:type => String,
|
|
1459
1819
|
:dynamic_name => true,
|
|
1460
1820
|
:allowed_from_server => false,
|
|
1461
|
-
:description => 'Controls auto-instrumentation of Mongo at start
|
|
1821
|
+
:description => 'Controls auto-instrumentation of Mongo at start-up. May be one of: `enabled`, `disabled`.'
|
|
1462
1822
|
},
|
|
1463
1823
|
:'instrumentation.net_http' => {
|
|
1464
1824
|
:default => 'auto',
|
|
@@ -1467,7 +1827,16 @@ module NewRelic
|
|
|
1467
1827
|
:type => String,
|
|
1468
1828
|
:dynamic_name => true,
|
|
1469
1829
|
:allowed_from_server => false,
|
|
1470
|
-
:description => 'Controls auto-instrumentation of Net::HTTP at start
|
|
1830
|
+
:description => 'Controls auto-instrumentation of `Net::HTTP` at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1831
|
+
},
|
|
1832
|
+
:'instrumentation.ruby_openai' => {
|
|
1833
|
+
:default => 'auto',
|
|
1834
|
+
:documentation_default => 'auto',
|
|
1835
|
+
:public => true,
|
|
1836
|
+
:type => String,
|
|
1837
|
+
:dynamic_name => true,
|
|
1838
|
+
:allowed_from_server => false,
|
|
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.'
|
|
1471
1840
|
},
|
|
1472
1841
|
:'instrumentation.puma_rack' => {
|
|
1473
1842
|
:default => value_of(:'instrumentation.rack'),
|
|
@@ -1476,9 +1845,9 @@ module NewRelic
|
|
|
1476
1845
|
:type => String,
|
|
1477
1846
|
:dynamic_name => true,
|
|
1478
1847
|
:allowed_from_server => false,
|
|
1479
|
-
:description => 'Controls auto-instrumentation of Puma::Rack
|
|
1480
|
-
'`to_app` method in Puma::Rack::Builder to find gems to instrument during ' \
|
|
1481
|
-
'application startup.
|
|
1848
|
+
:description => 'Controls auto-instrumentation of `Puma::Rack`. When enabled, the agent hooks into the ' \
|
|
1849
|
+
'`to_app` method in `Puma::Rack::Builder` to find gems to instrument during ' \
|
|
1850
|
+
'application startup. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1482
1851
|
},
|
|
1483
1852
|
:'instrumentation.puma_rack_urlmap' => {
|
|
1484
1853
|
:default => value_of(:'instrumentation.rack_urlmap'),
|
|
@@ -1487,7 +1856,7 @@ module NewRelic
|
|
|
1487
1856
|
:type => String,
|
|
1488
1857
|
:dynamic_name => true,
|
|
1489
1858
|
:allowed_from_server => false,
|
|
1490
|
-
:description => 'Controls auto-instrumentation of Puma::Rack::URLMap at start
|
|
1859
|
+
:description => 'Controls auto-instrumentation of `Puma::Rack::URLMap` at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1491
1860
|
},
|
|
1492
1861
|
:'instrumentation.rack' => {
|
|
1493
1862
|
:default => 'auto',
|
|
@@ -1497,8 +1866,8 @@ module NewRelic
|
|
|
1497
1866
|
:dynamic_name => true,
|
|
1498
1867
|
:allowed_from_server => false,
|
|
1499
1868
|
:description => 'Controls auto-instrumentation of Rack. When enabled, the agent hooks into the ' \
|
|
1500
|
-
'`to_app` method in Rack::Builder to find gems to instrument during ' \
|
|
1501
|
-
'application startup.
|
|
1869
|
+
'`to_app` method in `Rack::Builder` to find gems to instrument during ' \
|
|
1870
|
+
'application startup. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1502
1871
|
},
|
|
1503
1872
|
:'instrumentation.rack_urlmap' => {
|
|
1504
1873
|
:default => 'auto',
|
|
@@ -1507,23 +1876,25 @@ module NewRelic
|
|
|
1507
1876
|
:type => String,
|
|
1508
1877
|
:dynamic_name => true,
|
|
1509
1878
|
:allowed_from_server => false,
|
|
1510
|
-
:description => 'Controls auto-instrumentation of Rack::URLMap at start
|
|
1879
|
+
:description => 'Controls auto-instrumentation of `Rack::URLMap` at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1511
1880
|
},
|
|
1512
1881
|
:'instrumentation.rake' => {
|
|
1513
1882
|
:default => 'auto',
|
|
1883
|
+
:documentation_default => 'auto',
|
|
1514
1884
|
:public => true,
|
|
1515
1885
|
:type => String,
|
|
1516
1886
|
:dynamic_name => true,
|
|
1517
1887
|
:allowed_from_server => false,
|
|
1518
|
-
:description => 'Controls auto-instrumentation of rake at start
|
|
1888
|
+
:description => 'Controls auto-instrumentation of rake at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1519
1889
|
},
|
|
1520
1890
|
:'instrumentation.redis' => {
|
|
1521
1891
|
:default => 'auto',
|
|
1892
|
+
:documentation_default => 'auto',
|
|
1522
1893
|
:public => true,
|
|
1523
1894
|
:type => String,
|
|
1524
1895
|
:dynamic_name => true,
|
|
1525
1896
|
:allowed_from_server => false,
|
|
1526
|
-
:description => 'Controls auto-instrumentation of Redis at start
|
|
1897
|
+
:description => 'Controls auto-instrumentation of Redis at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1527
1898
|
},
|
|
1528
1899
|
:'instrumentation.resque' => {
|
|
1529
1900
|
:default => 'auto',
|
|
@@ -1532,30 +1903,85 @@ module NewRelic
|
|
|
1532
1903
|
:type => String,
|
|
1533
1904
|
:dynamic_name => true,
|
|
1534
1905
|
:allowed_from_server => false,
|
|
1535
|
-
:description => 'Controls auto-instrumentation of resque at start
|
|
1906
|
+
:description => 'Controls auto-instrumentation of resque at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1907
|
+
},
|
|
1908
|
+
:'instrumentation.roda' => {
|
|
1909
|
+
:default => 'auto',
|
|
1910
|
+
:documentation_default => 'auto',
|
|
1911
|
+
:public => true,
|
|
1912
|
+
:type => String,
|
|
1913
|
+
:dynamic_name => true,
|
|
1914
|
+
:allowed_from_server => false,
|
|
1915
|
+
:description => 'Controls auto-instrumentation of Roda at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1536
1916
|
},
|
|
1537
1917
|
:'instrumentation.sinatra' => {
|
|
1538
1918
|
:default => 'auto',
|
|
1919
|
+
:documentation_default => 'auto',
|
|
1539
1920
|
:public => true,
|
|
1540
1921
|
:type => String,
|
|
1541
1922
|
:dynamic_name => true,
|
|
1542
1923
|
:allowed_from_server => false,
|
|
1543
|
-
:description => 'Controls auto-instrumentation of Sinatra at start
|
|
1924
|
+
:description => 'Controls auto-instrumentation of Sinatra at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1925
|
+
},
|
|
1926
|
+
:'instrumentation.stripe' => {
|
|
1927
|
+
:default => 'enabled',
|
|
1928
|
+
:public => true,
|
|
1929
|
+
:type => String,
|
|
1930
|
+
:allowed_from_server => false,
|
|
1931
|
+
:description => 'Controls auto-instrumentation of Stripe at startup. May be one of: `enabled`, `disabled`.'
|
|
1932
|
+
},
|
|
1933
|
+
:'instrumentation.view_component' => {
|
|
1934
|
+
:default => 'auto',
|
|
1935
|
+
:documentation_default => 'auto',
|
|
1936
|
+
:public => true,
|
|
1937
|
+
:type => String,
|
|
1938
|
+
:dynamic_name => true,
|
|
1939
|
+
:allowed_from_server => false,
|
|
1940
|
+
:description => 'Controls auto-instrumentation of ViewComponent at startup. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1941
|
+
},
|
|
1942
|
+
:'stripe.user_data.include' => {
|
|
1943
|
+
default: NewRelic::EMPTY_ARRAY,
|
|
1944
|
+
public: true,
|
|
1945
|
+
type: Array,
|
|
1946
|
+
dynamic_name: true,
|
|
1947
|
+
allowed_from_server: false,
|
|
1948
|
+
:transform => DefaultSource.method(:convert_to_list),
|
|
1949
|
+
:description => <<~DESCRIPTION
|
|
1950
|
+
An array of strings to specify which keys inside a Stripe event's `user_data` hash should be reported
|
|
1951
|
+
to New Relic. Each string in this array will be turned into a regular expression via `Regexp.new` to
|
|
1952
|
+
enable advanced matching. Setting the value to `["."]` will report all `user_data`.
|
|
1953
|
+
DESCRIPTION
|
|
1954
|
+
},
|
|
1955
|
+
:'stripe.user_data.exclude' => {
|
|
1956
|
+
default: NewRelic::EMPTY_ARRAY,
|
|
1957
|
+
public: true,
|
|
1958
|
+
type: Array,
|
|
1959
|
+
dynamic_name: true,
|
|
1960
|
+
allowed_from_server: false,
|
|
1961
|
+
:transform => DefaultSource.method(:convert_to_list),
|
|
1962
|
+
:description => <<~DESCRIPTION
|
|
1963
|
+
An array of strings to specify which keys and/or values inside a Stripe event's `user_data` hash should
|
|
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.
|
|
1968
|
+
DESCRIPTION
|
|
1544
1969
|
},
|
|
1545
1970
|
:'instrumentation.thread' => {
|
|
1546
1971
|
:default => 'auto',
|
|
1972
|
+
:documentation_default => 'auto',
|
|
1547
1973
|
:public => true,
|
|
1548
1974
|
:type => String,
|
|
1549
1975
|
:dynamic_name => true,
|
|
1550
1976
|
:allowed_from_server => false,
|
|
1551
|
-
:description => 'Controls auto-instrumentation of the Thread class at start
|
|
1977
|
+
:description => 'Controls auto-instrumentation of the Thread class at start-up to allow the agent to correctly nest spans inside of an asynchronous transaction. This does not enable the agent to automatically trace all threads created (see `instrumentation.thread.tracing`). May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1552
1978
|
},
|
|
1553
1979
|
:'instrumentation.thread.tracing' => {
|
|
1554
1980
|
:default => true,
|
|
1555
1981
|
:public => true,
|
|
1556
1982
|
:type => Boolean,
|
|
1557
1983
|
:allowed_from_server => false,
|
|
1558
|
-
:description => 'Controls auto-instrumentation of the Thread class at start
|
|
1984
|
+
:description => 'Controls auto-instrumentation of the Thread class at start-up to automatically add tracing to all Threads created in the application.'
|
|
1559
1985
|
},
|
|
1560
1986
|
:'thread_ids_enabled' => {
|
|
1561
1987
|
:default => false,
|
|
@@ -1566,11 +1992,12 @@ module NewRelic
|
|
|
1566
1992
|
},
|
|
1567
1993
|
:'instrumentation.tilt' => {
|
|
1568
1994
|
:default => 'auto',
|
|
1995
|
+
:documentation_default => 'auto',
|
|
1569
1996
|
:public => true,
|
|
1570
1997
|
:type => String,
|
|
1571
1998
|
:dynamic_name => true,
|
|
1572
1999
|
:allowed_from_server => false,
|
|
1573
|
-
:description => 'Controls auto-instrumentation of the Tilt template rendering library at start
|
|
2000
|
+
:description => 'Controls auto-instrumentation of the Tilt template rendering library at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1574
2001
|
},
|
|
1575
2002
|
:'instrumentation.typhoeus' => {
|
|
1576
2003
|
:default => 'auto',
|
|
@@ -1579,7 +2006,7 @@ module NewRelic
|
|
|
1579
2006
|
:type => String,
|
|
1580
2007
|
:dynamic_name => true,
|
|
1581
2008
|
:allowed_from_server => false,
|
|
1582
|
-
:description => 'Controls auto-instrumentation of Typhoeus at start
|
|
2009
|
+
:description => 'Controls auto-instrumentation of Typhoeus at start-up. May be one of: `auto`, `prepend`, `chain`, `disabled`.'
|
|
1583
2010
|
},
|
|
1584
2011
|
# Message tracer
|
|
1585
2012
|
:'message_tracer.segment_parameters.enabled' => {
|
|
@@ -1604,6 +2031,21 @@ module NewRelic
|
|
|
1604
2031
|
:allowed_from_server => true,
|
|
1605
2032
|
:description => 'If `true`, the agent obfuscates Mongo queries in transaction traces.'
|
|
1606
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
|
+
},
|
|
1607
2049
|
# Process host
|
|
1608
2050
|
:'process_host.display_name' => {
|
|
1609
2051
|
:default => proc { NewRelic::Agent::Hostname.get },
|
|
@@ -1623,7 +2065,7 @@ module NewRelic
|
|
|
1623
2065
|
If `true`, when the agent is in an application using Ruby on Rails, it will start after `config/initializers` run.
|
|
1624
2066
|
|
|
1625
2067
|
<Callout variant="caution">
|
|
1626
|
-
|
|
2068
|
+
\tThis option may only be set by environment variable.
|
|
1627
2069
|
</Callout>
|
|
1628
2070
|
DESCRIPTION
|
|
1629
2071
|
},
|
|
@@ -1638,7 +2080,7 @@ module NewRelic
|
|
|
1638
2080
|
'This configuration option converts the Array to a RegEx list. If you\'d like ' \
|
|
1639
2081
|
'to allow all tasks by default, use `rake.tasks: [.+]`. No rake tasks will be ' \
|
|
1640
2082
|
'instrumented unless they\'re added to this list. For more information, ' \
|
|
1641
|
-
'visit the
|
|
2083
|
+
'visit the [New Relic Rake Instrumentation docs](/docs/apm/agents/ruby-agent/background-jobs/rake-instrumentation).'
|
|
1642
2084
|
},
|
|
1643
2085
|
:'rake.connect_timeout' => {
|
|
1644
2086
|
:default => 10,
|
|
@@ -1656,6 +2098,48 @@ module NewRelic
|
|
|
1656
2098
|
:transform => DefaultSource.method(:convert_to_regexp_list),
|
|
1657
2099
|
:description => 'Define transactions you want the agent to ignore, by specifying a list of patterns matching the URI you want to ignore. For more detail, see [the docs on ignoring specific transactions](/docs/agents/ruby-agent/api-guides/ignoring-specific-transactions/#config-ignoring).'
|
|
1658
2100
|
},
|
|
2101
|
+
# Serverless
|
|
2102
|
+
:'serverless_mode.enabled' => {
|
|
2103
|
+
:default => false,
|
|
2104
|
+
:public => true,
|
|
2105
|
+
:type => Boolean,
|
|
2106
|
+
:allowed_from_server => false,
|
|
2107
|
+
:transform => proc { |bool| NewRelic::Agent::ServerlessHandler.env_var_set? || bool },
|
|
2108
|
+
:description => 'If `true`, the agent will operate in a streamlined mode suitable for use with short-lived ' \
|
|
2109
|
+
'serverless functions. NOTE: Only AWS Lambda functions are supported currently and this ' \
|
|
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."
|
|
2111
|
+
},
|
|
2112
|
+
# Sidekiq
|
|
2113
|
+
:'sidekiq.args.include' => {
|
|
2114
|
+
default: NewRelic::EMPTY_ARRAY,
|
|
2115
|
+
public: true,
|
|
2116
|
+
type: Array,
|
|
2117
|
+
dynamic_name: true,
|
|
2118
|
+
allowed_from_server: false,
|
|
2119
|
+
description: <<~SIDEKIQ_ARGS_INCLUDE.chomp.tr("\n", ' ')
|
|
2120
|
+
An array of strings that will collectively serve as an allowlist for filtering which Sidekiq
|
|
2121
|
+
job arguments get reported to New Relic. To capture any Sidekiq arguments,
|
|
2122
|
+
'job.sidekiq.args.*' must be added to the separate `:'attributes.include'` configuration option. Each
|
|
2123
|
+
string in this array will be turned into a regular expression via `Regexp.new` to permit advanced
|
|
2124
|
+
matching. For job argument hashes, if either a key or value matches the pair will be included. All
|
|
2125
|
+
matching job argument array elements and job argument scalars will be included.
|
|
2126
|
+
SIDEKIQ_ARGS_INCLUDE
|
|
2127
|
+
},
|
|
2128
|
+
:'sidekiq.args.exclude' => {
|
|
2129
|
+
default: NewRelic::EMPTY_ARRAY,
|
|
2130
|
+
public: true,
|
|
2131
|
+
type: Array,
|
|
2132
|
+
dynamic_name: true,
|
|
2133
|
+
allowed_from_server: false,
|
|
2134
|
+
description: <<~SIDEKIQ_ARGS_EXCLUDE.chomp.tr("\n", ' ')
|
|
2135
|
+
An array of strings that will collectively serve as a denylist for filtering which Sidekiq
|
|
2136
|
+
job arguments get reported to New Relic. To capture any Sidekiq arguments,
|
|
2137
|
+
'job.sidekiq.args.*' must be added to the separate `:'attributes.include'` configuration option. Each string
|
|
2138
|
+
in this array will be turned into a regular expression via `Regexp.new` to permit advanced matching.
|
|
2139
|
+
For job argument hashes, if either a key or value matches the pair will be excluded. All matching job
|
|
2140
|
+
argument array elements and job argument scalars will be excluded.
|
|
2141
|
+
SIDEKIQ_ARGS_EXCLUDE
|
|
2142
|
+
},
|
|
1659
2143
|
# Slow SQL
|
|
1660
2144
|
:'slow_sql.enabled' => {
|
|
1661
2145
|
:default => value_of(:'transaction_tracer.enabled'),
|
|
@@ -1687,14 +2171,14 @@ module NewRelic
|
|
|
1687
2171
|
:public => true,
|
|
1688
2172
|
:type => String,
|
|
1689
2173
|
:allowed_from_server => true,
|
|
1690
|
-
:description => 'Defines an obfuscation level for slow SQL queries. Valid options are `obfuscated`, `raw`, or `none
|
|
2174
|
+
:description => 'Defines an obfuscation level for slow SQL queries. Valid options are `obfuscated`, `raw`, or `none`.'
|
|
1691
2175
|
},
|
|
1692
2176
|
:'slow_sql.use_longer_sql_id' => {
|
|
1693
2177
|
:default => false,
|
|
1694
2178
|
:public => true,
|
|
1695
2179
|
:type => Boolean,
|
|
1696
2180
|
:allowed_from_server => true,
|
|
1697
|
-
:description => 'Generate a longer sql_id for slow SQL traces. sql_id is used for aggregation of similar queries.'
|
|
2181
|
+
:description => 'Generate a longer `sql_id` for slow SQL traces. `sql_id` is used for aggregation of similar queries.'
|
|
1698
2182
|
},
|
|
1699
2183
|
# Span events
|
|
1700
2184
|
:'span_events.enabled' => {
|
|
@@ -1717,7 +2201,12 @@ module NewRelic
|
|
|
1717
2201
|
:public => true,
|
|
1718
2202
|
:type => Integer,
|
|
1719
2203
|
:allowed_from_server => true,
|
|
1720
|
-
|
|
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
|
|
1721
2210
|
},
|
|
1722
2211
|
# Strip exception messages
|
|
1723
2212
|
:'strip_exception_messages.enabled' => {
|
|
@@ -1726,7 +2215,7 @@ module NewRelic
|
|
|
1726
2215
|
:public => true,
|
|
1727
2216
|
:type => Boolean,
|
|
1728
2217
|
:allowed_from_server => false,
|
|
1729
|
-
:description => 'If true, the agent strips messages from all exceptions except those in the [
|
|
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).'
|
|
1730
2219
|
},
|
|
1731
2220
|
:'strip_exception_messages.allowed_classes' => {
|
|
1732
2221
|
:default => '',
|
|
@@ -1736,6 +2225,28 @@ module NewRelic
|
|
|
1736
2225
|
:transform => DefaultSource.method(:convert_to_constant_list),
|
|
1737
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"`.'
|
|
1738
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
|
+
},
|
|
1739
2250
|
# Thread profiler
|
|
1740
2251
|
:'thread_profiler.enabled' => {
|
|
1741
2252
|
:default => DefaultSource.thread_profiler_enabled,
|
|
@@ -1865,7 +2376,7 @@ module NewRelic
|
|
|
1865
2376
|
:description => 'Enable or disable debugging version of JavaScript agent loader for browser monitoring instrumentation.'
|
|
1866
2377
|
},
|
|
1867
2378
|
:'browser_monitoring.ssl_for_http' => {
|
|
1868
|
-
:default =>
|
|
2379
|
+
:default => false,
|
|
1869
2380
|
:allow_nil => true,
|
|
1870
2381
|
:public => false,
|
|
1871
2382
|
:type => Boolean,
|
|
@@ -1998,6 +2509,14 @@ module NewRelic
|
|
|
1998
2509
|
:allowed_from_server => true,
|
|
1999
2510
|
:description => 'Number of seconds betwixt connections to the New Relic span event collection services.'
|
|
2000
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
|
+
},
|
|
2001
2520
|
:force_reconnect => {
|
|
2002
2521
|
:default => false,
|
|
2003
2522
|
:public => false,
|
|
@@ -2025,17 +2544,21 @@ module NewRelic
|
|
|
2025
2544
|
:type => Boolean,
|
|
2026
2545
|
:allowed_from_server => false,
|
|
2027
2546
|
:external => :infinite_tracing,
|
|
2028
|
-
:description =>
|
|
2029
|
-
|
|
2547
|
+
:description => 'If `true` (the default), data sent to the trace observer is batched instead of ' \
|
|
2548
|
+
'sending each span individually.'
|
|
2030
2549
|
},
|
|
2031
2550
|
:'infinite_tracing.compression_level' => {
|
|
2032
2551
|
:default => :high,
|
|
2033
2552
|
:public => true,
|
|
2034
2553
|
:type => Symbol,
|
|
2035
2554
|
:allowed_from_server => false,
|
|
2555
|
+
:allowlist => %i[none low medium high],
|
|
2036
2556
|
:external => :infinite_tracing,
|
|
2037
|
-
:description =>
|
|
2038
|
-
|
|
2557
|
+
:description => <<~DESC
|
|
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.
|
|
2561
|
+
DESC
|
|
2039
2562
|
},
|
|
2040
2563
|
:js_agent_file => {
|
|
2041
2564
|
:default => '',
|
|
@@ -2049,7 +2572,8 @@ module NewRelic
|
|
|
2049
2572
|
:public => false,
|
|
2050
2573
|
:type => String,
|
|
2051
2574
|
:allowed_from_server => true,
|
|
2052
|
-
:description => 'JavaScript agent loader content.'
|
|
2575
|
+
:description => 'JavaScript agent loader content.',
|
|
2576
|
+
:exclude_from_reported_settings => true
|
|
2053
2577
|
},
|
|
2054
2578
|
:keep_alive_timeout => {
|
|
2055
2579
|
:default => 60,
|
|
@@ -2176,7 +2700,7 @@ module NewRelic
|
|
|
2176
2700
|
:public => false,
|
|
2177
2701
|
:type => Boolean,
|
|
2178
2702
|
:allowed_from_server => false,
|
|
2179
|
-
:description => 'Used in tests for the agent to start
|
|
2703
|
+
:description => 'Used in tests for the agent to start-up, but not connect to the collector. Formerly used `developer_mode` in test config for this purpose.'
|
|
2180
2704
|
},
|
|
2181
2705
|
:'thread_profiler.max_profile_overhead' => {
|
|
2182
2706
|
:default => 0.05,
|
|
@@ -2223,8 +2747,236 @@ module NewRelic
|
|
|
2223
2747
|
:type => Integer,
|
|
2224
2748
|
:allowed_from_server => false,
|
|
2225
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.'
|
|
2226
2977
|
}
|
|
2227
2978
|
}.freeze
|
|
2979
|
+
# rubocop:enable Metrics/CollectionLiteralLength
|
|
2228
2980
|
end
|
|
2229
2981
|
end
|
|
2230
2982
|
end
|